Chinaunix

标题: TCP分片? [打印本页]

作者: C.J    时间: 2010-02-04 09:58
标题: TCP分片?
我们知道,IP层外发数据是会根据MTU进行分片。

TCP这层也需要分片吗?根据MSS的值?如果需要分片的话,为什么不集中在IP层做,TCP又自己做?
作者: platinum    时间: 2010-02-04 10:28
我们知道,IP层外发数据是会根据MTU进行分片。

TCP这层也需要分片吗?根据MSS的值?如果需要分片的话,为 ...
C.J 发表于 2010-02-04 09:58


是的,TCP 也会分片,是根据握手时的 MSS 指定的,分片处理过程由 TCP 协议栈内部完成,与 IP 栈和 netfilter 无关
作者: C.J    时间: 2010-02-04 10:34
在看内核 GSO, 本来一直以为IP分片就好了,没想到TCP更需要分片。谢谢了,下面是我的理解。不知道对不对。

Segmentation Offload
这是针对传输层的分片操作。还是说TCP,如果TCP发送一个超大的报文到IP层,IP必须将其分片才能发送出去;同样,对方必须收到所有分片,经过重组才能发往上层。这带来的后果是:分片和重组的开销、分片多,丢包的可能性增大×。如果在传输层就将其分片,其中分片的长度(MSS)是考虑到下层的分片参数(MTU),就不需要在IP层进行分片了,发送出去的报文也能够直接到达对方传输层。
这样看来,传输层分片是必要的,增加开销也是必然的。如果对该层的分片放在硬件上,势必会降低开销、提高性能,后来,确实出现了这样的网卡(如e1000),它们接收超大TCP报文,将其根据其MTU分片,再传输,该技术称之为TSO(TCP Segmentation Offload)。

×在TCP分片,也会有丢包可能,不过TCP有重传机制
作者: platinum    时间: 2010-02-04 11:46
你理解的没有问题
1、TCP 分片后无需 IP 分片
2、TCP 分片也有可能丢失,但 TCP 协议有重传机制
3、IP 和 TCP 甚至 UDP 都有硬件重组功能(GSO、TSO、UFO)
作者: bluewaterray    时间: 2010-02-07 21:44
TCP的segment是为了到IP层不再需要分片




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2