任务三计算机网络实验IP数据报捕获与分析
实验三网络数据包的捕获与分析

实验三 网络数据包的捕获与分析一、实验目的和要求通过本次实验,了解sniffer 的基本作用,并能通过sniffer 对指定的网络行为所产生的数据包进行抓取,并分析所抓取的数据包。
二、实验内容A :1、首先打开sniffer 软件,对所要监听的网卡进行选择2、选择网卡按确定后,进入sniffer 工作主界面,对主界面上的操作按钮加以熟悉。
B :设置捕获条件进行抓包基本的捕获条件有两种:1、链路层捕获,按源MAC 和目的MAC 地址进行捕获,输入方式为十六进制连续输入,如:00E0FC123456。
2、IP 层捕获,按源IP 和目的IP 进行捕获。
输入方式为点间隔方式,如:10.107.1.1。
如果选择IP 层捕获条件则ARP 等报文将被过滤掉。
链任意捕获条件编辑协议捕获编辑缓冲区编辑基本捕获条件路层捕获IP 层捕获数据流方向链路层捕获地址条件高级捕获条件在“Advance ”页面下,你可以编辑你的协议捕获条件,如图:选择要捕获的协议捕获帧长度条件错误帧是否捕获保存过滤规则条件高级捕获条件编辑图在协议选择树中你可以选择你需要捕获的协议条件,如果什么都不选,则表示忽略该条件,捕获所有协议。
在捕获帧长度条件下,你可以捕获,等于、小于、大于某个值的报文。
在错误帧是否捕获栏,你可以选择当网络上有如下错误时是否捕获。
在保存过滤规则条件按钮“Profiles”,你可以将你当前设置的过滤规则,进行保存,在捕获主面板中,你可以选择你保存的捕获条件。
C:捕获报文的察看:Sniffer软件提供了强大的分析能力和解码功能。
如下图所示,对于捕获的报文提供了一个Expert专家分析系统进行分析,还有解码选项及图形和表格的统计信息。
专家分析系统专家分析系统捕获报文的图形分析捕获报文的其他统计信息专家分析专家分分析系统提供了一个只能的分析平台,对网络上的流量进行了一些分析对于分析出的诊断结果可以查看在线帮助获得。
在下图中显示出在网络中WINS查询失败的次数及TCP重传的次数统计等内容,可以方便了解网络中高层协议出现故障的可能点。
IP 数据报捕获与分析实验报告

实验报告专业班级成绩评定______ 学号姓名教师签名______ 实验题目IP 数据报捕获与分析实验时间一、实验目的:1.掌握IP数据报格式。
2.理解IP协议的工作原理及工作过程。
3.掌握使用wireshark捕获IP等数据报并分析。
二、实验环境:以太网。
三、实验内容:1.熟悉WinPcap的体系构架和提供的函数。
2.学习IP数据报校验和计算方法。
3.掌握使用wireshark捕获IP等数据报。
4.对捕获的IP数据报进行分析。
四、实验步骤:1.在PING之前先运行wireshark熟悉页面并进行一些设置a.单击Capture Filter过滤器:可以设置捕捉一些特殊规则的数据报。
b.在选中Capture packets in promiscuous mode:可以设置为混合全处理模式。
c.可以点击Start开始捕捉。
过一段时间后,点击Stop停止,观察捕捉到的数据报,并进行分析。
2.使用wireshark捕获和分析IP数据包。
a.打开wireshar并开始捕获数据包。
b.然后在系统的“开始”—“运行”—输入“CMD”命令,进入DOS命令窗口,并输入“ping”命令测试网络的情况.c.如“ping 192.168.0.1”。
Ping 命令的使用d.再回到wireshar点击停止后查看捕获到的数据,双击打开“ping”后的数据包,分析数据包的内容。
分片的数据包(以下图片全部通过wireshark捕获数据包,然后用QQ中的截图功能截取)IP协议节点IP协议节点上面节点说明如下:树节点名称说明Version IP版本,IPv4Header Length 20个字节的IP头,没有其他选项Total Length 该IP包携带的64字节Flags 不分片标志被设置没有被设置,该IP在通过各种类型的网络时可以分片传输;如果该网络的最大数据包小于该IP包的长度,该数据包将被分片传输;Time to live TTL值为64,最多数据传输64个节点就被抛弃。
任务三计算机网络实验IP数据报捕获与分析

