sock程序下载,运行环境 centos 7.5. X64
链接:https://pan.baidu.com/s/14zZ9rEefiRARsYkXqvHz7Q
提取码:oelv
sock源码下载:http://www.icir.org/christian/sock.html 在centos7 环境下编译可以使用。
用udp协议向服务端发送3000字节数据
[root@localhost src]# sock -u -i -n1 -w3000 192.168.1.197 echo
服务端加-s选项运行
[root@localhost src]# sock -u -s echo
tcpdump抓包命令行:
[root@localhost ~]# tcpdump -nn -vvv -w data_3000_udp.cap src 192.168.1.196 and ! src port 22 -i ens33
data_3000_udp.cap
链接:https://pan.baidu.com/s/1GHlISaD-oPtIeSCC3e3OVQ
提取码:bizs
用wireshard打开data_3000_udp.cap,分析。
第一个分片:
第二个分片
第3个分片
根据https://cloud.tencent.com/developer/article/1193149文章计算。
总共给服务器发送3000字节数据。IP分组包文部长度L=3000+8+20=3028,以太网MTU为1500
一个最大分片可封装的数据应该是8的倍数, 因此, 一个最大分片可封装的数据为:((1500-20)/8 )*8=1480。
- 需要的总片数为:n=(3028-20)/1480=2.032432432432432 ,需要分3片。
第一片的偏移字段
F1=(1480/8)*(1-1)=0,
第二片的偏移字段
F2=(1480/8)*(2-1)=185,
第三片的偏移字段
F3=(1480/8)*(3-1)=370。
第一片的总长度:1480 + 20 =1500
第二片的总长度:1480 + 20 =1500
第三片的总长度:3028 -(3-1)*1480 = 68。