arp协议的研究与实现

合集下载

实验1ARP协议分析实验

实验1ARP协议分析实验

实验1ARP协议分析实验本次实验的目标是分析ARP(Address Resolution Protocol)协议,探索其工作原理和在局域网中的应用。

ARP协议是在网络通信中用于解析IP地址和MAC地址之间映射关系的协议。

实验步骤如下:1.确保实验环境中有两台主机,可以通过交换机或路由器相连组成一个局域网。

主机A和主机B分别作为发送方和接收方。

2. 打开Wireshark或其他网络抓包工具,以便捕获在局域网中的ARP消息。

3. 在主机A上打开命令行终端,执行命令“arp -a”可以查看主机上已经记录的ARP缓存。

4. 在主机B上设置一个IP地址,例如192.168.1.2,并使用ping命令向主机A发送一个ARP请求,命令如下: ping 192.168.1.15. 在Wireshark中,选择相应的网卡接口开始抓包。

然后在主机B上执行ARP请求,捕获所有的ARP交换数据包。

6. 分析捕获的数据包,在Wireshark中选择第一个ARP请求数据包,可以看到源MAC地址是主机B的MAC地址,目标MAC地址是广播地址(FF:FF:FF:FF:FF:FF)。

7. 接下来,在Wireshark中选择第一个ARP响应数据包,可以看到源MAC地址是主机A的MAC地址,目标MAC地址是主机B的MAC地址。

8.分析ARP响应中的信息,可以得出主机A和主机B之间的IP地址和MAC地址的映射关系。

9. 在主机A上使用ping命令向主机B发送一个ARP请求,然后在Wireshark中捕获所有的ARP数据包。

10. 在Wireshark中分析捕获到的ARP请求和响应数据包,比较与主机B向主机A发送ARP请求时的数据包有何不同。

实验结果分析:在实验中,我们通过ARP协议实现了IP地址与MAC地址之间的映射关系,通过抓包分析发现,当主机B向主机A发送ARP请求时,主机A会发送一个ARP响应来回应请求。

在ARP响应中,主机A会提供自己的MAC地址,供主机B进行记录。

ARP协议分析实验报告

ARP协议分析实验报告

ARP协议分析实验报告ARP(Address Resolution Protocol)协议是一种解决网际协议(IP)地址与物理硬件地址(MAC地址)之间转换的协议。

本次实验旨在分析ARP协议的工作原理和过程,并通过使用网络抓包工具Wireshark来捕获并分析ARP协议的数据包。

1.实验背景与目的2.实验步骤a)搭建网络环境:搭建一个基本的局域网环境,包括一个路由器和几台主机。

b) 启动Wireshark:在一台主机上启动Wireshark网络抓包工具。

c)发送ARP请求:使用另一台主机向目标主机发送ARP请求,获取目标主机的IP地址与MAC地址的对应关系。

d) 抓取数据包:在Wireshark中捕获并保存ARP协议的数据包。

e)分析数据包:打开捕获的数据包,分析数据包中的ARP请求和应答。

3.实验结果与分析实验中,我们使用两台主机进行测试,主机A的IP地址为192.168.1.100,MAC地址为00:11:22:33:44:55,主机B的IP地址为192.168.1.200,MAC地址为AA:BB:CC:DD:EE:FF。

a)ARP请求过程:主机A通过ARP协议发送ARP请求,询问主机B的MAC地址,具体操作为发送一个以太网帧,目标MAC地址为广播地址FF:FF:FF:FF:FF:FF,目标IP地址为主机B的IP地址192.168.1.200。

主机B收到ARP请求后,通过ARP应答将自己的MAC地址发送给主机A。

b)ARP应答过程:主机B收到ARP请求后,生成一个ARP应答数据包,将自己的MAC地址AA:BB:CC:DD:EE:FF作为回应发送给主机A。

主机A接收到ARP应答后,将主机B的IP地址与MAC地址的对应关系存储在本地ARP缓存中,以便于下次通信时直接使用。

4.结论与意义ARP协议作为解决IP地址与MAC地址转换的关键协议,在计算机网络中起着重要的作用。

本实验通过抓包分析ARP协议的工作过程,深入理解了ARP协议的原理和应用场景。

ARP协议工作原理实验

ARP协议工作原理实验

ARP协议工作原理实验ARP协议全称为地址解析协议(Address Resolution Protocol),是用于将网络层的IP地址解析为数据链路层的MAC地址的一种协议。

它是网络通信中不可或缺的一环,通过ARP协议,主机可以获取局域网内其他主机的MAC地址,从而实现数据包的传输。

1.主机A需要将数据包发送给主机B,但是只知道主机B的IP地址,不知道其MAC地址。

2. 主机A首先检查自己的ARP缓存(ARP Cache),看是否有已知主机B的MAC地址。

如果查找到,就直接使用该MAC地址发送数据包。

3. 如果主机A的ARP缓存中没有主机B的MAC地址,则主机A会广播一个ARP请求,即ARP Request消息。

这个ARP请求包含主机A的IP地址和MAC地址,以及被请求的主机B的IP地址。

4.广播的ARP请求消息会被局域网内的所有主机接收到,但只有主机B会响应。

5.主机B接收到ARP请求消息后,首先检查请求中的目标IP地址是否与自己匹配。

如果不匹配,则忽略该请求。

6. 如果主机B的IP地址与请求匹配,它会向主机A发送一个ARP响应消息,即ARP Reply。

这个ARP响应消息中包含主机B的IP地址和MAC地址。

7.主机A接收到ARP响应消息后,将主机B的IP地址和MAC地址存储在自己的ARP缓存中,以备将来使用。

同时,它会使用主机B的MAC地址封装数据包,并通过网络传输给主机B。

8.一旦主机A和主机B建立了ARP缓存中的IP和MAC的映射关系,它们之间的数据包交换就可以直接通过MAC地址进行。

不再需要ARP请求和ARP响应。

需要注意的是,ARP协议是在同一个局域网内实现的,因为ARP请求是广播的,所有主机都能接收到。

如果两台主机不在同一个局域网内,则需要使用特殊的ARP协议扩展,如Proxy ARP或Gratuitous ARP。

1.搭建实验环境:在一台计算机A和一台计算机B上,分别配置IP 地址和子网掩码,使它们在同一个局域网内。

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用ARP协议原理及应用一、协议概述ARP(Address Resolution Protocol,地址解析协议)是一种用于解析IPv4地址和MAC地址之间对应关系的协议。