任务三计算机网络实验IP数据报捕获与分析一、实验目的本实验的目的是通过使用网络抓包工具捕获IP数据报,了解IP协议的工作过程,分析数据报的结构和内容。
二、实验设备和工具1.计算机2.网络抓包工具:Wireshark三、实验原理IP(Internet Protocol)是网络层的核心协议,在互联网中承担着数据包的传输任务。
IP协议负责将数据包从源主机传输到目标主机,保证数据在不同主机之间的正确传输。
IP数据报是IP协议传输的基本单位,由IP头和数据部分组成。
IP头部包含以下重要字段:1.版本(4位):表示IP协议的版本号,IPv4为4,IPv6为62.首部长度(4位):表示IP头部的长度,以32位的字节为单位。
3.区分服务(8位):用于标识优先级和服务质量等信息。
4.总长度(16位):指明整个IP数据报的长度。
5.标识(16位):用于标识同一个数据报的分片。
6.标志位(3位):标记是否进行数据报的分片。
7.片偏移(13位):表示数据报组装时的偏移量。
8.生存时间(8位):表示数据报在网络中的存活时间。
9.协议(8位):指明IP数据报中携带的数据部分所使用的协议,如TCP、UDP等。
10.头部校验和(16位):用于对IP头部的校验。
11.源IP地址(32位):指明数据报的发送者的IP地址。
12.目的IP地址(32位):指明数据报的目标IP地址。
四、实验步骤1.安装Wireshark软件。
2.打开Wireshark软件,选择需要进行抓包的网络接口。
3.点击“开始”按钮,开始抓包。
4.进行相关网络操作,产生数据包。
5.停止抓包。
6.选中其中一个数据包,进行分析。
五、数据包分析Wireshark软件可以对捕获到的数据包进行详细的分析,提供了丰富的信息和统计数据。
以下是对数据包的一些常规分析内容:1.源IP地址和目的IP地址:根据协议规定,每个IP数据报必须携带源IP地址和目的IP地址,通过分析这两个字段可以确定数据包的发送方和接收方。
计算机网络课程设计IP数据包的捕获与分析.docx

计算机科学与技术学院课程设计成绩单C+:72~74分C:68~71分C-:64~67分D:60~63分F:<60分武汉科技大学计算机科学与技术学院制表IP数据包捕获与解析程序设计一、需求分析在本次课程设计要求捕获本机网卡的IP包,对捕获的IP包进行解析。
要求输出版本号、总长度、标志位、片偏移、协议、源地址和目的地址七个字段。
要求遵循RFC791的相关IP协议规定,捕获通过本地网卡的IP数据包。
实现对指定数量的IP数据包的捕获过程。
,需要定义好IP数据报等相关的数据结构以对IP数据包的各个字段进行保存,以及该IP数据包的上一层使用的协议名称。
在对IP数据包进行解析时要将捕获的数据流存储在一个缓冲区中。
二、概要设计1.总体流程算法:创建原始套接字并绑定本地网卡,将套接字设置为混杂模式监听网卡并根据输入的数量捕获流经本地的IP包。
IP数据包的格式:NoYes开始创建并初始化原始套接字填充sockaddr_in并绑定socket 设置网卡混杂模式监听网卡捕获和解析IP数据报输出解析字段结束是否达到需要次数IP数据包由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有IP数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的,可选字段之后是数据部分。
其中,首部固定部分中本次课程设计需要解析的各字段的长度及意义如下:(1)版本占4位,指IP协议的版本。
通信双方使用的IP协议版本必须一致。
目前广泛使用的IP协议版本号为4(即IPv4)。
关于IPv6,目前还处于草案阶段。
(2)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。
当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
arp,ip,icmp协议数据包捕获分析实验报告数据

