IP分片与重组

在IP首部中,标识、标志、片偏移这三部分就是与分片的字段。


MTU(最大传输单元)
MTU前面已经说过了,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节。一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

标识(Identification)

占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

标志(Flags )
标志(flags)占用3位(即16 - 18),这三位分别是:R,D,M三位,第一位是保留位,没有被使用,目前只有后两个比特有意义。

R:标志字段中的第一位是一个保留位,现在还没有使用,可能将来会用到这位

D:标志字段中间的一位是 DF (Don’t fragment),表示传输的数据不允许分片。一般DF = 1的话,表示数据一次性传输过去,不允许分片。

M:标志字段的最低位是 MF (More fragment)。代表数据是否分片,如果MF位值为1,表示后面还有数据,还没有传输完毕,相当于数据分片,分批次传输,如果MF = 0表示最后一个分片或者只有一个分片。
这三位同一时刻也是只能有一个位的值能设置为1

片偏移(Fragment offset)
占用13位:每次分片传输的数据之间的偏移距离,也就是某分片的数据在原数据中的相对位置,一般偏移以8字节为单位。比如:在网络层传输的ip数据报总长度最大不能超过65535字节,如果超过了,要么对ip数据报进行分片传输,否则将丢弃。

互联网协议使网络互相通信。设计要迎合不同物理性质的网络; 它是独立于链路层使用的基础传输技术。具有不同硬件的网络通常会发生变化,不仅在传输速度,而且在最大传输单元(MTU)。当一个网络要的数据报发送到具有较小MTU的一个网络,它可能片段的数据报。

当路由器收到一个数据包时,它会检查目的地址,并确定出接口使用,并且该接口的MTU。如果分组的大小是比MTU大,并且在该分组的头中的不分段(DF)位被设置为0,则路由器可对其进行分片。

分片机制有一定的缺陷:分片越多,分片丢失的机率就越大,对于一个数据报,一旦一个分片丢失,那么整个数据报就要重传;每一个数据报都要复制报头(只复制ip包头),这在一定程度上增加了带宽消耗。

重组

组装时,需要重新设置首部的某些字段

  1. 修改分片标志和片偏移量字段
  2. 首部其他字段复制原来数据报首部的相应字段。

在IP头里面有16bit的识别号唯一记录了一个IP包的ID,以确定这几个分片是否属于同一个包,具有同一个ID的IP分片将会从新组装。13bit的片偏移记录了一个IP分片相对于整个包的位置。3bit的标志位记录了该分片后面是否还有新的分片。这三个分片组成了IP分片的所有的信息。

TCP分片与重组

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,客户端声明MSS=8960,服务器端声明了MSS=1460。三次握手之后,客户端的MTU值比服务器端大,如果发送一个9000字节的包过去可能被分片或丢弃。因此客户端会把自己的MSS也降到1460字节。

TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

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

区别

IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS
IP分片由网络层完成,也在网络层进行重组;TCP分段是在传输层完成,并在传输层进行重组
对于以太网,MSS为1460字节,而MUT往往会大于MSS

故采用TCP协议进行数据传输,是不会造成IP分片的。若数据过大,只会在传输层进行数据分段,到了IP层就不用分片。而我们常提到的IP分片是由于UDP传输协议造成的,因为UDP传输协议并未限定传输数据报的大小

