根据 v 友们的建议,用起来了 wireshark,确实很不错,结合看书。
但现在有个问题,好像我总是抓不到 ip 数据包被分片的情况?
如上图,好像只能找到 dont fragment 的 IP 数据包。
还是我姿势不对啊。。
1
qakito 2021-03-01 11:41:17 +08:00
TCP 为了传输效率是不允许分片的。如何做到不分片请查阅 MSS 。
最简单就是 ping 大包了: ping A.B.C.D -l 10000(windows) ping A.B.C.D -s 10000(linux) |
2
amiwrong123 OP @qakito #1
嗯嗯,因为 MSS 就是根据 MTU 来的嘛,所以 ip 数据包到了链路层 不会被分片。 不过我好像在哪里看到说:没有一个简单的方法能找到 MTU 。也就是说,TCP 建立连接时确定下来的 MTU 是错的,是不是就是因为这种情况,所以 IP 数据包 才有可能被分片。 晚上回家了,试试你的方法。主要想看下 IP 包被分片后,这些数据在 wireshark 里长什么样子。 |
3
amiwrong123 OP |
4
lcdtyph 2021-03-01 12:13:12 +08:00 via iPhone
你直接发个超长 ping request 就能看到分片的 ip 层报文了
|
5
qakito 2021-03-01 12:36:27 +08:00
这就牵涉到 path mtu
但 TCP 是置了 DF 位,除非外层有其他 VPN(IPSec/MPLS/GRE 之类的),否则不可能抓到分片报文 |