下载此文档

实验四IP包的分片和重组.doc


文档分类:通信/电子 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
实验四 IP 包的分片和重组
实验目的
通过实验掌握 IP 数据包的分片和重组的方法。
实验内容
对一个较长的 IP 分组进行分片,然后再将所有的分片重新组装成一个 IP 分组。
实验要
2799
3999字节
偏移 =2800/8=350,大小为 1200字节,
该IP数据报分片长度为
1220字节
2800 3999
为减少分片的数量,每个分片的长度应尽可能大。为用片偏移表示片段的起始位置,
除最后一个分片外,其它分片的长度 (数据部分,不包括 IP 头)应能被 8 整除。如 MTU=505
的时候,除去 20 字节 IP 头,可以传输的最大数据段长度为 485 字节,但可被 8 整除及不不超过 485 的最大整数为 480 ,需要按 480 来进行分片。
TTL :在分片的时候需要对原数据报的 TTL 进行减 1 操作,组装的时候不需要此操作。
首部检验和: 对于每一个分片,设置好各自的总长度、标识、标志、片偏移、 TTL
后,需要重新对该 IP 报头重新计算校验和。


(2) IP

数据报头的

C 语言定义可以用类似如下的数据结构:
typedef struct tagIPHDR
{
unsigned char VIHL;

//Version and IHL
unsigned char TOS;

//Type Of Service
short TotalLen;

//Total Length
short ID;

//IDentification
short FlagOff; //Flags and Fragment Offset
unsigned char TTL; //Time To Live
unsigned char Protocol; //Protocol
unsigned short Checksum; //Checksum
unsigned long SrcAddr; //Source Address
unsigned long DstAddr; //Destination Address
}IPHDR,*PIPHDR;
对各个域进行操作时要注意网络字节序与主机字节序的不同。 对于 8 位的域, 如 TOS 、
TTL 等不存这个问题。但对于 16 位的域,如总长度 TotalLen ,从二进制文件中读出来的
TotalLen 域从左到右为 0000 0000 0010 0100 (即 0x0024 ),即 38 ,但如果直接 unsigned
short length= 时这个值不等于 38 。这主要是由于多字节数字在内存中存储
方式不同造成的, 即大尾端小尾端的问题。 解决此问题可以用 ntohs 函数来解决, 即 unsigned
short length=ntohs() ,时 length 就等于 38 了。在操作 16 位的总长度和 16
位的首部校验和的时候需要注意这一点,不然使用位运算的时候会出错。
同样对于 32 位源地址 /目的地址也有这样的问题,但本次实验不涉及

IP

地址的操作。
给定的数据文件如 是二进制文件, 不能用普通的文本浏览器浏览, 可以
使用如

UltraEdit 或 WinHex

等二进制浏览器打开, 其中不带选项的分组头为 20 字节,如图
所示:
即IP头为
45 00 65 1A
37 A4 00 00
7F 06 EC 30
D3 56 92 89
D2 2D 7A FB
各个域写成二进制形式对应到 IP 头的各个域即可。
在程序中打开 IP 数据报文件的时候需要以二进制的方式打开,可以使用
件流来进行文件读取操作。

fstream

的文
#include <fstream>
ifstream SrcFileName(argv[2],ios::in|ios::binary);
IPHDR IPHead;
Int IPHeadSize=20;
((char *)&IP

实验四IP包的分片和重组 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wcs1911
  • 文件大小536 KB
  • 时间2022-01-26