TCP的分片和IP分片的区别相关推荐

  1. TCP分片和IP分片

    1.IP分片 产生IP分片的原因:IP层的数据包在经过网卡时,数据包大小超过了网卡的MTU,然后IP数据包的DF标志为0,即该数据包允许分片,此时数据包会被分片. DF的标志在数据包的IP头的标志部分 ...

  2. 【网络协议】TCP分段与UDP/IP分片 (MTU最大传输单元,MSS最大分段大小)

    我们在学习TCP/IP协议时都知道,TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组. 我们先来看两个与TCP报文段分 ...

  3. IP分片和TCP分段解析--之IP分片

    本文目录 什么是IP分片 为什么会产生IP分片 为什么要避免IP分片 如何避免IP分片 什么是IP分片 IP协议栈将TCP/UDP传输层要求它发送的,但长度大于发送端口MTU的一个数据包,分割成多个I ...

  4. 分片的总结——TCP分段与UDP/IP分片

    分片分为两种: 一种是MTU,MTU是链路层的最大传输单元,是链路层中的网络对数据帧的一个限制. 一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于 ...

  5. 详解IP分片与TCP分段的区别

    首先注意:一般听到的TCP分片应该称为TCP分段.IP分片与TCP分片是两个不同概念,别把IP分片与TCP分片别弄混淆了, 接下来直接划重点,两者主要区别: 1.IP分片产生的原因是网络层的MTU:T ...

  6. ip分片 tcp分段(转)

    为什么会有IP分片?直接原因是上层协议企图发送一段数据,其长度超过了MTU(Maxitum Transmission Unit).什么情况,或者说什么协议会尝试发送这么长的数据?常见的有UDP和ICM ...

  7. 二三层报头及IP分片详解

    一.报文数据格式 二.二层数据格式 二层以太帧格式 DMAC(6字节) SMAC(6字节) type(2字节) DATA(46-1500字节) CRC(4字节) 字段 长度 含义 DMAC 6字节 目 ...

  8. 浅谈IP分片的大小及其原因

    一.IP分片的定义 IP分片是网络上传输IP报文的一种技术手段.IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组,这一过程称为分片. 二.进行IP分片的原因 数据链路层具 ...

  9. 学习笔记之IP分片抓包实验

    学习笔记之IP分片抓包实验 摘要 分片实验 identification字段 附:`MTU`和`MSS` 1,MTU(Maximum Transmission Unit,MTU),最大传输单元 2,M ...

最新文章

  1. 银行使用oracle做查询,Oracle EBS ERP银行信息查询视图
  2. vue状态管理存取数据_vue状态管理vuex从浅入深详细讲解
  3. UNIX再学习 -- exit 和 wait 系列函数
  4. linux服务器 32核,Intel换成AMD 32核锐龙 Linux之父体验很好
  5. 职业生涯发展技巧20则
  6. 程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)
  7. 数据合并设计_Excel数据管理中的那些“坑”,你踩了几个?
  8. 制作可以 SSH 登录的 Docker 镜像
  9. 绝对定位元素、浮动元素会生成一个块级框
  10. Ubuntu 16.10(x86) Install WordPress SRV 4.7.1-1-5
  11. SEO已死,真的吗,十年SEO从业者的思考
  12. 更新力度真的厉害,国产linux操作系统深度中文商店应用更新记录汇总(2021-07)
  13. 天勤2022数据结构(七)排序
  14. 高等数学解题常用公式笔记总结
  15. graphpad7.04多组比较p值_GraphPad Prism 统计指南 | 什么是P值?
  16. ShareSDK分享 和新浪登陆冲突解决方法
  17. 自定义 Spring Starter
  18. 尘世了了 花开花落昔年同
  19. 八段数码管数字显示实验c语言,硬件实验十 八段数码管显示
  20. 逻辑思维能力选择题30道

热门文章

  1. IDC:英国脱欧对本国IT支出带来3大潜在影响
  2. IT人员必须关注的五个IT新技术方向
  3. OAuth1.0实践之foursquare客户端同步到饭否
  4. 数据分析入门学习指南|零基础小白必看
  5. 杂谈——正则表达式:去除所有括号以及括号中的内容
  6. 统信UOS安装东方通中间件Tongweb--Tomcat国产化替代
  7. 第5章【思考与练习2】将数据集划分为训练集与测试集,查看决策树分类器的性能。 将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。
  8. python异常捕获和写到mysql_python捕获数据库异常
  9. 强化学习为 OpenAI 和 Microsoft 创建了有效的防御策略,拓宽了 ChatGPT 的护城河
  10. 年会宣布996后,那些保持沉默的人