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

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

2,MSS(Maxitum Segment Size)最大分段大小
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分片),没有办法只重传数据报中的一个数据分片。

原文链接:https://blog.csdn.net/ns_code/article/details/30109789

TCP分段与IP分片相关推荐

  1. 关于tcp分段和ip分片

    Maximum Segement Size (MSS) 最大分段长度 tcp会将应用层交付下来的数据分为tcp认为最适合发送的数据块(这里的最适合指的是用户可以自己配置mss长度),单位为字节,发送端 ...

  2. 【网络协议】TCP分段与IP分片

    参考:https://www.cnblogs.com/xfgnongmin/p/10612647.html MTU前面已经说过了,是链路层中的网络对数据帧的一个限制.依旧以以太网为例,MTU为1500 ...

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

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

  4. IP分片和TCP分片的区别

    前段时间要做一个关于网络嗅探的程序,里面要重组IP分片,TCP分片. 但做的时候忽视了一个很重要的东西:IP分片与TCP分片弄混淆了. 首先声明:TCP分片应该称为TCP分段. ----------- ...

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

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

  6. IP分片和TCP分段的区别

    1.MTU(Maximum Transmission Unit,MTU),最大传输单元 (1)以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节.链路层的这个特性称作 ...

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

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

  8. ip分片 tcp分段(转)

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

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

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

最新文章

  1. 机器学习--信息 信息熵 信息增益
  2. 组建一台计算机3_硬件3 多位运算器
  3. (xy)+((x^y)1)
  4. Android加速度传感器实现“摇一摇”,带手机振动
  5. ubuntu rpm安装_为什么说Ubuntu是一个值得尊敬的Linux发行版
  6. 使用wordpress_为什么我使用WordPress进行教育
  7. python类介绍_Python基础介绍 | Class类
  8. java学习4-Maven的发布war并部署到tomcat
  9. (一)mybatis之JDBC介绍
  10. error: not found: value sc
  11. Java下载base64图片
  12. 企业信息化战略与实施(2)信息系统生命周期与战略规划方法
  13. 游戏十五大基本游戏类型介绍
  14. Oracle WITH AS 用法
  15. chapter2:正则表达式、文本标准化和编辑距离
  16. dvi和hdmi 知乎_HDMI和DVI有什么区别? 哪个更好?
  17. 3D展示框架SDK全面开放
  18. vivo APEX 2019 概念机亮相:全屏幕指纹 + 无开孔,支持 5G
  19. CORBA 架构体系指南(通用对象请求代理体系架构)
  20. Tomcat 环境变量配置

热门文章

  1. python2版本和python3版本-python2和python3哪个版本新
  2. python读取大文件-强悍的Python读取大文件的解决方案
  3. python语言有什么用-python语言为什么好呢?它有什么特点?
  4. python3.6.5安装-Ubuntu16.04安装python3.6.5详细步骤
  5. tensorflow2.0支持的python版本-TensorFlow 版本兼容性
  6. mysql日常有哪些用_mysql日常笔记(持续更新)
  7. mybatis中的插件
  8. Ollivander's Inventory(连接查询、单表双实例、子查询)
  9. rest-framework 分页器
  10. for循环练习题1——水仙花数