笑看风云

记录生活中的启迪与感动
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

tcp分段和ip分片的对比

Posted on 2012-03-07 14:20  清晨的风  阅读(2663)  评论(0编辑  收藏  举报

转自: http://hi.baidu.com/%B5%FB%C1%B5%BA%A30714/blog/item/600d6b1e289fdd77f624e49c.html

在很多时候我们都会提到tcp重组和ip碎片重组,那么这个过程到底什么样子的呢?

首先,我们先从分片说起:

很多人分不清楚tcp分段和ip分片的概念,我大体解释一下{

当我们再考虑网络上的问题时,首先应该想到的是网络的分层结构,我们所说的分段、分片都要放到一次会话中去考虑,

我们知道进程间的通信发生在应用层,但是实际的数据传输确是发生在下面的基层,举个例子如下图:

想要搞清楚分片脑子里就要有这么一个模型图,由图可以看到tcp处于传输层,ip处于网络层。另外我们还需要知道:

1.IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS(最大报文段).

2.IP分片由网络层完成,也在网络层进行重组;TCP分段是在传输层完成,并在传输层进行重组. //透明性

3.对于以太网,MSS为1460字节,而MUT往往会大于MSS.

现在我们以这次会话为例子:

客户和服务器进行通话,(1)连接建立之后进行tcp数据通信,我们来看一下传输层的处理:

tcp建立三次握手,在建立握手的过程中产生合适的mss(具体的处理机制参见TCP/IP详解P257),这个mss肯定是<=网络层

的最大路径MTU,然后tcp数据封装成ip数据包通过网络层发送,当服务器端传输层接收到tcp数据之后进行tcp重组。!!!ip数据包在

传输过程中是不会发生分片的!!!

我们得到这样一个结论:tcp数据在通信的时候是不会发生ip分片的

(2)连接之后进行udp或icmp通信,由于udp数据采用不可靠的通信,所以他会直接把整个udp数据封装成ip数据包传送,如果

MTU小于ip数据包包长,此时就会发生ip分片。关于ip分片可能会发生多次,因为网络中的MTU存在多个,然后到服务器端的ip层

进行重组。

我们得到这样一个结论:udp数据在通信的时候大部分会发生ip分片

}