它在局域网中起到了重要的作用,用于在发送数据前确定目标主机的MAC地址,以便将数据正确地发送到目标主机。

本协议旨在解释ARP协议的工作原理和应用场景。

二、协议原理1. ARP请求过程当发送方主机A需要向目标主机B发送数据时,首先会检查本地的ARP缓存表,如果该表中存在目标主机B的IP地址对应的MAC地址,则直接使用该MAC 地址发送数据。

如果ARP缓存表中没有目标主机B的对应项,则主机A会发送一个ARP请求广播,请求目标主机B回复其MAC地址。

该广播包含发送方主机A 的IP地址和MAC地址。

2. ARP应答过程当目标主机B收到ARP请求广播后,会检查请求中的IP地址是否与自己的IP 地址匹配,如果匹配则会发送一个ARP应答包给发送方主机A。

该应答包中包含目标主机B的MAC地址。

3. ARP缓存表更新发送方主机A在收到目标主机B的ARP应答包后,会将目标主机B的IP地址和MAC地址的对应关系记录到本地的ARP缓存表中,以便下次发送数据时直接使用。

三、协议应用1. IP地址解析ARP协议用于将IP地址解析为对应的MAC地址。

在发送数据时,发送方主机A需要知道目标主机B的MAC地址才能正确地将数据发送到目标主机。

通过ARP 协议,发送方主机A可以向目标主机B发送ARP请求,获取目标主机B的MAC地址,并将其缓存在本地的ARP缓存表中,以便后续的通信。

2. 局域网内通信ARP协议在局域网内部起到了重要的作用。

在局域网中,主机之间通常使用IP地址进行通信,而ARP协议则负责将IP地址解析为对应的MAC地址。

通过ARP协议,主机可以通过IP地址找到目标主机的MAC地址,从而实现局域网内的通信。

3. 网关寻址在网络中,网关是连接不同子网的设备,用于实现不同子网之间的通信。

ARP协议研究地址解析协议的MAC地址与IP地址映射

ARP协议研究地址解析协议的MAC地址与IP地址映射

ARP协议研究地址解析协议的MAC地址与IP地址映射ARP(Address Resolution Protocol)是一种用于将MAC地址与IP地址互相映射的网络协议。

它是在TCP/IP协议栈的网络层和数据链路层之间工作的重要协议。

通过ARP协议,我们可以根据已知的IP地址获取对应的MAC地址,或者通过已知的MAC地址获取对应的IP地址。

本文将深入研究ARP协议的工作原理和应用。

一、ARP协议的作用及原理1. ARP协议的作用ARP协议主要解决的是在网络中,当我们知道目标主机的IP地址时,如何获取对应的MAC地址。

因为在网络传输过程中,数据链路层使用的是MAC地址,而应用层使用的是IP地址。

ARP协议的作用就是建立起IP地址和MAC地址之间的映射关系,以便准确传递数据。

2. ARP协议的原理简单来说,ARP协议的工作原理可以分为两个步骤:首先,主机A需要发送数据给主机B,但是它只知道主机B的IP地址,不知道对应的MAC地址。

主机A在自己的ARP缓存中查找是否有主机B的IP地址对应的MAC地址,如果有,则直接使用该MAC地址发送数据。

如果没有,则进行第二步。

其次,主机A会向本地网络广播一个ARP请求(ARP Request)消息,询问该IP地址对应的MAC地址。

其他主机都会接收到该消息,但只有主机B会响应,响应消息中包含了它的MAC地址。

主机A收到响应消息后,会将主机B的IP地址和MAC地址添加到自己的ARP缓存中,下次遇到相同的IP地址时就可以直接使用这个MAC地址发送数据。

二、ARP协议的应用场景ARP协议在局域网中具有广泛的应用,下面列举几个常见的应用场景。

1. IP数据包的封装与解封当一个主机要向另一个主机发送IP数据包时,首先需要将数据包封装成数据链路层的帧。

在封装的过程中,主机需要知道目标主机的MAC地址,这时候就需要使用ARP协议将目标主机的IP地址解析为对应的MAC地址。

2. 非直连网络间的通信当两个主机处于不同的非直连网络中时,需要经过路由器进行通信。

ARP协议实现

ARP协议实现

一,ARP协议的实现
1,ARP协议头结构
重要字段说明:
硬件类型:值为1表示以太网。

协议类型:表示要映射的协议地址类型:值为0x0800表示IP协议。

操作数:1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示RARP应答。

2,ARP缓存表由IP地址,MAC地址,寿命。

可以arp –a命令查看。

说明,可以先ping通,然后看IP地址。

3,ARP主要功能
要解决的问题:
1)ARP应答都做什么?
通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的mac地址。

如果没有找到,该主机就发送一个ARP广播包,看起来象这样子:
"我是主机xxx.xxx.xxx.xxx , mac是xxxxxxxxxxx ,ip为xxx.xxx.xxx.xx1的主机请告之你的mac来"。

arp请求是广播包,arp应答是单播包。

当系统收到一个目的地址为本机的ARP请求报文后,他就把硬件地址填进去,然后用2个目的段地址替换两个发送端地址,并把操作字段设置成2(应答),最后把它发出去。

//中断源:
ARM外部中断和内部中断之区别????看视频。

arp协议实验报告

arp协议实验报告

arp协议实验报告
ARP协议实验报告
实验目的:
本实验旨在通过对ARP协议的实验,加深对ARP协议的理解,掌握ARP协议
的工作原理和实际应用。

实验设备和材料:
1. 两台计算机
2. 一台路由器
3. 以太网交换机
4. 网线
5. ARP协议相关软件
实验步骤:
1. 搭建实验环境,将两台计算机连接到同一个局域网中,通过路由器和交换机
进行连接。

2. 在计算机A上,使用ARP协议相关软件发送ARP请求,获取计算机B的
MAC地址。

3. 在计算机B上,接收到ARP请求后,发送ARP应答,将自己的MAC地址发
送给计算机A。

4. 计算机A收到ARP应答后,将计算机B的IP地址和MAC地址建立映射关系,并保存在ARP缓存中。

5. 使用Wireshark等网络抓包工具,分析实验过程中的ARP请求和应答的数据包。

实验结果:
通过实验,我们成功地获取到了计算机B的MAC地址,并建立了IP地址和MAC地址的映射关系。

