计算机网络课设报告解析ARP数据包含C++源码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书

目录

1.课程设计目的 (2)

2.课程设计要求 (2)

3.相关知识 (2)

1)ARP数据报的消息格式 (3)

2)ARP协议的工作流程 (4)

4.课程设计分析 (5)

1)课程设计中的重点及难点 (5)

2)参考算法 (6)

3)核心代码 (7)

5.相关扩展 (8)

6.心得体会 (10)

7.参考文献 (11)

一、课程设计目的:

本课程设计的目的是对网络上的ARP数据包进行解析,从而熟悉ARP数据包的结构,对ARP协议有更好的理解和认识。

二、课程设计要求:

通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下所示:

1,以命令行的形式运行,如下所示:

arpparse logfile其中,arpparse为程序名;logfile为日志文件名。

2,程序输出内容如下所示:

源IP地址源MAC地址目的IP地址操作时间

各部分的说明如下所示:

源IP地址:输出ARP消息格式中的源IP地址字段

源MAC地址:输出ARP消息格式中的源物理地址字段

目的IP地址:输出ARP消息格式中的目的IP地址字段。

目的MAC地址:输出ARP消息格式中的目的物理地址字段

操作:输出ARP消息格式中的操作字段,若为ARP请求,则为1,若为ARP应答,则为2,

时间:该ARP包产生的时间

3,当程序接收到键盘输入Ctrl+C时字段

三、相关知识

a)ARP数据报的消息格式

网络上的每台主机或设备都有一个或多个IP地址。IP地址是网络层的地址,在网络层,数据被组装成IP包。但是发送IP包需要物理设备的支持(通常是

Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知

道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地

址的机制。ARP协议就是用来完成这个任务的。ARP协议能够在同一个物理网

络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物

理地址。ARP协议的数据包格式如图所示:

ARP数据包的消息格式

下面对数据包的各个部分进行说明

●硬件类型:指定硬件接口类型。例如,值为1表示Ethernet

●协议类型:指定发送方支持的上层协议的类型

●物理地址长度:指定物理(硬件)地址的长度

●协议地址长度:网络层协议的地址长度。若为IP协议,其值为4

●操作:指定ARP的操作类型,例如,1表示ARP请求,2表示ARP应答

●源物理地址:指定发送方的IP地址

●目的物理地址:指定目的物理地址。

●目的IP地址:指定目的IP地址

ARP分组必须在数据链路层中被封装成侦,才能发送出去封装形式如图所示

b)ARP协议的工作流程。

1)在发送一个ARP分组之前,源主机首先根据目的IP地址,在本地ARP高速缓存表

中查找与之对应的目的物理地址。如果找到对应的物理地址,就不用进行地址解析,否则需要进行地址解析。

2)实现地址解析的第一步是产生ARP请求分组。在相应的字段写入本地主机的源物理

地址、源IP地址,在目的物理地址字段写入0,并在操作字段写入1。

3)将ARP分组发送到本地的数据链路层,并封装成帧。以源物理地址作为源地址,以

物理广播地址(FF-FF-FF-FF-FF-FF)作为目的地址,通过物理层发送出去。

4)由于采用了广播地址,因此网段内所有的主机或设备都能接受到该帧。除了目的主

机外,所有接受到该分组的主机和设备都会丢弃该分组,因为目的主机能够识别ARP 消息中的目的IP地址。

5)目的主机发送ARP应答分组。在ARP应答分组中,以请求分组中源物理地址、源IP

地址作为其目的物理地址、目的IP地址,并将目的主机自身的物理地址、IP地址填入应答分组的源物理地址、源IP地址字段,并在操作字段中写入2。该分组通过数据链路层以点对点的方式发送出去(因为现在目的方已经知道双方的物理地址)。

6)源结点接收到ARP应答分组,知道对应于目的IP地址的目的物理地址,将它作为

一条新记录加入到ARP高速缓存表。

7)源结点将有完整源IP地址、源物理地址、目的IP地址、目的物理地址的信息和数

据作为一个发送分组,传送给它的数据链路层并封装成桢,然后以点对点的方式发送到目的主机。

四、课程设计分析

1.课程设计中的重点及难点

1)程序中会用到Winpcap,Winpcap是Win32环境下数据包捕获的开放代码函数

库。基于Winpcap的应用程序一般按照下面几个步骤进行设计:

●输出网卡设备列表。

●选择网卡并打开。

●捕获数据包时,可能需要设置过滤器。

●捕获数据包或者发送数据包。

2)在程序设计过程中需要注意网络—主机字节顺序的转化。由于不同的计算机系

统所采用的数据表示方式不同,对于2B或4B的数据,有的采用低字节地址存

放数据的高权值位,而有的却以低地址字节存放数据低权位值,在网络的数据

传输中,我们应该统一表示,所以我们在捕获数据包后,应将数据包头部的表

示长度或类型的数据转换成本地机的表达形式。可以利用函数ntohs()将网络

字节序转换为主机字节序。

3)选择网卡并打开时,注意选择可用的网卡。

2.参考算法

1)取得当前网卡设备列表。

2)选择Ethernet网卡并打开,注意判断所选网卡是否为实际存在的可用网卡。

3)设置过滤器,此处的过滤器正则表达式为“arp”或者“ether proto\\arp”。

4)捕获数据包并进行处理(包括输出各IP地址,物理地址,操作类型以及时间)。

由于要记录日志文件,为了便于输出流参数,建议采用pcap_next_ex()函数。

流程图如图所示:

相关文档
最新文档