任务三网络编程一、实验目的捕获本机网卡的IP包,对捕获的IP包进行解析
要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址
二、实验环境平台:Windows编程环境:VC6
0语言:C++三、实验原理3
1数据报格式以太帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了16位的以太帧类型,帧头后面是数据区
根据帧类型可以判断是哪种数据包,一般常用的有0X0080(IP数据包)、0X0806(ARP请求/应答)和0X8035(RARP请求/应答)三种类型
TCP/IP协议簇中位于网络层的协议,也是最为核心的协议
所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输
IP协议提供了无连接的、不可靠的数据传输服务
同时IP协议的一个重要功能是为网络上的包传递提供路由支持
TCP/IP协议使用IP数据报这个名字来指代一个互联网数据包
IP数据报由两部分组成,前面的头部和后面的数据区,头部含有描述该数据报的信息,包括源IP地址和目的IP地址等
在IP数据报的报头中的众多信息可根据协议类型字段区分出该数据包的类型,常用的有TCP包、UDP包、ICMP包等,各格式分别如下所示:IP数据报格式TCP数据报格式ICMP数据报格式数据报格式UDP.3
2捕获数据包方法目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap等方法
本次实验选用套接字方法
套接字是网络应用编程接口
应用程序可以使用它进行网络通信而不需要知道底层发生的细节
有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求
原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容
通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够