在抓包分析中,我们也可以清晰地看到ARP请求和应答的数据包,进一步加深了对ARP协议的理解。

实验总结:
ARP协议是解决IP地址和MAC地址之间映射关系的重要协议,在局域网中起着至关重要的作用。

通过本次实验,我们对ARP协议的工作原理有了更深入的了解,也掌握了ARP协议的实际应用方法。

希望通过这次实验,能够对同学们的网络协议学习有所帮助。

arp协议的研究与实现

arp协议的研究与实现

目录一.设计要求 (1)二.设计作用与目的 (2)三.运行环境及工具软件 (2)四.系统设计 (2)1.需求分析 (2)2.设计分析 (3)3.具体设计 (5)(1)程序结构 (5)(2)数据描述——结构体类型定义说明 (5)(3)函数功能说明 (5)(4)模块设计................................................... 错误!未定义书签。

(5)源程序及注释........................................... 错误!未定义书签。

六.设计心得 (18)七.参考文献 (18)另起一页!ARP协议的研究与实现一.设计要求设计编写一个以c语言为基础ARP协议,有的下几个基本功能:1)交换网络的嗅探2) IP地址冲突3)阻止目标的数据包通过网关4)通过ARP检测混杂模式节点5)收集资料,全面分析课题,分解问题,形成总体编程思路。

6)深入分析各个小问题,编写各部分程序模块。

7)对于设计中用到的关键函数,要联系问题进行具体介绍。

8)上机调试,确保程序能正确运行。

9)完成设计报告,并进行答辩。

二.设计作用与目的ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。

在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。

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

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

三.运行环境及工具软件程序运行环境:VC++工具软件:Microsoft Visual C++ 6.0四.系统设计1.需求分析假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2。

arp实验报告总结

arp实验报告总结

arp实验报告总结1. 引言ARP(地址解析协议)是计算机网络中的重要协议之一,用于将IP地址转换为物理地址(MAC地址)。

本实验旨在通过对ARP协议的理论学习和实际实验操作,深入理解ARP协议的工作原理和应用场景。

2. 实验目的1) 了解ARP协议的基本概念和工作流程;2) 掌握ARP请求和应答消息的格式和交互过程;3) 使用网络工具进行ARP实验,观察和分析实验结果;4) 分析ARP协议的优缺点及应用场景。

3. 实验步骤1) 理论学习:通过阅读相关资料和教材,了解ARP协议的基本概念、工作原理和数据包格式。

2) 实验环境搭建:在实验室中搭建实验环境,包括多台计算机和交换机等设备,并配置IP地址。

3) 实验操作:使用网络工具(如Wireshark)对ARP的请求和应答过程进行抓包,并分析抓包结果。

4) 实验结果分析:根据实验抓包结果,分析ARP协议的工作方式、消息交互过程和应用实例。

5) 实验总结:对实验过程中遇到的问题和实验结果进行总结,归纳ARP协议的特点和应用场景。

4. 实验结果及分析通过实验操作和抓包分析,得出以下结论:1) ARP协议通过广播方式发送ARP请求消息,等待目标主机的ARP应答消息,以获取目标主机的MAC地址。

2) ARP缓存表用于存储IP地址与MAC地址的映射关系,可以提高网络传输的效率。

3) ARP协议存在着ARP欺骗攻击的风险,黑客可以通过篡改ARP表来实施中间人攻击。

4) ARP协议在局域网环境中广泛应用,用于解析IP地址和MAC地址的转换,实现网络通信。

5. ARP协议的优缺点1) 优点:ARP协议简单实用,通过IP地址与MAC地址的转换,实现了网络通信的可靠性和效率。

2) 缺点:ARP协议依赖于广播方式进行地址解析,会增加网络负载和安全风险;同时,ARP协议对网络规模有一定限制,无法跨越子网进行通信。

6. 应用场景ARP协议在以下场景中起到重要作用:1) 局域网通信:ARP协议用于在局域网中解析IP地址和MAC地址的对应关系,实现计算机之间的通信。

ARP攻击的实现和分析

ARP攻击的实现和分析

ARP攻击的实现和分析首先,我们来看一下ARP攻击的原理。

ARP协议用于将IP地址转换为MAC地址,以便在网络中进行通信。

在正常情况下,当一个设备需要与网络中的另一个设备通信时,它会向网络中广播一个ARP请求,询问目标设备的MAC地址。

目标设备收到此请求后,会向发送设备回复一个ARP应答,其中包含了自己的MAC地址。

发送设备收到ARP应答后,会将目标设备的IP地址与其MAC地址绑定,并将此绑定关系存储在本地的ARP缓存中。

而ARP攻击则是通过伪造ARP请求和应答来欺骗网络设备,使其将通信的目标设备与攻击者的MAC地址绑定。

一旦攻击成功,攻击者就可以中间截取通信数据、劫持通信流量,甚至进行数据篡改和监听等恶意行为。

下面是ARP攻击的实现和分析,包括攻击步骤和攻击效果:1.攻击步骤:(1) 攻击者使用ARP欺骗工具伪造一个ARP请求或应答。

这个欺骗工具常用的有arpspoof、ettercap等。

(2)攻击者向网络中广播ARP请求,询问目标设备的MAC地址。

这个ARP请求的发送IP地址通常为攻击者自己的IP地址。

(3)目标设备收到ARP请求后,会将其ARP缓存中与该IP地址相对应的MAC地址更新为ARP请求中的MAC地址。

(4)攻击者收到目标设备的ARP应答后,将其中的目标设备的IP地址与自己的MAC地址绑定,并将这个欺骗的ARP应答发送给源设备。

(5)源设备接收到欺骗的ARP应答后,将目标设备的IP地址与攻击者的MAC地址绑定。

2.攻击效果:(1)中间人攻击:攻击者成功伪造了ARP请求和应答后,就可以将通信的目标设备与自己的MAC地址绑定。

这样,攻击者就成为了通信的中间人,可以截取通信数据、修改通信内容或进行流量劫持。

(2)数据丢失和泄露:通过ARP攻击,攻击者可以截取通信数据,造成数据丢失和信息泄露的风险。

(3)服务中断:如果攻击者将目标设备的IP地址与不存在的MAC地址绑定,就会导致目标设备无法正常进行网络通信,从而造成服务中断的影响。

ARP协议解析与应用

ARP协议解析与应用