arp,ip,icmp协议数据包捕获分析实验报告数据篇一:网络协议分析实验报告实验报告课程名称计算机网络实验名称网络协议分析系别专业班级指导教师学号姓名实验成绩一、实验目的掌握常用的抓包软件,了解ARP、ICMP、IP、TCP、UDP 协议的结构。
二、实验环境1.虚拟机(VMWare或Microsoft Virtual PC)、Windows XX Server。
客户机A客户机B2.实验室局域网,WindowsXP三、实验学时2学时,必做实验。
四、实验内容注意:若是实验环境1,则配置客户机A的IP地址:/24,X为学生座号;另一台客户机B的IP地址:(X+100)。
在客户机A上安装EtherPeek(或者sniffer pro)协议分析软件。
若是实验环境2则根据当前主机A的地址,找一台当前在线主机B完成。
1、从客户机A ping客户机B ,利用EtherPeek(或者sniffer pro)协议分析软件抓包,分析ARP 协议;2、从客户机A ping客户机B,利用EtherPeek(或者sniffer pro)协议分析软件抓包,分析icmp协议和ip协议;3、客户机A上访问,利用E(转载于: 小龙文档网:arp,ip,icmp协议数据包捕获分析实验报告数据)therPeek(或者sniffer pro)协议分析软件抓包,分析TCP和UDP 协议;五、实验步骤和截图(并填表)1、分析arp协议,填写下表12、分析icmp协议和ip协议,分别填写下表表一:ICMP报文分析233、分析TCP和UDP 协议,分别填写下表4表二: UDP 协议 5篇二:网络层协议数据的捕获实验报告篇三:实验报告4-网络层协议数据的捕获实验报告。
任务三计算机网络实验IP数据报捕获与分析

任务三网络编程一、实验目的捕获本机网卡的IP包,对捕获的IP包进行解析.要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。
二、实验环境平台:Windows编程环境:VC 6。
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下的多种协议,而且能够对网络底层的传输机制进行控制.网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机,目标主机,服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。
计算机网络实验报告实验3

计算机网络实验报告实验3一、实验目的本次计算机网络实验 3 的主要目的是深入理解和掌握计算机网络中的相关技术和概念,通过实际操作和观察,增强对网络通信原理、协议分析以及网络配置的实际应用能力。
二、实验环境本次实验在计算机网络实验室进行,使用的设备包括计算机、网络交换机、路由器等。
操作系统为 Windows 10,实验中使用的软件工具包括 Wireshark 网络协议分析工具、Cisco Packet Tracer 网络模拟软件等。
三、实验内容与步骤(一)网络拓扑结构的搭建使用 Cisco Packet Tracer 软件,构建一个包含多个子网的复杂网络拓扑结构。
在这个拓扑结构中,包括了不同类型的网络设备,如交换机、路由器等,并配置了相应的 IP 地址和子网掩码。
(二)网络协议分析启动 Wireshark 工具,捕获网络中的数据包。
通过对捕获到的数据包进行分析,了解常见的网络协议,如 TCP、IP、UDP 等的格式和工作原理。
观察数据包中的源地址、目的地址、协议类型、端口号等关键信息,并分析它们在网络通信中的作用。
(三)网络配置与管理在实际的网络环境中,对计算机的网络参数进行配置,包括 IP 地址、子网掩码、网关、DNS 服务器等。
通过命令行工具(如 Windows 中的 ipconfig 命令)查看和验证配置的正确性。
(四)网络故障排查与解决设置一些网络故障,如 IP 地址冲突、网络连接中断等,然后通过相关的工具和技术手段进行故障排查和解决。
学习使用 ping 命令、tracert 命令等网络诊断工具,分析故障产生的原因,并采取相应的解决措施。
四、实验结果与分析(一)网络拓扑结构搭建结果成功构建了包含多个子网的网络拓扑结构,各个设备之间能够正常通信。
通过查看设备的状态指示灯和配置信息,验证了网络连接的正确性。
(二)网络协议分析结果通过 Wireshark 捕获到的数据包,清晰地看到了 TCP 三次握手的过程,以及 IP 数据包的分片和重组。
网络数据捕获及分析实验报告

