free_2006 发表于 2014-08-19 20:04

tcp/ip分片重组的一些问题??

大家好,最近在看一些tcp/ip重组方面的东西,有一些问题一直是想不明白?
1、tcp重组和ip重组的区别??我的理解是ip重组是重组ip碎片,将ip碎片组成一个包。tcp重组是将乱序包排序,不知道这样理解是不是对的?
2、ip碎片包是不是都包含tcp的头部? 重组的时候是要把这些头部都偏移掉吗?
3、我用socket程序发一个5000字节的数据,用抓包软件抓数据包看了下,在数据包的ip层头部没有看到设置分片标识和偏移量这两个值,搞不明白这是怎么回事?

请各位指点一下,多谢了!!!

Tinnal 发表于 2014-08-20 08:44

本帖最后由 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的数据包。   

free_2006 发表于 2014-08-20 09:52

回复 2# Tinnal
第三个问题,tcp建立链接的时候协商mss,mss的大小考虑了MTU的大小,也就是说mss是小于MTU的,是不是对于tcp的应用来说,ip层是不会进行分片的,tcp层在组装的时候已经依据mss的大小对应用层数据进行了切割??


   

Tinnal 发表于 2014-08-20 19:27

回复 3# free_2006
是的,TCP不会网IP层发送大于MTU的报文,这个之前chinauxix有讨论。


   

free_2006 发表于 2014-08-21 09:53

回复 4# Tinnal
非常感谢,跟这个相关的不少问题都想明白了 ,谢谢

   
页: [1]
查看完整版本: tcp/ip分片重组的一些问题??