ARP协议解析与应用ARP(Address Resolution Protocol),地址解析协议,是一种用于在局域网中将IP地址解析为对应MAC地址的协议。

在计算机网络中,IP地址用于标识网络中的设备,而MAC地址则是用于标识设备的物理地址。

ARP协议的作用是通过IP地址查询对应的MAC地址,以实现数据的传输。

在本文中,我们将对ARP协议进行解析,并探讨其在实际应用中的作用与功能。

一、ARP协议概述1. ARP协议的定义ARP协议是一种地址解析协议,其作用是根据IP地址查询对应的MAC地址。

它通过广播的方式发送ARP请求,在局域网中寻找目标设备的MAC地址,以便进行数据传输。

一旦获取到目标设备的MAC地址,就可以通过以太网(Ethernet)传输层实现数据的传输。

2. ARP协议的工作原理ARP协议的工作原理可以分为以下四个步骤:a) 发送ARP请求:源设备向网络中的所有设备发送ARP请求,请求目标设备的MAC地址。

b) 目标设备响应ARP请求:目标设备接收到ARP请求后,将其MAC地址作为ARP响应发送给源设备。

c) 源设备收到ARP响应:源设备接收到目标设备的ARP响应后,将其存储在本地的ARP缓存中,以便将来的数据传输。

d) 数据传输:源设备通过目标设备的MAC地址将数据进行传输。

二、ARP协议的应用1. IP地址与MAC地址转换ARP协议的主要应用是实现IP地址与MAC地址之间的转换。

当一个设备需要与网络中的另一个设备进行通信时,首先需要知道目标设备的MAC地址,而通过ARP协议,可以通过目标设备的IP地址查询到其对应的MAC地址,从而实现数据的传输。

2. ARP缓存管理每次进行ARP请求响应之后,源设备会将目标设备的IP地址与MAC地址存储在本地的ARP缓存中,以便将来的数据传输。

ARP缓存管理是对这些缓存条目进行管理和维护的过程。

当ARP缓存中的某条目过期或者失效时,源设备会重新发送ARP请求以更新对应的MAC地址。

ARP协议解析实现IP地址与MAC地址映射的协议

ARP协议解析实现IP地址与MAC地址映射的协议

ARP协议解析实现IP地址与MAC地址映射的协议ARP(Address Resolution Protocol,地址解析协议)是计算机网络通信协议中一种解析实现IP地址与MAC地址映射的协议。

在网络通信中,为了实现数据包的传输,需要将目标主机的IP地址转换为相应的MAC地址,这个过程就是地址解析。

本文将详细介绍ARP协议的原理和实现方式。

一、ARP协议的基本原理ARP协议是一个基于请求-响应工作原理的协议。

当主机A需要向主机B发送数据包时,主机A首先会检查本地ARP缓存表,如果找到目标主机B的IP地址对应的MAC地址,则直接发送数据包到目标主机;如果在ARP缓存表中未找到对应的MAC地址,则会发送一个ARP请求广播。

其他主机收到ARP请求后,会检查自己的IP地址,如果与请求的目标IP地址匹配,则向发送请求的主机回复一个ARP响应,包含自己的MAC地址。

发送请求的主机收到ARP响应后,会将目标主机的IP地址和MAC地址添加到本地的ARP缓存表中,以便下次直接发送数据包。

二、ARP协议的实现步骤1. 发送ARP请求广播:当主机A需要解析IP地址为IP_B的MAC 地址时,会在本地网络中广播一个ARP请求,该ARP请求中包含了A 主机的IP和MAC地址,以及目标IP_B的IP地址。

2. 响应ARP请求:网络中的其他主机收到ARP请求后,会检查自己的IP地址是否与请求中的目标IP匹配,如果匹配则向主机A发送一个ARP响应,该ARP响应包含了主机B的IP地址和MAC地址。

3. 更新ARP缓存表:主机A接收到ARP响应后,会将目标主机B的IP地址和MAC地址添加到本地的ARP缓存表中。

下次再向主机B发送数据包时,将直接从ARP缓存表中取出目标主机的MAC地址,避免了广播ARP请求。

三、ARP协议的优缺点1. 优点- ARP协议是基于广播的解析方式,简单高效。

- ARP缓存表的存在可以加速地址解析过程,提高网络传输效率。

ARP协议分析实验报告

ARP协议分析实验报告

ARP协议分析实验报告实验目的:对ARP协议进行深入分析,了解其工作原理和应用场景。

实验过程:1. ARP(Address Resolution Protocol)是一种用于将IP地址映射到MAC地址的网络协议。

在进行ARP分析前,我们先了解一下ARP的基本原理。

2.当主机A要发送数据包给主机B时,需要知道主机B的MAC地址。

主机A会先在本地ARP缓存中查找主机B的MAC地址。

如果缓存中没有记录,则主机A会发送一个ARP请求广播到局域网上,请求主机B的MAC地址。

3.主机B收到ARP请求后,会向主机A发送一个ARP响应,其中包含自己的MAC地址。

4.主机A收到主机B的ARP响应后,会将主机B的MAC地址记录在ARP缓存中,并将数据包发送给主机B。

5. 在本次实验中,我们使用Wireshark工具对ARP协议进行抓包分析。

通过查看抓包数据,我们可以了解ARP协议的详细过程和相关字段。

实验结果:1.在抓包数据中,我们可以看到ARP请求和ARP响应的数据包。

ARP 请求包中包含了发送方的MAC地址、IP地址、目标IP地址等信息。

ARP 响应包中包含了目标的MAC地址。

2. 我们可以通过Wireshark工具查看每个ARP数据包的详细信息,包括源MAC地址、目标MAC地址、源IP地址、目标IP地址等字段。

3.我们还可以观察到ARP实际通信的过程,包括ARP请求广播和ARP响应的单播。

4.通过对ARP协议的抓包分析,我们可以更加深入地了解ARP的工作原理和实际应用。

实验结论:1.ARP协议是一种重要的网络协议,用于解决IP地址到MAC地址的映射问题。

在局域网中,ARP协议是实现数据传输的基础。

2.通过对ARP协议的抓包分析,我们可以了解ARP协议的具体实现过程,包括ARP请求和ARP响应的细节。

3.ARP协议在网络通信中起着至关重要的作用,了解其工作原理对我们理解网络通信机制和故障排查都是非常有帮助的。

