实验五 ip包解析与分片重组的编程实现

实验五 ip包解析与分片重组的编程实现

ID:19514838

大小:58.50 KB

页数:7页

时间:2018-10-03

实验五 ip包解析与分片重组的编程实现_第1页
实验五 ip包解析与分片重组的编程实现_第2页
实验五 ip包解析与分片重组的编程实现_第3页
实验五 ip包解析与分片重组的编程实现_第4页
实验五 ip包解析与分片重组的编程实现_第5页
资源描述:

《实验五 ip包解析与分片重组的编程实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《TCP/IP原理与应用》实验报告得分:班级姓名学号实验名称IP包解析与分片重组的编程实现实验室号实验目的1.掌握IP包的格式。2.掌握IP包的分片重组。3.练习使用winpcap编程实现IP包的解析与分片重组。实验要求1.认真阅读和掌握本实验的相关知识点。2.完成实验报告。实验内容Ø编程实现IP包各域的解析:n输出各域的内容n将协议域对应的协议编号转换为对应的ASCII表示的协议名,n说明IP是否经过分片Ø编程实现分片重组功能n将经过分片的IP包重组成原来的数据包,并以16进制输出内容(考虑到长度限制,可以只输出数据包交界部分的内容,以验证重组的正确性)n可假设

2、IP包按顺序到达,且不会有丢包.实验步骤或源代码#define DATA_LENGTH 500#include void Packet_Analyser(u_char* user,const struct pcap_pkthdr* header,const u_char *pkt_data);void Prit_Proto(int ProtocelValue);//声明一个协议输出函数,简化格式/* 4字节的IP地址 */typedef struct ip_address{u_char byte1;u_char byte2;u_char byte3

3、;u_char byte4;} ip_address;typedef struct ip_header{u_char  ver_ihl;        // 版本 (4 bits) + 首部长度 (4 bits)u_char  tos;            // 服务类型(Type of service)u_short tlen;           // 总长(Total length)u_short identification; // 标识(Identification)u_short flags_fo;       // 标志位(Flags) (3 bi

4、ts) + 段偏移量(Fragment offset) (13 bits)u_char  ttl;            // 存活时间(Time to live)u_char  proto;          // 协议(Protocol)u_short crc;            // 首部校验和(Header checksum)ip_address  saddr;      // 源地址(Source address)ip_address  daddr;      // 目的地址(Destination address)u_int   op_pad;  

5、       // 选项与填充(Option + Padding)} ip_header;static int COUNT=1;ip_header *Pheader_Cache=(ip_header*)malloc(sizeof(ip_header)*COUNT);void main(){pcap_if_t *alldevs;pcap_if_t *d;pcap_t    *adhandle;int index;int i=0;char errbuf[PCAP_ERRBUF_SIZE];if(pcap_findalldevs_ex(PCAP_SRC_IF_STRIN

6、G,NULL,&alldevs,errbuf)==-1){fprintf(stderr,"Error in pcap_findalldevs_ex:%s",errbuf);exit(1);}for(d=alldevs;d!=NULL;d=d->next){printf("%d:%s",i++,d->name);if(d->description)printf("%s",d->description);else printf("No Description available");}if(i==0){printf("No interfaces fou

7、nd!Make sure WinpCap is installed.");return;}printf("If You Want Choose a Device To Capture The Data Please Input The Number Before The Device");scanf("%d",&index);if(index>i

8、

9、index<0){printf("You Choosed An Error Num");exit(1);}for(d=alldevs,i=0;inext,i++); printf

10、("You

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。