tcp/ip分片重组的一些问题??
大家好,最近在看一些tcp/ip重组方面的东西,有一些问题一直是想不明白?1、tcp重组和ip重组的区别??我的理解是ip重组是重组ip碎片,将ip碎片组成一个包。tcp重组是将乱序包排序,不知道这样理解是不是对的?
2、ip碎片包是不是都包含tcp的头部? 重组的时候是要把这些头部都偏移掉吗?
3、我用socket程序发一个5000字节的数据,用抓包软件抓数据包看了下,在数据包的ip层头部没有看到设置分片标识和偏移量这两个值,搞不明白这是怎么回事?
请各位指点一下,多谢了!!! 本帖最后由 Tinnal 于 2014-08-20 08:45 编辑
回复 1# free_2006
大家好,最近在看一些tcp/ip重组方面的东西,有一些问题一直是想不明白?
1、tcp重组和ip重组的区别??我的理解是ip重组是重组ip碎片,将ip碎片组成一个包。tcp重组是将乱序包排序,不知道这样理解是不是对的?
对
2、ip碎片包是不是都包含tcp的头部? 重组的时候是要把这些头部都偏移掉吗?
不是,在IP层看来,TCP的负载以及TCP头都是IP层的负载,IP层不会去做解释,直接按大小切片。
3、我用socket程序发一个5000字节的数据,用抓包软件抓数据包看了下,在数据包的ip层头部没有看到设置分片标识和偏移量这两个值,搞不明白这是怎么回事?
因为在TCP层已经根据协商的MSS对数据进行切分,MSS在协商时已经考虑了MTU,因此传递给IP层的数据包不需要再进行切分。
如果想看到IP层切分的效果,最简单的方式是PING命令,同时通过参数指定数据包的大小大于MTU,就可以看到了。你也可以自己写个UDP的程序去发送大于MTU的数据包。 回复 2# Tinnal
第三个问题,tcp建立链接的时候协商mss,mss的大小考虑了MTU的大小,也就是说mss是小于MTU的,是不是对于tcp的应用来说,ip层是不会进行分片的,tcp层在组装的时候已经依据mss的大小对应用层数据进行了切割??
回复 3# free_2006
是的,TCP不会网IP层发送大于MTU的报文,这个之前chinauxix有讨论。
回复 4# Tinnal
非常感谢,跟这个相关的不少问题都想明白了 ,谢谢
页:
[1]