4.在今后的网络实验中,我们可以继续对其他重要协议进行深入研究和分析,提升我们对网络通信的理解和掌握程度。

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用ARP协议原理及应用一、协议原理ARP(Address Resolution Protocol,地址解析协议)是一种用于在局域网中将IP地址解析为物理MAC地址的协议。

它的主要功能是通过广播的方式查询局域网上的设备的MAC地址,以便实现IP地址和MAC地址之间的映射关系。

1.1 ARP请求与应答当主机A需要与主机B通信时,首先会在自己的ARP缓存中查找目标IP地址对应的MAC地址。

如果找到了,则直接发送数据包给目标主机。

如果没有找到,则主机A会发送一个ARP请求广播包到局域网上的所有主机,请求对应IP地址的主机回复自己的MAC地址。

当主机B收到ARP请求后,会将自己的MAC地址封装在ARP应答包中发送给主机A。

主机A收到ARP应答包后,将目标IP地址和MAC地址的映射关系存储在ARP缓存中,以便后续通信使用。

1.2 ARP缓存ARP缓存是主机或路由器中存储IP地址和MAC地址映射关系的表格。

当主机A发送ARP请求后,如果收到了ARP应答包,就会将目标IP地址和MAC地址的映射关系存储在ARP缓存中。

这样,在后续的通信中,主机A就可以直接从ARP 缓存中获取目标主机的MAC地址,而无需再发送ARP请求。

1.3 ARP欺骗ARP欺骗是指通过伪造ARP应答包,将其他主机的IP地址与自己的MAC地址进行映射,从而使得其他主机将数据发送到攻击者的主机上。

ARP欺骗攻击可以用于网络嗅探、中间人攻击等恶意行为。

二、协议应用ARP协议在局域网中有着广泛的应用,主要包括以下几个方面:2.1 IP地址解析ARP协议通过将IP地址解析为MAC地址,实现了不同主机之间的通信。

当主机A需要向主机B发送数据时,可以通过ARP协议获取主机B的MAC地址,从而将数据包发送到正确的目标主机。

2.2 局域网扩展ARP协议可以用于局域网的扩展,当一个局域网无法满足通信需求时,可以通过路由器连接多个局域网,并使用ARP协议在不同的局域网之间进行通信。

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用ARP协议原理及应用一、协议概述ARP(Address Resolution Protocol,地址解析协议)是一种用于将IP地址解析为物理地址的网络协议。

它在局域网中起到了重要的作用,使得主机可以通过IP地址找到对应的MAC地址,从而实现数据的传输。

二、协议原理1. ARP请求与应答当主机A需要与主机B通信时,A会先检查自己的ARP缓存表,看是否有B的IP地址对应的MAC地址。

如果没有,A会发送一个ARP请求广播消息,该消息包含A的IP地址和MAC地址。

局域网中的其他主机都会收到这个消息,但只有B会响应。

B收到ARP请求后,会将自己的MAC地址作为ARP应答发送给A,A收到应答后会将B的IP地址和MAC地址添加到自己的ARP缓存表中。

2. ARP缓存表每个主机都会维护一个ARP缓存表,用于存储IP地址和MAC地址的对应关系。

当主机收到一个数据包时,会先查找ARP缓存表,如果找到了对应的MAC地址,则直接发送数据包;如果没有找到,则需要发送ARP请求来获取对应的MAC地址。

3. ARP欺骗ARP协议的一大安全隐患是ARP欺骗攻击。

攻击者可以发送虚假的ARP应答消息,将自己的MAC地址伪装成目标主机的MAC地址,从而截取或篡改通信数据。

为了防止ARP欺骗攻击,可以使用静态ARP表、ARP防火墙或者ARP协议的安全扩展协议等方法。

三、协议应用ARP协议在局域网中有广泛的应用,以下是几个常见的应用场景:1. IP地址解析ARP协议通过将IP地址解析为MAC地址,使得主机可以在局域网中准确地找到目标主机,从而实现数据的传输。

2. 局域网内部通信在局域网中,主机之间的通信需要通过ARP协议解析IP地址和MAC地址,从而确定数据的发送目标。

ARP协议保证了主机之间的正常通信。

3. 路由器转发在一个局域网中,如果主机A要与另一个局域网中的主机通信,需要通过路由器进行转发。

路由器会根据目标主机的IP地址查找对应的MAC地址,并将数据包转发到目标主机所在的局域网中。

ARP协议实现及其数据结构

ARP协议实现及其数据结构

ARP协议实现及其数据结构ARP(Address Resolution Protocol)是用于将IP地址解析为物理地址(MAC地址)的协议。

它是在IP网络中实现主机之间的通信的关键协议之一、本文将详细介绍ARP协议的实现方式以及相关的数据结构。

一、ARP协议实现方式:1.发送ARP请求:当一个主机要向另一个主机发送数据时,它首先会检查目标主机的IP地址是否在本地子网内。

如果在子网内,发送主机将生成一个ARP请求,该请求包含发送主机的MAC地址和目标主机的IP地址。

然后,它将广播这个ARP请求到子网上的所有主机。

2.接收ARP请求:当一个主机在子网上接收到一个ARP请求时,它将检查请求中的目标IP地址是否与本地IP地址匹配。

如果匹配,该主机将生成一个ARP响应,该响应包含接收主机的MAC地址和发送主机的IP地址。

然后,它将单播这个ARP响应给请求主机。

3.更新ARP缓存:发送主机在接收到ARP响应后将更新自己的ARP缓存表,将目标主机的IP地址和MAC地址进行对应。

这样,下次在发送数据时,可以直接从ARP缓存表中获取目标主机的MAC地址,避免了再次发送ARP请求。

4.ARP缓存表:每个主机都会维护一个ARP缓存表,用来存储IP地址与MAC地址的对应关系。

在发送数据时,发送主机会先查找ARP缓存表,如果有对应的MAC地址,则直接使用;如果没有,则发送ARP请求获取目标主机的MAC地址。

二、ARP数据结构:1.ARP请求数据包格式:-硬件类型:表示网络接口的类型,例如以太网的类型是1-协议类型:表示网络层协议类型,例如IPv4的类型是0x0800。

-硬件地址长度:表示MAC地址的长度,以字节为单位,例如以太网的地址长度是6-协议地址长度:表示IP地址的长度,以字节为单位,例如IPv4的地址长度是4-操作码:表示ARP请求或者ARP响应的类型,例如ARP请求的操作码是1-发送方硬件地址:发送主机的MAC地址。

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用一、引言ARP(Address Resolution Protocol)是一种用于将IP地址解析为MAC地址的协议,它在局域网中起到了重要的作用。

