写在前面:

分组能够发生在运输层和网络层。运输层中的TCP会分段,网络层中的IP会分片。IP层的分片很多其它的是为运输层的UDP服务的,因为TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会发生分片的现象。

我们在学习TCP/IP协议时都知道。TCP报文段假设非常长的话,会在发送时发生分段。在接受时进行重组,相同IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组。

我们先来看两个与TCP报文段分段和IP数据报分片密切相关的概念。

MYU(最大传输单元)

MTU前面已经说过了,是链路层中的网络对数据帧的一个限制,依旧以以太网为例。MTU为1500个字节。一个IP数据报在以太网中 传输,假设它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。

分片传输的IP数据报不一定按序到达。但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完毕的。

MSS(最大分段大小)

MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次可以传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。

TCP协议在建立连接的时候通常要协商两方的MSS值,每一方都实用于通告它期望接收的MSS选项(MSS选项仅仅出如今SYN报文段中,即TCP三次握手的前两次)。MSS的值一般为MTU值减去两个首部大小(须要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以假设用链路层以太网。MSS的值往往为1460。而Internet上标准的MTU(最小的MTU,链路层网络为x2.5时)为576,那么假设不设置,则MSS的默认值就为536个字节。非常多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完毕的。

到了这里有一个问题自然就明了了,TCP分段的原因是MSS,IP分片的原因是MTU,因为一直有MSS<=MTU。非常明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不须要在网络层进行IP分片了。因此TCP报文段非常少会发生IP分片的情况。

再来看UDP数据报,因为UDP数据报不会自己进行分段,因此当长度超过了MTU时,会在网络层进行IP分片。相同。ICMP(在网络层中)相同会出现IP分片情况。

总结:UDP不会分段,就由IP来分。

TCP会分段。当然就不用IP来分了!

另外。IP数据报分片后,仅仅有第一片带有UDP首部或ICMP首部,其余的分片仅仅有IP头部,到了端点后依据IP头部中的信息再网络层进行重组。而TCP报文段的每一个分段中都有TCP首部,到了端点后依据TCP首部的信息在传输层进行重组。

IP数据报分片后,仅仅有到达目的地后才进行重组,而不是向其它网络协议,在下一站就要进行重组。

最后一点,对IP分片的数据报来说。即使仅仅丢失一片数据也要又一次传整个数据报(既然有重传。说明运输层使用的是具有重传功能的协议,如TCP协议)。

这是由于IP层本身没有超时重传机制------由更高层(比方TCP)来负责超时和重传。当来自TCP报文段的某一段(在IP数据报的某一片中)丢失后,TCP在超时后会重发整个TCP报文段,该报文段相应于一份IP数据报(可能有多个IP分片)。没有办法仅仅重传数据报中的一个数据分片。

在IP层分片时,仅仅有第一个分片存在运输层协议头部,其余分片都不包括运输层协议的首部,这一点非常重要。然后TCP的分段,每个分段都包括TCP首部信息,。

再有就是IP分片时到达目的地之后再进行重组的,IP层的重组是发生在目的地的IP层,TCP的重组是发生在目的地的传输层中。

TCP/IP具体解释--TCP的分段和IP的分片的更多相关文章

  1. TCP/IP详细解释--TCP/IP可靠的原则 推拉窗 拥塞窗口

    TCP和UDP在同一水平---传输层.但TCP和UDP最不一样的地方.TCP它提供了一个可靠的数据传输服务,TCP是面向连接的,那.使用TCP两台主机通过第一通信"拨打电话"这个过 ...

  2. TCP/IP具体解释--UDP数据报中的IP分片

    1.UDP首部 2.UDP分片 在第二章,讲链路层是,提到过以太网.刨除数据帧帧头.最多传输的长度为1500.也就是说,假设一个ip数据报,长度大于1500,则须要分片. 分片方法: 在ip头中3位标 ...

  3. TCP/IP具体解释--TCP/UDP优化设置总结&amp; MTU的相关介绍

    首先要看TCP/IP协议,涉及到四层:链路层,网络层.传输层,应用层. 当中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应 ...

  4. TCP/IP具体解释--TCP/IP可靠的原理 滑动窗体 拥塞窗体

    TCP和UDP处在同一层---运输层,可是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个"拨打电话&q ...

  5. TCP/IP具体解释--TCP首部的TimeStamp时间戳选项

    TCP应该是以太网协议族中被应用最为广泛的协议之中的一个,这里就聊一聊TCP协议中的TimeStamp选项.这个选项是由RFC 1323引入的,该C建议提交于1992年.到今天已经足足有20个年头.只 ...

  6. 《TCP/IP具体解释》读书笔记(18章)-TCP连接的建立与中止

    TCP是一个面向连接的协议.不管哪一方向还有一方发送数据之前.都必须在两方之间建立一条连接.这样的两端间连接的建立与无连接协议UDP不同.UDP向还有一端发送数据报时,无需不论什么预告的握手. 1.建 ...

  7. 【转】TCP分段与IP分片

    原文: :https://www.jianshu.com/p/f9a5b07d99a2 -------------------------------------------------------- ...

  8. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  9. TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系 (转载)

    首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...

随机推荐

  1. 【模板】多项式乘法 NTT

    相对来说是封装好的,可以当模板来用. #include <bits/stdc++.h> #define maxn 5000000 #define G 3 #define ll long l ...

  2. [Debug]SpaceVim中neomake报错 Error while trying to load a compilation database

    回家装上archlinux,突发奇想装个SpaceVim写题 安装配置一路可以说是没有太大问题 最后在写题时出现如下问题 Error while trying to load a compilatio ...

  3. C语言Huffman压缩和解压

    符号表结构体: struct node { // 字符串形式存储的Huffman编码 char code[MAX_CODE_LENGTH]; // 这个字符在文件中出现的次数 long count; ...

  4. HDU 5607 graph(矩阵优化+概率DP)

    该题非常easy想到求概率的转移方程:用d[i][j]表示第i步,走到j点的概率. 可是该题的k高达1e9.所以依照套路.要用矩阵相乘来优化. 第一次写矩阵相乘. 大概的意思就是利用矩阵实现递推. 而 ...

  5. ios开发经常使用到的第三方库

    由于iOS SDK相对照较底层,所以开发人员就得受累多做一些体力活.只是幸运的是,有非常多第三方的类库能够用来简化非常多不必要的工作.经过作者团队的谨慎讨论.他们 评选出了10款可以极大提高iOS开发 ...

  6. uva 10474 Where is the Marble?(简单题)

    我非常奇怪为什么要把它归类到回溯上,明明就是简单排序,查找就OK了.wa了两次,我还非常不解的怀疑了为什么会 wa,原来是我居然把要找的数字也排序了,当时仅仅是想着能快一点查找.所以就给他排序了,没考 ...

  7. SpringMVC案例3----spring3.0项目拦截器、ajax、文件上传应用

    依然是项目结构图和所需jar包图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVuamFtaW5fd2h4/font/5a6L5L2T/fontsi ...

  8. Trustie站点代码托管使用指南

    "中国人的github"猛击Trustie官网,開始代码托管... 1.     新建项目 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...

  9. Linux路由表的抽象扩展应用于nf_conntrack

    思想 标准IP路由查找的过程为我们提供了一个极好的"匹配-动作"的例程. 即匹配到一个路由项.然后将数据包发给该路由项指示的下一跳.假设我们把上面对IP路由查找的过程向上抽象一个层 ...

  10. List of content management systems

    https://en.wikipedia.org/wiki/List_of_content_management_systems Microsoft ASP.NET Name Platform Sup ...