TCP/IP协议(分片与分段)的介绍

TCP/IP协议:(分片与分段)

在传输层TCP分段

在网络层分片

如果只有分片,数据处理时,在传输层tcp分片(数据加个报文头部),然后在网络层ip分片,如果数据遗失,需要传输层重传整个报文,太占资源

所以直接在传输层一步到位,采用分段的方法,利用PMUT得出MSS,MSS(MSS=MTU-TCP报文头部-IP报文头部)分段,数据在网络层就不需要在分片了。

TCP/IP协议(分片与分段)的介绍_第1张图片

TCP/IP协议(分片与分段)的介绍_第2张图片

TCP/IP协议(分片与分段)的介绍_第3张图片

TCP/IP协议(分片与分段)的介绍_第4张图片

TCP/IP协议(分片与分段)的介绍_第5张图片

确认序列号是y+data大小

TCP/IP协议(分片与分段)的介绍_第6张图片

最大传输单元(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/IP协议(分片与分段)的介绍_第7张图片

TCP/IP协议(分片与分段)的介绍_第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为准。

MSS=MTU-IP报文首部(最小20)-TCP报文首部(最小20)

你可能感兴趣的:(网络,tcp/ip,服务器)