TCP MSS PMTU PING

本文介绍了如何使用Windows和Linux系统的PING命令来探测MTU大小,通过设置 `-f` 和 `-l` 参数(Windows)或 `-M do` 和 `-s` 参数(Linux),结合TCP MSS值,来计算并理解IP包的最大传输单元(MTU)及其对数据传输的影响。

WINDOWS : 


ping www.baidu.com -f -l  1472 

ping www.facebook.com -f -l 1448 


-l 是指数据的大小 


1472 + 8 + 20 = 1500 

------------------------------

IP |  ICMP  |  DATA  | 

------------------------------

20     8         1472   

---------------------------------------

IP | GRE | IP | ICMP

### TCP Flags 匹配规则的含义 在 `iptables` 中,`--tcp-flags` 参数用于匹配 TCP 数据包中的标志位(Flags)。TCP 标志位包括 FIN、SYN、RST、PSH、ACK 和 URG,每个标志位代表不同的控制功能。在规则中,`tcp flags:0x06/0x02` 表示对 TCP 标志位的特定组合进行匹配。 - `0x06` 是掩码,表示需要检查的标志位。在十六进制中,`0x02` 对应 SYN,`0x04` 对应 RST,因此 `0x06` 代表 SYN 和 RST 这两个标志位。 - `0x02` 表示期望的匹配结果,即 SYN 位为 1,RST 位为 0。 这意味着该规则仅匹配 SYN 标志位为 1、RST 标志位为 0 的 TCP 数据包,通常用于识别 TCP 连接请求(即 SYN 包)。在 TCP 三次握手过程中,客户端发送的初始 SYN 包具有这种特征,因此该规则可用于识别连接建立阶段的数据包[^1]。 等价的规则写法为: ```bash --tcp-flags SYN,RST SYN ``` 这种方式常用于限制或处理特定类型的 TCP 连接流量,例如防止非法连接或进行 MSS 调整。 --- ### TCPMSS 模块的作用与 `clamp-mss-to-pmtu` 的机制 在 TCP 建立连接时,双方会通过 MSS(Maximum Segment Size)协商单个数据段的最大有效载荷大小。MSS 通常为 MTU 减去 IP 和 TCP 头部的 40 字节。例如,在标准以太网中,MTU 为 1500 字节,MSS 通常为 1460 字节。然而,在 PPPoE 环境中,由于额外的封装导致 MTU 减小到 1492 字节,MSS 需要调整为 1452 字节,否则可能引发分片问题或连接失败[^1]。 `iptables` 提供了 `TCPMSS` 模块用于调整 TCP 数据包的 MSS 值。`--set-mss 1460` 可以手动设置 MSS 值,而 `--clamp-mss-to-pmtu` 则是一种更智能的设置方式。该参数会根据路径上的 PMTU(Path MTU)自动调整 MSS 值,确保数据包大小不会超过链路的 MTU 限制,从而避免分片或丢包问题。 在实际应用中,以下规则用于自动调整 MSS: ```bash iptables -t mangle -A POSTROUTING -o pppoe-wan -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ``` 该规则匹配所有从 `pppoe-wan` 接口发出的 TCP SYN 包,并自动调整其 MSS 值以适应路径 MTU,确保连接的稳定性和传输效率[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值