1 / 8
文档名称:

IP分片和重组实验.docx

格式:docx   大小:85KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

IP分片和重组实验.docx

上传人:niupai11 2022/7/24 文件大小:85 KB

下载得到文件列表

IP分片和重组实验.docx

文档介绍

文档介绍:实验四 IP 包的分片和重组
实验目的
通过实验掌握 IP 数据包的分片和重组的方法。
实验内容
对一个较长的IP分组进行分片,然后再将所有的分片重新组装成一个IP分组。
实验要求
⑴从数据包文件如“”中读取//Flags and Fragme nt Offset
un sig ned char TTL; //Time To Live
un sig ned char Protocol; //Protocol
un sig ned short Checksum; //Checksum
un sig ned long SrcAddr; //Source Address
un sig ned long DstAddr; //Desti nati on Address
}IPHDR,*PIPHDR;
对各个域进行操作时要注意网络字节序与主机字节序的不同。对于8位的域,如TOS、 TTL等不存这个问题。但对于16位的域,如总长度TotalLen,从二进制文件中读出来的 TotalLen域从左到右为 0000 0000 0010 0100 (即 0x0024),即 38,但如果直接 unsigned short le ngth= n时这个值不等于38。这主要是由于多字节数字在内存中存储 方式不同造成的,即大尾端小尾端的问题。解决此问题可以用ntohs函数来解决,即unsigned short length=ntohs()时 length 就等于 38 了。在操作 16 位的总长度和 16 位的首部校验和的时候需要注意这一点,不然使用位运算的时候会出错。
同样对于32位源地址/目的地址也有这样的问题,但本次实验不涉及IP地址的操作。
(3),不能用普通的文本浏览器浏览,可以 使用如UltraEdit或WinHex等二进制浏览器打开,其中不带选项的分组头为20字节,如图 所示:
Offset
0 1 2 3' 4 5: 6- 7 9: 10 11 12' 13' 14 15

00000000
45 00' 1A 37 A4 00' 00' 7F 06 EC 30 D1: 56 92: S9
. 71.
00000016
D2-2D 7A 聘 FF D8 FF E0- 00- 10- 4A 46 49 46 00- 01
?zz ..JFIF..
即IP头为
45 00 65 1A
37 A4 00 00
7F 06 EC 30
D3 56 92 89
D2 2D 7A FB
各个域写成二进制形式对应到IP头的各个域即可。
在程序中打开IP数据报文件的时候需要以二进制的方式打开,可以使用fstream的文 件流来进行文件读取操作。
#i nclude <fstream>
ifstream SrcFileName(argv[2],ios::i n| ios::bi nary);
IPHDR IPHead;
Int IPHeadSize=20;
((char *)&IPHead,IPHeadSize)
则从文件名为argv[2]所表示的字