本文将详细介绍ARP协议的原理及其在网络通信中的应用。

二、ARP协议原理1. ARP工作原理ARP协议的工作原理可以分为以下几个步骤:(1)主机A要发送数据给主机B时,首先会检查自己的ARP缓存表中是否有主机B的IP地址对应的MAC地址。

(2)如果ARP缓存表中有对应的MAC地址,则主机A直接将数据帧发送给主机B。

(3)如果ARP缓存表中没有对应的MAC地址,则主机A会发送一个ARP请求广播帧到局域网中的所有主机。

(4)局域网中的所有主机都会收到这个ARP请求广播帧,但只有主机B会响应。

(5)主机B收到ARP请求后,会将自己的MAC地址作为ARP响应帧发送给主机A。

(6)主机A收到ARP响应帧后,将主机B的IP地址和MAC地址添加到自己的ARP缓存表中,并将数据帧发送给主机B。

2. ARP报文格式ARP报文由以下几个字段组成:(1)硬件类型(Hardware Type):表示网络硬件的类型,如以太网、无线局域网等。

(2)协议类型(Protocol Type):表示网络层协议的类型,如IPv4、IPv6等。

(3)硬件地址长度(Hardware Address Length):表示硬件地址的长度,以字节为单位。

(4)协议地址长度(Protocol Address Length):表示协议地址的长度,以字节为单位。

(5)操作码(Opcode):表示ARP请求或响应的类型。

(6)发送方硬件地址(Sender Hardware Address):表示发送方的MAC地址。

(7)发送方协议地址(Sender Protocol Address):表示发送方的IP地址。

(8)目标硬件地址(Target Hardware Address):表示目标主机的MAC地址。

实验一ARP协议实验结果分析

实验一ARP协议实验结果分析

实验一ARP协议实验结果分析ARP(Address Resolution Protocol)是一种网络协议,它用于将IP地址转换成物理地址(MAC地址)。

在计算机网络中,ARP协议是实现IP地址与MAC地址互相映射的重要工具。

本文将分析一个ARP协议实验的结果,以便更好地理解ARP协议的工作原理和作用。

实验一:ARP协议实验ARP协议实验旨在模拟和观察ARP协议的工作过程,并分析实验结果。

实验过程包括两台计算机的通信和网络数据包的传输。

下面将详细介绍实验的步骤和结果。

步骤一:实验设置首先,我们需要搭建一个小型网络环境,包括两台计算机和一个交换机。

两台计算机分别为计算机A和计算机B,它们通过交换机相连。

计算机A的IP地址为192.168.1.100,MAC地址为00:11:22:33:44:55;计算机B的IP地址为192.168.1.200,MAC地址为AA:BB:CC:DD:EE:FF。

步骤二:ARP请求过程在第一次通信时,当计算机A需要与计算机B进行通信时,它首先会检查本地的ARP缓存表,以确定目标IP地址对应的MAC地址是否已经存在。

这里假设该MAC地址不存在。

因为ARP缓存表没有记录,计算机A需要发送一个ARP请求数据包,以获取计算机B的MAC地址。

ARP请求数据包包含了计算机A 的MAC地址、IP地址以及目标IP地址。

当该ARP请求数据包到达交换机时,交换机将其广播到网络中的所有主机。

步骤三:ARP应答过程当计算机B收到ARP请求数据包后,它会检查自己的IP地址是否与请求中的目标IP地址相匹配。

如果匹配成功,计算机B将会发送一个ARP应答数据包给计算机A。

ARP应答数据包包含了计算机B的MAC地址。

此时,交换机会将该ARP应答数据包从广播状态切换为单播状态,并将其仅发送给计算机A。

步骤四:ARP缓存更新计算机A在收到ARP应答数据包后,会将计算机B的IP地址与MAC地址的映射关系添加到本地的ARP缓存表中。

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用

网络协议之ARP协议原理及应用ARP协议原理及应用一、协议简介ARP(Address Resolution Protocol)是一种网络协议,用于将IP地址映射到物理MAC地址。

它是在局域网中实现IP地址与MAC地址之间的转换和映射的重要协议。

本文将详细介绍ARP协议的原理和应用。

二、协议原理1. ARP协议的作用ARP协议的主要作用是解决在局域网中,当主机A需要向主机B发送数据时,如何获取主机B的物理MAC地址。

因为在局域网中,数据包是通过物理MAC地址进行传输的。

2. ARP协议的工作流程(1)主机A发送ARP请求广播包:主机A首先发送一个ARP请求广播包,该包中包含了主机A的IP地址和MAC地址,以及目标主机B的IP地址。

(2)交换机转发ARP请求广播包:当交换机接收到ARP请求广播包时,会将该包广播给局域网中的所有主机。

(3)主机B响应ARP请求:主机B接收到ARP请求广播包后,检查目标IP地址是否与自己的IP地址匹配。

如果匹配,则主机B会发送一个ARP响应包给主机A,该包中包含了主机B的IP地址和MAC地址。

(4)交换机转发ARP响应包:当交换机接收到ARP响应包时,会将该包转发给主机A。

(5)主机A缓存ARP响应:主机A收到ARP响应包后,会将主机B的IP地址和MAC地址存储在本地ARP缓存中,以便将来发送数据时直接使用。

3. ARP协议的缓存机制为了提高ARP协议的效率,主机在收到ARP响应包后会将IP地址和MAC地址的映射关系存储在本地ARP缓存中。

这样,在将来需要发送数据时,就可以直接从缓存中获取对应的MAC地址,而不需要再发送ARP请求广播包。

4. ARP协议的更新机制为了保证ARP缓存中的映射关系的实时性,ARP协议会定期发送ARP请求广播包来更新缓存中的映射关系。

当缓存中的映射关系过期时,主机会发送ARP请求广播包,以获取最新的映射关系。

三、协议应用1. IP地址解析ARP协议主要用于解析IP地址和MAC地址之间的映射关系。

arping 实现原理

arping 实现原理

arping 实现原理ARP(地址解析协议)是一种用于解析IP地址和MAC地址之间映射关系的协议,而arping是一个用于发送ARP请求的工具。

本文将逐步解释arping的实现原理。

首先,我们需要了解ARP的基本原理。

