【网络】IP分片与路径MTU发现

目录

MTU值

IP分片与重组

路径MTU发现

路径MTU发现原理


个人主页:东洛的克莱斯韦克-CSDN博客

相关文章:【网络】从零认识IPv4-CSDN博客

MTU值

由于物理层的硬件限制,为了使网络性能最优,在数据链路层会有一个MTU值,表示数据链路的最大传输单元。

而不同数据链路的MUT的值可能不同。如下表格

数据链路协议 MTU(字节) 总长度(字节,包含FCS)
Hyperchannel 65535 65535
IP over HIPPI 65280 65320
16Mbps IBM Token Ring 17914 17958
IP over ATM 9180 -
IEEE 802.4 Token Bus 8166 8191
IEEE 802.5 Token Ring 4464 4508
FDDI 4352 4500
以太网 1500 1518
PPP (Default) 1500 -
IEEE 802.3 Ethernet 1492 1518
PPPoE 1492 -
X.25 576 -

IP协议的统一性抹平了数据链路层的差异,如果上层交付给网络层(IP层)的数据包过大,就需要把数据包分开发送,这称为IP分片。

IP分片与重组

由于数据链路层的协议可能不同,数据包不止再本主机会被分片,也可能会被其他路由器再分片。被分片的一般都是UDP的数据包,UDP协议是面向数据报的,UDP向下交付数据时可能会很大。而TCP协议是面向连接和字节流的,在三次握手是就协商好了MTU值,向下交付的数据一般不需要IP层进行分片。

路径MTU发现

随着时代的变迁,计算机网络的物理传输速度不断上升。这些高速的链路,对路由器和计算机网络,提出了更高的要求。另一方面,随着人们对网络安全的要求提高,路由器需要做的其他处理也越来越多,如网络过滤等。因此是不希望由路由器进行IP数据包的分片处理的。

其次,在分片处理中,一旦某个分片丢失,则会造成整个IP数据报作废。为,了避免此类问题,TCP的初期设计还曾使用过更小的分片进行传输。其结果是,网路的利用率明显下降。为了应对以上问题,产生了一种新的技术"路径MTU发现"(PathMTUDis-,covery)。

所谓路径MTU(PathMTU)是指从发送端主机到接收端主机之间不需,要分片时最大MTU的大小。即路径中存在的所有数据链路中最小的MTU。而路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送。进行路径MTU发现,就可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包。现在,很多操作系统都已经实现了路径MTU发现的功能。

路径MTU发现原理

首先在发送端主机发送IP数据报时将其首部的分片禁止标志位设置为1(IP层报头的标志位)。根据这个标志位,途中的路由器即使遇到需要分片才能处理的大包,也不会去分片,而是将包丢弃。

随后,通过一个ICMP的不可达消息将数据链路上MTU的值给发送主机。,下一次,从发送给同一个目标主机的IP数据报获得ICMP所通知的MTU值以后,将它设置为当前MTU。发送主机根据这个MTU对数据报进行分片处理。如此反复,直到数据报被发送到目标主机为止没有再收到任ICMP,就认为最后一次ICMP所通知的MTU即是一个合适的MTU值。

那么,当MTU的值比较多时,,最少可以缓存约10分钟。在这10分钟内使用刚刚求得的MTU,但过了这10分钟以后则重新根据链路上的MTU做一次路径MTU发现。

相关推荐
电子科技圈1 小时前
Durin:Aliro标准赋能,打造无缝移动入户体验
人工智能·mcu·物联网·网络协议·智能家居·智能硬件·iot
攻城狮在此1 小时前
华三中小型企业二层组网配置案例一(单ISP+单链路)
网络·华为
REDcker1 小时前
Nagle 算法与 TCP_NODELAY、TCP_CORK 详解
网络·tcp/ip·算法
熬夜的咕噜猫2 小时前
MySQL主从复制与读写分离
网络·数据库·mysql
Chris _data3 小时前
S7-1500 常用工业通信协议详解与对比
运维·服务器·网络
zmj3203244 小时前
ISO/SAE 21434:2021(道路车辆 - 网络安全工程) 汇总
网络·安全·web安全·21434
IP老炮不瞎唠4 小时前
Scrapy 高效采集:优化方案与指南
网络·爬虫·python·scrapy·安全
zmj3203244 小时前
UNR -155 Annex 5提示的威胁及其编号
网络·安全·网络安全
前端摸鱼匠5 小时前
【AI大模型春招面试题14】前馈网络(FFN)在Transformer中的作用?为何其维度通常大于注意力维度?
网络·人工智能·ai·面试·大模型·transformer
ayt0075 小时前
Netty 4.2核心类解析:SingleThreadIoEventLoop的设计哲学与实现
java·网络