TCP/IP协议:(分片与分段)
在传输层TCP分段
在网络层分片
如果只有分片,数据处理时,在传输层tcp分片(数据加个报文头部),然后在网络层ip分片,如果数据遗失,需要传输层重传整个报文,太占资源
所以直接在传输层一步到位,采用分段的方法,利用PMUT得出MSS,MSS(MSS=MTU-TCP报文头部-IP报文头部)分段,数据在网络层就不需要在分片了。
确认序列号是y+data大小
最大传输单元(Maximum Transmission Unit,MTU)
MUT:IP 协议是用于传输数据包的协议,作为网络层协议,它能提供数据的路由和寻址功能,让数据通过网络到达目的地。不同设备之间传输数据前,需要先确定一个 IP 数据包的大小上限,即最大传输单元(Maximum transmission unit,即 MTU),MTU 是 IP 数据包能够传输的数据上限。
数据链路层传输的帧大小是有限制的,以太网和IEEE 802.3对数据帧的长度都有一个限制,不能把一个太大的包直接塞给链路层,这个限制被称为最大传输单元(Maximum Transmission Unit,MTU)。
不同的数据链路层的MTU也是不同的,IP协议的数据报最大为65535个字节,如果开启了巨型贞(Jumbo Frame)能达到9000个字节。这远超出了MTU的值,所以当IP数据报大于MTU的时候就需要对数据进行分片,这也是IP协议的主要功能之一。
片偏移:IP首部中有个字段片偏移,在IP数据报长度大于MTU的时候对数据报进行分片,片偏移用来表示数据报在原来分组的相对位置,以8个字节为偏移单位,如下图:
TCP最大报文段长度(Max Segment Size,MSS)
TCP为了避免被发送方分片,它主动把数据分成小段再交给网络层。最大的分段大小称为MSS(Maximum Segment Size),它相当于把MTU刨去IP头和TCP头之后的大小,所以一个MSS恰好能装进一个MTU中。
当应用层协议使用 TCP/IP 协议传输数据时,TCP/IP 协议簇可能会将应用层发送的数据分成多个包依次发送,而数据的接收方收到的数据可能是分段的或者拼接的,所以它需要对接收的数据进行拆分或者重组。本文会分别从 IP 协议和 TCP 协议两个角度出发分析为什么应用层写入的数据包会被 TCP/IP 协议拆分发送:
- IP 协议会分片传输过大的数据包(Packet)避免物理设备的限制;
- TCP 协议会分段传输过大的数据段(Segment)保证传输的性能;
以太网对数据帧的限制一般都是 1500 字节,在一般情况下,IP 主机的路径 MTU 都是 1500,去掉 IP 首部的 20 字节,如果待传输的数据大于 1480 节,那么该 IP 协议就会将数据包分片传输。
PMTU叫做路径最大传输单元(Path MTU)
UDP协议没有MSS的概念,传输层的数据可能一股脑的交给网络层,所以数据可能会被分片而影响性能。
在三次握手的时候接收方和发送方都会声明自己MSS,因为接收方和发送方的MTU可能是不同的,最终会以较小的MSS为准。文章来源:https://www.toymoban.com/news/detail-763478.html
MSS=MTU-IP报文首部(最小20)-TCP报文首部(最小20)文章来源地址https://www.toymoban.com/news/detail-763478.html
到了这里,关于TCP/IP协议(分片与分段)的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!