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

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

MTU(最大传输单元)

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分片),没有办法只重传数据报中的一个数据分片。

http://blog.csdn.net/ns_code/article/details/30109789

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

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

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

  2. 网络协议-TCP和UDP最完整的区别介绍

    网络协议-TCP和UDP最完整的区别介绍 前言:为了方便后期翻看,公众号在慢慢整理所发文章,关于Java网络编程内容的文章,可以在菜单栏-文章整理-进阶篇模块中查看. TCP与UDP基本区别   1. ...

  3. 网络协议 TCP 数字编号和重传机制

    网络协议 TCP 数字编号和重发 1. TCP 的数字编号 2. TCP 确认机制的特点 2.1 TCP一次可发送多个数据包 2.2 仅对连续接收的数据段进行确认 2.3 不连续的数据将先缓存 3. ...

  4. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

    传输层( Transport) 传输层( Transport) UDP 协议(数据格式.检验和) 端口(Port) TCP TCP - 数据偏移.保留 TCP - 检验和( CheckSum) TCP ...

  5. 网络协议:TCP/IP协议,你看懂了吗?

    这样的TCP/IP协议,你看懂了吗? 本文章转载自https://blog.csdn.net/yulyu/article/details/69062288 精通 TCP/IP,熟练使用 Socket ...

  6. 网络分层,网络协议TCP/IP模型,OSI模型

    TCP\IP模型是多种协议的综合,4层模型(也有说5层的). 其中最重要的就是分层结构和主要协议. 1.应用层(SMTP,HTTP,FTP) 2.传输层(TCP,UDP) 3.网络互联层(IPv4,I ...

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

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

  8. 网络协议-TCP与UDP

    目录 TCP协议 1.介绍 2.报文格式 3.TCP的三次握手 4.TCP数据传输 5.TCP的四次挥手 UDP协议 1.介绍 2.UDP报文结构 TCP与UDP的区别 TCP协议 1.介绍 传输控制 ...

  9. 网络协议-tcp/ip

    1.TCP/IP的问世 1974年IP(Internet protocol 互联网协议)和TCP(transmission control protocol 传输控制协议)问世,合称TCP/IP.起初 ...

最新文章

  1. [QA]Python字节码优化问题
  2. 集群 之 LVS + Keepalived
  3. SQL语句——将Excel文档导入数据表中
  4. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记二
  5. 盘点区块链的2018:技术与工具演进篇
  6. performance and scalability
  7. 技术系列课回顾 | 直播点播窄带高清之 JND 感知编码技术
  8. 前端学习(1695):前端系列javascript之问题解答
  9. Algorithm:字典序最小问题
  10. spark 通过打散热点key解决数据倾斜问题
  11. linux 编写 声卡驱动程序,在Linux中注册声卡驱动程序
  12. KVM-QEMU的vCPU调度算法与Xen Credit算法对比分析
  13. c语言常量有哪些分类,c语言常量的正确表示方法有哪些
  14. Python——数字排列组合
  15. 周四007欧联杯 佛罗伦萨 VS 门兴[11]
  16. 【转】Windows批处理学习(一)——MS-DOS命令
  17. mac os 配置hosts
  18. ISC技术分享:从RASP开启云上应用安全防护
  19. 网上银行系统5:系统登陆
  20. 【证明】矩阵特征值之和等于主对角线元素之和

热门文章

  1. 理解GO CONTEXT机制
  2. SpringAOP静态代理和动态代理
  3. 操作系统:优先级反转
  4. 后台开发技术--接入层设计
  5. Android——应用图标微技巧,系统中应用图标的适配
  6. cn域名注册十元_新手注册域名的一般流程是什么?个人申请域名流程要知道哪些?...
  7. 福禄克2500V数字绝缘电阻测试仪开箱与上手实测
  8. 单片机彩灯移动实验_单片机课程设计彩灯实验.doc
  9. Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop()、dropna()、isna()、isnull()、fillna())函数详解之详细攻略
  10. CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略