广西民族大学网络数据捕获及分析实验报告学院:信息科学与工程学院班级 10网络姓名郭璇学号 110263100129 实验日期 2012年10月19日指导老师周卫实验名称网络数据捕获及分析实验报告一、实验目的1、通过捕获网络通信数据,使学生能够真实地观察到传输层(TCP)和应用层(HTTP)协议的数据,对计算机网络数据传输有感性的认识。
2、通过对捕获的数据的分析,巩固学生对这些协议制定的规则以及工作的机制理解,从而对计算机网络数据传输有初步的认识,以便为之后通信协议设计以及通信软件设计打下良好的基础。
二、协议理论TCP:1、Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。
在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
2、TCP所提供服务的主要特点:(1)面向连接的传输;(2)端到端的通信;(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序;(4)全双工方式传输;(5)采用字节流方式,即以字节为单位传输字节序列;(6)紧急数据传送功能。
3、TCP连接的建立与终止TCP连接的建立:TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。
TCP连接的终止:建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
具体过程如下图所示。
4、服务流程TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。
TCP提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务三计算机网络实验I P数据报捕获与分析任务三网络编程一、实验目的捕获本机网卡的IP包,对捕获的IP包进行解析。
要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。
二、实验环境平台:Windows编程环境:VC 6.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下的多种协议,而且能够对网络底层的传输机制进行控制。
网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机,目标主机,服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。
一般数据包的传输路径依次为网卡、设备驱动层、数据链路层、 IP 层、传输层、最后到达应用程序。
IP 数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给 IP 数据包捕获程序进行相关的处理。
IP 数据包的捕获程序一般由数据包捕获函数库和数据包分析器组成。
数据包捕获函数库是一个独立于操作系统的标准捕获函数库。
主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。
对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的 IP 数据包。
这种捕获程序与数据包捕获函数库分离的机制,使得编写的程序具有很好的可移植性。
IP 数据包捕获程序的核心部分就是数据包分析器。
数据包分析器应具有识别和理解各种协议格式(IP、 TCP、 UCP、 ICMP 协议)和帧格式的能力,并对捕获的数据进行分析和统计处理。
编写数据包捕获程序的主要工作就是如何实现数据包分析器的功能。
3.3 数据包捕获与解析的程序设计首先对以太网帧头进行结构体定义,总共有以下 13 项内容:Version、HeadLen、ServiceType、 TotalLen、Identifier、Flags、FragOffset、TimeToLive、Protocol、HeadChecksum、SourceAddr、DestinAddr、Options。
根据数据包的捕获机制,分别对以上 13 个内容编写捕获的 C 语言程序,进行一一捕获,通过开始的运行程序中运行编译程序后所得到的.exe 文件,就可以看到捕获到的信息。
捕获成功之后,最后将其各个信息进行解析,并写到一个文件之中。
以上各个程序的编写都是在 Visual Stdio C++ 6.0 编译器中完成。
3.4 网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字进行编程。
但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。
对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。
要想获取网络设备的所有数据包,就需要将网卡设置为混杂模式。
四、实验结果及分析程序运行结果截图:附件:网络数据包捕获与解析的完整程序#include <iostream>#include <winsock2.h>#include <ws2tcpip.h>#include <cstdlib>#include <fstream>#include <string>#pragma comment(lib, "ws2_32")#define IO_RCVALL _WSAIOW(IOC_VENDOR, 1)using namespace std;typedef struct IP_HEAD{union{unsigned char Version; //Version(4)unsigned char HeadLen; //Header Length(4) };unsigned char ServiceType; //Type of Servics(8)unsigned short TotalLen; //Total Length(16)unsigned short Identification; //Identification(16)union{unsigned short Flags; //IP Flags(3)unsigned short FragOffset; //Fragment Offset(13) };unsigned char TimeToLive; //TTL(8)unsigned char Protocol; //Protocol(8)unsigned short HeadChecksum; //Header Checksum(16)unsigned int SourceAddr; //Source Address(32)unsigned int DestinAddr; //Destination Address(32)unsigned char Options; //IP Options} ip_head;void main(){WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2), &WSAData) != 0){//初始化cout<<"Init fails!"<<endl;return;}/****************************数据包的捕获*********************************/SOCKET sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP); //抓捕IP数据报bool flag = true;setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)); //设置IP头操作选项char hostName[128];gethostname(hostName, 100);hostent* pHostIp = gethostbyname(hostName);sockaddr_in host_addr;host_addr.sin_family = AF_INET;host_addr.sin_port = htons(6000);host_addr.sin_addr = *(in_addr*)pHostIp->h_addr_list[0];bind(sock, (PSOCKADDR)&host_addr, sizeof(host_addr)); //把sockRaw绑定到本地网卡上DWORD dwBufferLen[10];DWORD dwBufferInLen = 1;DWORD dwBytesReturned = 0;WSAIoctl(sock, IO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);//接受所有的数据char buffer[65535];ip_head ip;int packsum = 2;for(int i=0; i<packsum; i++){if(recv(sock, buffer, 65535, 0)>0){ip = *(ip_head*)buffer;cout<<"Version:"<<inet_ntoa(*(in_addr*)&ip.Version)<<endl;cout<<"HeadLen:"<<inet_ntoa(*(in_addr*)&ip.HeadLen)<<endl;cout<<"ServiceType: "<<inet_ntoa(*(in_addr*)&ip.ServiceType)<<endl;cout<<"TotalLen:"<<inet_ntoa(*(in_addr*)&ip.TotalLen)<<endl;cout<<"Identification:"<<inet_ntoa(*(in_addr*)&ip.Identification)<<endl;cout<<"Flags:"<<inet_ntoa(*(in_addr*)&ip.Flags)<<endl;cout<<"FragOffset: "<<inet_ntoa(*(in_addr*)&ip.FragOffset)<<endl;cout<<"TimeToLive: "<<inet_ntoa(*(in_addr*)&ip.TimeToLive)<<endl;cout<<"Protocol:"<<inet_ntoa(*(in_addr*)&ip.Protocol)<<endl;cout<<"HeadChecksum:"<<inet_ntoa(*(in_addr*)&ip.HeadChecksum)<<endl;cout<<"SourceAddr:"<<inet_ntoa(*(in_addr*)&ip.SourceAddr)<<endl;cout<<"DestinAddr:"<<inet_ntoa(*(in_addr*)&ip.DestinAddr)<<endl;cout<<"Options:"<<inet_ntoa(*(in_addr*)&ip.Options)<<endl<<endl;}}/*****************************数据包的解析********************************///string str = inet_ntoa(*(in_addr*)&ip.SourceAddr);string ver = inet_ntoa(*(in_addr*)&ip.Version);string str1= inet_ntoa(*(in_addr*)&ip.HeadLen);string str2= inet_ntoa(*(in_addr*)&ip.ServiceType);string str3 = inet_ntoa(*(in_addr*)&ip.TotalLen);string str4 = inet_ntoa(*(in_addr*)&ip.Identification);string str5 = inet_ntoa(*(in_addr*)&ip.Flags);string str6 = inet_ntoa(*(in_addr*)&ip.FragOffset);string str7 = inet_ntoa(*(in_addr*)&ip.TimeToLive);string str8 = inet_ntoa(*(in_addr*)&ip.Protocol);string str9 = inet_ntoa(*(in_addr*)&ip.HeadChecksum);string str10= inet_ntoa(*(in_addr*)&ip.SourceAddr);string str11 = inet_ntoa(*(in_addr*)&ip.DestinAddr);string str12 = inet_ntoa(*(in_addr*)&ip.Options);fstream outfile;outfile.open("d:\\aa.dat", ios::out|ios::binary|ios::trunc);//ios::in|outfile.write(ver.c_str(), ver.length()+3);outfile.write(str1.c_str(), str1.length()+3);outfile.write(str2.c_str(), str2.length()+3);outfile.write(str3.c_str(), str3.length()+3);outfile.write(str4.c_str(), str4.length()+3);outfile.write(str6.c_str(), str6.length()+3);outfile.write(str7.c_str(), str7.length()+3);outfile.write(str8.c_str(), str8.length()+3);outfile.write(str9.c_str(), str9.length()+3);outfile.write(str10.c_str(), str10.length()+3);outfile.write(str11.c_str(), str11.length()+3);outfile.write(str12.c_str(), str12.length()+3);outfile.close();system("pause");}。