版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/mmc_maodun/article/details/30109789

    我们在学习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分片),没有办法仅仅重传数据报中的一个数据分片。

      

【网络协议】TCP分段与IP分片的更多相关文章

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

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

  2. 网络协议TCP、Http、webservice、socket区别

    网络协议TCP.Http.webservice.socket区别 http 和 webservice 都是基于TCP/IP协议的应用层协议 webservice是基于http的soap协议传输数据 w ...

  3. 网络协议TCP/IP、IPX/SPX、NETBEUI简介

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...

  4. 网络协议抓包分析——IP互联网协议

    前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...

  5. python网络编程--socket,网络协议,TCP

    一. 客户端/服务端架构(用到网络通信的地方) 我们使用qq.微信和别人聊天,通过浏览器来浏览页面.看京东的网站,通过优酷.快播(此处只是怀念一下)看片片啥的等等,通过无线打印机来打印一个word文档 ...

  6. 网络协议系列之三:IP

    前言 这篇博客主要对IP协议中一些基础知识点加以总结,并将书中一些晦涩难懂的部分去除了.IP地址协议是网络层中最重要的协议,IP地址协议能够对因特网上的全部设备进行唯一标识.也正由于有了IP协议,我们 ...

  7. 网络体系结构的概念 - 网络协议TCP - 红黑联盟

    https://i.cnblogs.com/EditPosts.aspx?opt=1 网络体系结构的概念  计算机网络就是一组通过一定形式连接起来的计算机系统,它需要四个要素的支持,即通信线路和通信设 ...

  8. 网络协议TCP

    TCP:传输控制协议 tcp的特点:面向连接(打电话模型),可靠传输 tcp通信的三个步骤: 1.通信双方建立连接 2.收发收据 3.关闭连接 tcp客户端实现流程 """ ...

  9. [网络协议]TCP粘包分析

    关于socket粘包,socket缓冲区设置的问题,记录一下: 一 .两个简单概念长连接与短连接: 长连接     Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送 ...

随机推荐

  1. MyEclipse复制js文件乱码

    MyEclipse复制js文件乱码 右击js文件:

  2. nginx 隐藏nginx版本号

    为什么要隐藏 Nginx 版本号:一般来说,软件的漏洞都与版本有关,隐藏版本号是为了防止恶意用户利用软件漏洞进行攻击 worker_processes 1; events { worker_conne ...

  3. 2019-03-05-day004-列表操作

    01 昨日内容回顾 bool int str 三者转换:pass int 二进制与十进制之间的转换: 二进制 -------> 十进制 0000 0100 1*2**2 str: msg = ' ...

  4. KB/MB/GB。。单位换算

    今天遇到一个需求,需要把数据单位进行换算,记录一下.写的不好请勿见怪. function bytesToSize( bytes ) {//单位转化         var k = 1024,      ...

  5. ORACLE提示表名无效

    在创建ORACLE数据库时,创建表 提示表名无效 请查看数据库表名是否出现了小写字母或者关键字,如USER

  6. JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明

    1----------------------观察者模式------------------------------ 观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的 ...

  7. 初识 数据库及Oracle数据库

    一.数据库基本概念二.数据库举例三.Oracle特点四.Oracle版本五.安装Oracle注意事项六.SQL简介七.Select语句 一.数据库基本概念 数据库(Database,DB)数据库管理系 ...

  8. 【转载】 996是没前途的!996.ICU来了,回忆我对996的态度是如何从支持变成了怀疑!

    原文地址: https://www.meiqiantu.com/20138.html --------------------------------------------------------- ...

  9. C#语法-虚方法详解 Virtual 虚函数

    虚方法 / Virtual 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  10. POJ3525:Most Distant Point from the Sea(二分+半平面交)

    pro:给定凸多边形,求凸多边形内的点到最近边界的最远距离. sol:显然是二分一个圆,使得圆和凸多边形不相交,但是这样很难实现. 由于是凸多边形,我们可以把二分圆转化为二分凸多边形的移动. 如果每一 ...