在一个局域网中,每个设备都有一个唯一的MAC地址和一个IP地址。

当一个设备需要与另一个设备进行通信时,它需要知道对方设备的MAC地址。

这时,ARP就派上了用场。

ARP工作在OSI模型的第二层,即数据链路层。

当一个设备想要发送数据包给一个目标设备时,它会首先检查目标设备的IP地址是否在同一子网内。

如果是,则设备会向本地网络发送一个ARP请求,以查询目标设备的MAC 地址。

下面是arping的实现原理的完整步骤:1. 获取目标设备的IP地址:首先,arping需要从用户输入或命令行参数中获得目标设备的IP地址。

这个IP地址将作为ARP请求的目标地址。

2. 获取本地设备的MAC地址和IP地址:arping需要获取本地设备的MAC地址和IP地址,并将其作为ARP请求的源地址。

通常,arping会通过系统调用或底层网络接口来获取这些地址。

3. 创建ARP请求包:使用目标设备的IP地址、本地设备的MAC地址和IP地址,arping构造一个ARP请求包。

该包包含源和目标MAC地址、源和目标IP地址以及ARP操作码。

ARP操作码用于指示ARP请求还是ARP应答。

4. 发送ARP请求包:arping将ARP请求包发送到本地网络上。

为此,它使用底层网络接口提供的API或系统调用。

5. 监听ARP应答:一旦ARP请求包进入网络,目标设备将收到该请求并检查目标IP地址是否与自己的IP地址匹配。

如果匹配,目标设备将发送一个ARP应答包回到源设备。

6. 解析ARP应答:当arping接收到ARP应答包后,它会解析该包以获取目标设备的MAC地址。

7. 输出结果:最后,arping将目标设备的MAC地址显示在终端上,从而提供给用户。

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

湖南文理学院实习报告实习名称:计算机软件技术课程设计教学院部:电气与信息工程学院专业班级:通信工程09103班学生姓名:周大峰学生学号:200916020323指导教师:邵湘怡完成时间:2011年12月29日报告成绩:评阅意见:评阅教师日期目录一.设计要求 (3)二.设计作用与目的 (3)三.运行环境及工具软件 (2)四.系统设计 (3)1.需求分析 (4)2.设计分析 (4)3.具体设计 (4)(1)程序结构 (6)(2)数据描述——结构体类型定义说明 (6)(3)函数功能说明 (6)(4)程序及注释 (8)六.设计心得 (16)七.参考文献 (17)ARP协议的研究与实现一.设计要求设计编写一个以c语言为基础ARP协议,有的下几个基本功能:1)交换网络的嗅探2) IP地址冲突3)阻止目标的数据包通过网关4)通过ARP检测混杂模式节点5)收集资料,全面分析课题,分解问题,形成总体编程思路。

6)深入分析各个小问题,编写各部分程序模块。

7)对于设计中用到的关键函数,要联系问题进行具体介绍。

8)上机调试,确保程序能正确运行。

9)完成设计报告,并进行答辩。

二.设计作用与目的ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。

在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。

但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。

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

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

三.运行环境及工具软件程序运行环境:VC++工具软件:Microsoft V isual C++ 6.0四.系统设计1.需求分析假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2。

该命令会通过ICMP协议发送ICMP数据包。

该过程需要经过下面的步骤:1、应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);2、内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表[1];3、如果存在该IP-MAC对应关系,那么跳到步骤7;如果不存在该IP-MAC对应关系,那么接续下面的步骤;4、内核进行ARP广播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;5、当192.168.1.2主机接收到该ARP请求后,就发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;6、本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;7、内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去;2.设计分析程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。

系统的流程图如下:Arp请求帧发送流图Arp帧应答流程图Arp协议处理流程图3.具体设计(1)程序结构ARP(AddressResolutionProtocol)地址解析协议用于将计算机的网络地址(IP 地址32位)转化为物理地址(MAC地址48位)[RFC826]。

ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。

内核(如驱动)必须知道目的端的硬件地址才能发送数据。

当然,点对点的连接是不需要ARP协议的(2)数据描述——结构体类型定义说明络地址(IP地址32位)转化为物理地址(MAC地址48位)[RFC826]。

ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。

内核(如驱动)必须知道目的端的硬件地址才能发送数据。

当然,点对点的连接是不需要ARP 协议的。

ARP协议的数据结构:typedefstructarphdr{unsignedshortarp_hrd;/*硬件类型*/unsignedshortarp_pro;/*协议类型*/unsignedchararp_hln;/*硬件地址长度*/unsignedchararp_pln;/*协议地址长度*/unsignedshortarp_op;/*ARP操作类型*/unsignedchararp_sha[6];/*发送者的硬件地址*/unsignedlongarp_spa;/*发送者的协议地址*/[6];/*目标的硬件地址*/unsignedlongarp_tpa;/*目标的协议地址*/}ARPHDR,*PARPHDR;使用arp-a命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING 命令后,ARP缓存就会存在一个目的IP的记录了。

当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。

知道了ARP协议的作用,就能够很清楚地知道,数据包的向外传输很依靠ARP协议,当然,也就是依赖ARP缓存。

要知道,ARP协议的所有操作都是内核自动完成的,同其他的应用程序没有任何关系。

同时需要注意的是,ARP协议只使用于本网络。

(2)函数功能说明[WinPCap_NetMonitor.rar] - 采用WinPCap 库开发的网络数据截获程序,并以十六进制、文本显示,用于调试网络程序[Sniffer+Winpcap.rar] - 包的截取源码,使用wincap来辅助实现的,适合学习研究 [wpcap_samples.rar] - WinpCap开发包例子:1. devicelist.c 获得本机网络设备的列表2. cappacket.c 抓取网络中的数据包3. sendpacket.c 发送自己填充的一个数据包4. statics.c 对网络中的数据进行统计5. filter.c 按指定规则对捕获的数据包进行过滤[arp send.rar] - 发送arp包的控制台程序,简单易懂[arp_get_mac.rar] - 发送arp查询包获得远程MAC地址Usage:RmtHost.exe [RemoteIP][CapTx.zip] - 一个mini抓包发包程序我利用pcaplib for windows写的一个抓包发包程序Captx for Win2k/Winnt/Win9x,仅110K,跑起来占内存2M,附有VC源代码,大家有什么特殊需要可以自己修改代码。

