首页
网络
思科cisco
思科-常用查询
思科acl
思科console密码
Cisco交换机配置802.1x(dot1x)认证,基于Radius
Aruba无线控制器
交换机
ssh连接交换机报错
各类服务所用资源的记录
飞塔Fortinet
SNMP_mib
mib相关工具
锐捷交换机,查找需要的oid值
打印机oid
网络-终端
安卓13 无线ac证书 没有不验证
DHCP
win中用dhcpsrv搭建临时DHCP服务器
Python DHCP 服务器
异地办公VPN
NAT穿透
Wireguard
Wireguard参考
Wireguard VPN 让对等点相互通信
Zerotier
NTP
win下测试NTP服务器是否可用
域名
全球bgp数据
公共DNS
网络测试诊断工具
中国信通院“全球网测”APP(仅安卓版)
Telnet
MTU最大数据包大小
网络拓扑
子网划分
内网保留地址段
IP地址段分解与合并为CIDR(掩码)
H3C
H3C交换机 配置示例
华为与H3C交换机开关告警信息
交换机配置时间
H3C-ACL
H3C账号权限配置
设置console口密码
H3C查看端口的带宽利用率
交换机端口的mac地址绑定
H3C交换机端口镜像
让H3C交换机记录MAC地址变化信息到本地日志
使用IPSec打通异地职场间内网
pfSense开源防火墙和路由器
分公司通过总部专线出口IP上外网
锐捷
锐捷交换机 官方案例
锐捷802.1x(dot1x)
锐捷交换机_Syslog日志
锐捷acl调用、丢包排查(acl计数)
锐捷-用户权限配置
vlan下配置的acl失效原因
锐捷交换机-端口镜像
ssh客户端登录锐捷报错
锐捷交换机配置策略路由
H3C交换机配置有线网802.1x认证
802.1x认证用户查看
Wireshark过滤总结
IPv6地址
DHCP、静态ip 都有会冲突吗
免费的IP地理定位数据库
离线的IP归属地查询工具ip2regin
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
MTU最大数据包大小
MTU(Maximum Transmission Unit)是一种网络和通信领域的概念,指的是在特定网络技术中,可以传输的最大数据包大小。MTU包括数据包头部和数据负载(payload)的总和。以下是MTU的一些关键点: 1. **定义**:MTU定义了在不进行分片的情况下,通过网络可以传输的最大数据包大小。 2. **不同网络层**:MTU这个概念适用于OSI模型的多个层次,尤其是在链路层(如以太网)和网络层(如IP)。 3. **以太网标准**:以太网帧的标准MTU大小是1500字节,这意味着在以太网中,一个标准的以太网帧可以承载的最大数据载荷是1500字节。 4. **IP分片**:如果一个IP数据包的大小超过了网络路径上任何一点的MTU,那么在没有设置DF(Don't Fragment)标志的情况下,该数据包会被分片以适应MTU更小的网络段。 5. **PMTU发现**:路径MTU发现(PMTU Discovery)是一种机制,用于动态确定两个主机之间路径上的最大MTU,以避免IP分片。 6. **影响性能**:MTU的大小可以影响网络性能。如果设置得过大,可能会导致不必要的分片,增加网络拥塞和延迟;如果设置得过小,则可能限制吞吐量,因为数据包没有充分利用可用的带宽。 7. **配置**:MTU值可以在网络设备的配置中设置,包括路由器、交换机和主机的网络接口。 8. **不同网络技术**:不同的网络技术有不同的MTU值。例如,无线网络(如Wi-Fi)可能有不同的MTU值,而某些串行连接(如PPP或SLIP)也有自己的MTU限制。 9. **诊断工具**:可以使用网络诊断工具(如`ping`命令)来测试和发现网络路径上的MTU。 MTU是网络设计和故障排除中的一个重要参数,正确配置和理解MTU对于确保网络的高效和稳定运行至关重要。 要使用ping测试网络路径上可以传输的MTU最大值,你可以按照以下步骤进行: 1. **打开命令行工具**:在Windows系统中,可以通过“开始”菜单→“程序→附件→命令提示符”打开命令行界面。在Linux或macOS中,可以打开终端。 2. **使用ping命令**:在命令行中输入特定的ping命令来测试MTU值。这个命令会发送一个固定大小的数据包到指定的目标地址,并禁止路由器分片这个数据包。以下是不同操作系统中的具体命令格式: - **Windows**:使用命令 `ping -f -l <数据量> <目标地址>`,其中`-f`表示禁止分片,`-l`后面跟的是数据包的大小(字节)。 - **Linux**:使用命令 `ping -M do -s <数据量> <目标地址>`,其中`-M do`表示禁止分片,`-s`后面跟的是数据包的大小(字节)。 - **macOS**:使用命令 `ping -D -s <数据量> <目标地址>`,其中`-D`表示禁止分片,`-s`后面跟的是数据包的大小(字节)。 3. **逐步测试**:开始时,可以使用较小的数据包大小,并逐渐增加数据包大小,直到无法成功发送数据包为止。通常,以太网的MTU是1500字节,因此你可以从1472字节(1500-28,因为ICMP头部和IP头部总共占用28字节)开始测试,逐步增加或减少数据包大小。 4. **分析结果**:如果ping命令成功,说明该数据包大小可以在网络上传输。如果失败,并出现“Packet needs to be fragmented but DF set”的错误消息,说明数据包大小超过了某个跳数的MTU值。记录下这个数据包的大小,并减去大约28字节(IP头和TCP头的大小),得到的结果是该网络路径的最大MTU值。 5. **确定MTU值**:一旦检测到MTU值,你可以根据这个值来优化网络配置,以避免不必要的数据包分片,提高网络效率。 通过以上步骤,你可以有效地测试并确定网络路径上可以传输的MTU最大值。 ## 测试 C:\Users\local>ping -f -l 1473 jd.com 正在 Ping jd.com [106.39.171.134] 具有 1473 字节的数据: 需要拆分数据包但是设置 DF。 C:\Users\local>ping -f -l 1472 jd.com 正在 Ping jd.com [106.39.171.134] 具有 1472 字节的数据: 来自 106.39.171.134 的回复: 字节=1472 时间=2ms TTL=45 来自 106.39.171.134 的回复: 字节=1472 时间=2ms TTL=45 以下是测试过程的分析: 当您尝试发送1473字节的数据包时,收到了“需要拆分数据包但是设置 DF”的错误消息。这表明数据包因为设置了“禁止分片”(DF)标志而无法通过某个跳点,导致数据包被丢弃。 当您将数据包大小减少到1472字节时,ping命令成功发送并收到了来自106.39.171.134的回复。这表明1472字节的数据包可以成功通过网络路径。 因此,您可以得出结论,到jd.com的网络路径上可以传输的MTU最大值是:1472字节数据+IP头20字节+ICMP头8字节=1500字节。这个信息对于配置网络设备和优化数据传输非常有用,以避免数据包分片和提高网络性能。 ## MTU(最大传输单元)计算 MTU(最大传输单元)是网络中可以传输的最大数据包大小。以太网的标准MTU大小是1500字节。然而,当数据包在网络中传输时,它需要包含IP头和TCP头(或者如果是一个ICMP数据包,则包含ICMP头),这些头部信息占用了一部分数据包的大小。 对于ICMP数据包(即ping命令发送的数据包),IP头通常占用20字节,ICMP头占用8字节,总共28字节。因此,为了确保数据包在不进行分片的情况下通过网络,数据包的负载(payload)大小必须小于或等于1500字节减去28字节的头部信息,即1472字节。 所以,当您发送1473字节的数据包时,它超过了网络路径上某个跳点的MTU,导致数据包被丢弃,并出现了“需要拆分数据包但是设置 DF”的错误消息。而当您发送1472字节的数据包时,它没有超过MTU,因此能够成功传输。 ## 常见协议的头部大小: IP头:通常占用20字节,但在包含选项时,最大可达到60字节。 ICMP头:占用8字节。 TCP头:通常占用20字节,但当存在选项字段时,最长可达60字节。 UDP头:固定占用8字节(包括12字节的假头部和8字节的真头部),总共20字节 1. **TCP头**: - 最小头部大小:20字节(没有选项字段) - 最大头部大小:60字节(最多40字节选项字段) 2. **UDP头**: - 固定头部大小:8字节 3. **IPv6头**: - 固定头部大小:40字节 4. **ICMPv6头**: - 固定头部大小:8字节 5. **OSPF(开放最短路径优先)**: - 固定头部大小:24字节 6. **BGP(边界网关协议)**: - 固定头部大小:19字节 7. **GRE(通用路由封装)**: - 固定头部大小:12字节(无GRE头部选项) 8. **ESP(封装安全载荷)**: - 可变头部大小,取决于安全参数 9. **AH(认证头)**: - 可变头部大小,取决于认证参数 10. **MPLS(多协议标签交换)**: - 标签栈:每个标签4字节 这些协议头部的大小可能会因为选项字段、安全参数或其他配置而有所变化。在实际网络设计和故障排除中,了解这些协议头部的大小对于确定MTU和解决网络问题非常重要。 当您在Linux中设置两张网卡,并且它们的MTU值不同时,如果一个数据包需要从一个MTU较大的网卡(比如1500字节)转发到一个MTU较小的网卡(比如1420字节),以下是实际会发生的情况: 1. **数据包到达MTU较大的网卡**:网卡2接收到一个1480字节的数据包。 2. **路由决策**:Linux内核根据路由表决定数据包需要通过网卡1转发。 3. **MTU检查**:在转发过程中,Linux内核会检查目标网卡(网卡1)的MTU。由于网卡1的MTU是1420字节,而数据包大小是1480字节,这比网卡1的MTU要大。 4. **分片或丢弃**: - **如果数据包没有设置DF(Don't Fragment)标志**:Linux内核会将数据包分片,以确保每个分片都小于或等于网卡1的MTU。分片后的数据包将通过网卡1发送。 - **如果数据包设置了DF标志**:Linux内核不会分片数据包,而是丢弃该数据包,并向发送方发送ICMP“不能分片”的消息。 5. **PMUTU和DF**:在某些情况下,如果路径MTU发现(PMUTU)是启用的,系统可能会尝试发现路径上的实际最小MTU,并据此调整发送的数据包大小。如果PMUTU发现路径上的实际MTU小于数据包大小,并且数据包没有设置DF标志,那么数据包会被分片。如果数据包设置了DF标志,那么在发现路径MTU小于数据包大小时,数据包会被丢弃。 因此,正确的情况是,如果一个1480字节的数据包需要从MTU为1500的网卡2转发到MTU为1420的网卡1,且数据包没有设置DF标志,Linux内核会将数据包分片以适应网卡1的MTU。如果数据包设置了DF标志,它将被丢弃。
local
2024年11月29日 19:05
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码