计算机网络解析ARP数据包.docx

上传人:b****6 文档编号:15899336 上传时间:2023-07-08 格式:DOCX 页数:11 大小:305.15KB
下载 相关 举报
计算机网络解析ARP数据包.docx_第1页
第1页 / 共11页
计算机网络解析ARP数据包.docx_第2页
第2页 / 共11页
计算机网络解析ARP数据包.docx_第3页
第3页 / 共11页
计算机网络解析ARP数据包.docx_第4页
第4页 / 共11页
计算机网络解析ARP数据包.docx_第5页
第5页 / 共11页
计算机网络解析ARP数据包.docx_第6页
第6页 / 共11页
计算机网络解析ARP数据包.docx_第7页
第7页 / 共11页
计算机网络解析ARP数据包.docx_第8页
第8页 / 共11页
计算机网络解析ARP数据包.docx_第9页
第9页 / 共11页
计算机网络解析ARP数据包.docx_第10页
第10页 / 共11页
计算机网络解析ARP数据包.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机网络解析ARP数据包.docx

《计算机网络解析ARP数据包.docx》由会员分享,可在线阅读,更多相关《计算机网络解析ARP数据包.docx(11页珍藏版)》请在冰点文库上搜索。

计算机网络解析ARP数据包.docx

计算机网络解析ARP数据包

 

计算机网络解析ARP数据包

成绩评定表

学生姓名

班级学号

09

专业

计算机科学与技术

课程设计题目

解析ARP数据包

 

 

组长签字:

成绩

 

日期

20年月日

课程设计任务书

学院

信息科学与工程学院

专业

计算机科学与技术

学生姓名

班级学号

课程设计题目

解析ARP数据包

实践教学要求与任务:

1.课程设计的目的是对网络上的ARP数据包进行解析,从而熟悉

ARP数据包的结构,对ARP协议有更好的理解和认识。

2.通过编写程序,获取网络中的ARP数据包,解析数据包的内容,

将结果显示在标准输出上,并同时写入日志文件。

工作计划与进度安排:

第15周

星期一:

设计任务分析和总体设计

星期二:

软件算法和流程设计

星期三:

软件编码实现

星期四:

软件总体调试

星期五:

交课程设计报告、答辩、验收程序

指导教师:

201年月日

专业负责人:

201年月日

学院教学副院长:

201年月日

摘要

7个人心得...................................................................1

摘要

本文首先介绍了解析ARP数据包课程设计的目的与意义,本次课程设计的要求,接着说明了,什么是ARPARP数据报消息格式以及ARP协议的工作流程加强我们对ARP协议的认识,然后分析了本次课程设计的难点、重点、参考算法、核心代码,以及对运行结果的分析,还有一些相关知识的拓展。

最后对本次课设进行了个人心得的总结。

 

1课程设计目的

课程设计的目的是对网络上的ARP数据包进行解析,从而熟悉

ARP数据包的结构,对ARP协议有更好的理解和认识。

2课程设计要求

通过编写程序,获取网络中的ARP数据包,解析数据包的内容,

将结果显示在标准输出上,并同时写入日志文件。

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

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

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

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

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

各部分的说明如下所示:

源IP地址:

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

源MAC地址:

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

目的IP地址:

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

目的MAC地址:

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

操作:

输出ARP消息格式中的操作字段,若为ARP请求,

则为1,若为ARP应答,则为2。

时间:

该ARP包产生的时间。

(3)当程序接收到键盘输入Ctrl+C时字段退出。

3相关知识

(1)什么是ARP

地址解析协议(AddressResolutionProtocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议。

因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM和FDDIIP网络中使用。

从IP地址到物理地址的映射有两种方式:

表格方式和非表格方式。

ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。

而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。

这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。

于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。

这就是ARP协议要做的事情。

所谓地址解析(addressresolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。

所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。

于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。

这种情况称为ARP代理(ARPProxy)。

(2)ARP数据报的消息格式

网络上的每台主机或设备都有一个或多个IP地址。

IP地址是网络层的地址,在网络层,数据被组装成IP包。

但是发送IP包需要物理设备的支持(通常是Ethernet设备,在本课程设计中我们指定为Ethernet设备),即发送端必须知道目的物理地址才能将IP包发送出去,所以需要一种将IP地址映射为物理地址的机制。

ARP协议就是用来完成这个任务的。

ARP协议能够在同一个物理网络中,在给定目的主机或设备的IP地址的条件下,得到目的主机或设备的物理地址。

ARP协议的数据包格式如图所示:

08162431(位)

硬件类型

协议类型

物理地址长度

协议地址长度

操作

源物理地址(八位组0~3)

源物理地址(八位组4~5)

源IP地址(八位组0~1)

源IP地址(八位组2~3)

目的物理地址(八位组0~1)

目的物理地址(八位组2~5)

目的IP地址(八位组0~3)

ARP数据包的消息格式

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

硬件类型:

指定硬件接口类型。

例如,值为1表示Ethernet

协议类型:

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

物理地址长度:

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

协议地址长度:

网络层协议的地址长度。

若为IP协议,其值为4

操作:

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

源物理地址:

指定发送方的IP地址

目的物理地址:

指定目的物理地址。

目的IP地址:

指定目的IP地址

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

 

将ARP数据包封装成一个帧

(3)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高速缓存表。

源结点将有完整源IP地址、源物理地址、目的IP地址、目的物理地址的信息和数据作为一个发送分组,传送给它的数据链路层并封装成桢,然后以点对点的方式发送到目的主机。

4课程设计分析

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

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

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

输出网卡设备列表。

选择网卡并打开。

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

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

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

由于不同的计算机系统所采用的数据表示方式不同,对于2B或4B的数据,有的采用低字节地址存放数据的高权值位,而有的却以低地址字节存放数据低权位值,在网络的数据传输中,我们应该统一表示,所以我们在捕获数据包后,应将数据包头部的表示长度或类型的数据转换成本地机的表达形式。

可以利用函数ntohs()将网络字节序转换为主机字节序。

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

2.参考算法

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

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

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

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

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

流程图如图所示:

 

 

5程序代码

#include<>

#include<>

#include<>

#include""

#include<>

#pragmacomment(lib,"")

#pragmacomment(lib,"")

;

(ios:

:

left);

out<sip[3])<<"";

(ios:

:

left);

;

(ios:

:

left);

out<dip[3])<<'';

(ios:

:

left);

;

pcap_freealldevs(alldevs);

return;

}

n";

return;

}

n";

pcap_freealldevs(alldevs);

return;

}

n";

pcap_freealldevs(alldevs);

return;

}

."<

ofstreamfout(argv[1],ios:

:

app);

计算机网络(第5版).北京:

电子工业出版社,2008

[2]吴宜功吴英编着.计算机网络课程设计(第2版).北京:

机械工业出版社,2012

[3]XX百科

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2