使用方法:(1)把整个CapTx目录拷贝到自己的硬盘上(2)安装[SnifferPro.rar] - 1.能够侦听所有进出本主机的数据包完整显示数据包头信息和内容MAC层支持:以太帧网络层支持:IP,arp,RARP,ICMP 传输层支持:TCP,UDP 2. 以十六进制显示报文每个字节内容(包括头和数据),指定某个字段时,使相应字节高亮显示。

如点击IP Source Address4 源程序和注释* File name : Arp.c* By : hugang, hgx2000@#include "armnet.h"#include "..\inc\44blib.h"#include <string.h>extern NODE locnode;static ARP_ENTRY arp_entrys; // 单个 ARP 记录记录一个 IP与 MAC 地址对信息static ARP_ENTRY arp_cache[ARP_CACHE_SIZE]; // ARP 缓存数组,用来记录多个 IP 与 MAC 地址对信息static int arp_chche_cur = 0;//初始化数组变量赋值0int ArpInit(void){memset(&arp_entrys, 0, sizeof(ARP_ENTRY));memset(arp_cache, 0, sizeof(ARP_ENTRY) * ARP_CACHE_SIZE);return 0;}// 一条ARP 记录赋值 IP 与MACint ArpAddEntry(unsigned int ip, unsigned char *mac){memcpy(arp_entrys.mac, mac, MACLEN);arp_entrys.ip = swapl(ip);return 0;}//ARP缓存记录赋值 IP 与MACint ArpAddCache( unsigned int ip, unsigned char *mac){int i;for (i = 0; i < ARP_CACHE_SIZE; i++) {if (ip == arp_cache[i].ip)break;}if (i == ARP_CACHE_SIZE) {i = arp_chche_cur;arp_chche_cur = (arp_chche_cur + 1) % ARP_CACHE_SIZE;}memcpy(arp_cache[i].mac, mac, MACLEN);arp_cache[i].ip = ip;return 0;}//从ARP缓存数组中找到指定 IP地址所对应的 MAC码地址int ArpFindCache(unsigned int ip, unsigned char *mac){int i;for (i = 0; i < ARP_CACHE_SIZE; i++) {if (ip == arp_cache[i].ip) {memcpy(mac, arp_cache[i].mac, MACLEN);break;}}if (i == ARP_CACHE_SIZE) {return -1;}return 0;}// 发送ARP请求int ArpSendReq(ETHERFRAME *efp, NODE *destp){NODE tmpnode;short txlen;tmpnode.ip = destp->ip;memset(tmpnode.mac, 0xff, MACLEN);txlen = MakeArp(efp, &locnode, &tmpnode, ARPREQ); //构造ARP请求数据PutEthernet(efp, txlen);return 0;* Check ARP packet, swap bytes, return -1, 0 if not ARP判断网络数据是否是ARP数据包类型*short IsArp(ETHERFRAME *efp, short len){ARPKT *arp;short dlen=0;if (efp->e.ptype==PCOL_ARP && len>=sizeof(ARPKT)){ /* If protocol OK.. */ SwapArp(efp);arp = (ARPKT *)(efp->edata);if (arp->hrd==HTYPE && arp->pro==ARPPRO)dlen = -1; /* Return non-zero if OK */elsedlen = 0;}return(dlen);}* Make an ARP packet, return its total length*构造一个ARP数据包,并返回总数据长度short MakeArp(ETHERFRAME *efp, NODE *srcep, NODE *destp, unsigned short codetype) {unsigned char i;ARPKT *arp;arp = (ARPKT *)(efp->edata);for(i=0;i<MACLEN;i++){arp->smac[i] = srcep->mac[i]; // Srce ARP ether addrarp->dmac[i] = destp->mac[i]; // Dest ARP ether addr}arp->hrd = HTYPE; // Hware & protocol typesarp->pro = ARPPRO;arp->hln = MACLEN; // Hardware addr lenarp->pln = sizeof(unsigned int); // IP addr lenarp->op = codetype; // ARP opcodearp->dip = GateIp(destp, srcep); // Dest ip addr (maybe gateway) arp->sip = srcep->ip; // Source IP addrSwapArp(efp);return(MakeFrame(efp,srcep->mac,destp->mac, PCOL_ARP, sizeof(ARPKT)));}* Swap byte order of ints in ARP header*// 数据交换转换字节序void SwapArp(ETHERFRAME *efp){ARPKT *arp;unsigned char *p_dip, *p_sip;unsigned int i_dip, i_sip;arp = (ARPKT *)(efp->edata);p_sip = (unsigned char *)&arp->sip;p_dip = (unsigned char *)&arp->dip;i_sip = p_sip[3] + ((unsigned int)p_sip[2]<<8) + ((unsigned int)p_sip[1]<<16) + ((unsigned int)p_sip[0]<<24);i_dip = p_dip[3] + ((unsigned int)p_dip[2]<<8) + ((unsigned int)p_dip[1]<<16) + ((unsigned int)p_dip[0]<<24);arp->hrd = swapw(arp->hrd);arp->pro = swapw(arp->pro);arp->op = swapw(arp->op);arp->sip = READ_PACKED(i_sip);arp->dip = READ_PACKED(i_dip);}* ARP handle*// 提取ARP数据包,添加到 ARP缓存数组,并返回ARP响应数据void ArpRcvPacket(ETHERFRAME *efp){ARPKT *arp;NODE tmpnode;short txlen;arp = (ARPKT *)(efp->edata);tmpnode.ip = READ_PACKED(arp->sip); /* Make ARP response */ 构造ARP 响应数据memcpy(tmpnode.mac, (unsigned char *)arp->smac, MACLEN);DEBUGF(ARP_DEBUG, ("add %x to arp cache\n", tmpnode.ip));ArpAddCache(tmpnode.ip, tmpnode.mac);txlen = MakeArp(efp, &locnode, &tmpnode, ARPRESP); //构造ARP请求DEBUGF(ARP_DEBUG,("Put ARP REPLY\n"));PutEthernet(efp, txlen); /* Send packet */ 返回数据}六.设计心得通过这次课程设计,让我及时将学到的新知识得到了实践,并从中理解了一些编译程序的一般原理和基本实现方法,把死板的课本知识变得生动有趣,激发了学习的积极性,同时也体会到编程语言的强大,它能实现那么复杂的过程,也体会到软件原来就是这样实现其功能的啊!同时,在课程设计当中我也遇到很多问题。

相关文档
最新文档