计算机网络学习--arp学习

本文详细解释了ARP欺骗的概念,包括主机欺骗和网关欺骗的过程,以及这些欺骗手法如何导致网络连接中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

https://i-blog.csdnimg.cn/blog_migrate/aabf414ed90ca57d673b72861e23a00e.jpeg
硬件类型:指明硬件的类型,以太网是1。
协议类型:指明发送者映射到数据链路标识的网络层协议的类型;IP对应0x0800。
硬件地址长度:也就是MAC地址的长度,单位是字节,这里是6。
协议地址长度:网络层地址的长度,即IP地址长度,单位是字节,这里为4。
操作:指明是ARP请求(1)还是ARP应答(2),这个可以在图2和图3中相应位置看出。

arp欺骗:
arp欺骗分为主机欺骗和网关欺骗,

一般来说,我们的网络环境都是N台主机通过网关的NAT功能出去连接Internet的。也就是说所有的数据包都要流经网关。
现在假设有网关、主机A和主机B,主机A是欺骗者,而主机B是被欺骗者。

主机欺骗:主机A通过某种手段向主机B发送ARP报文:网关的MAC地址是xx-xx-xx-xx-xx-xx,而这个地址是主机A随便写的一个mac地址,主机B听到了这个消息后,以后所有的报文都忘这个虚假的地址发送,因为这个地址本身就是不存在的,所以主机B理所当然得也就找不到网关了,现象就是掉线!

网关欺骗:过程和上面的也差不多,不过主机A是把报文扔给网关了,内容是:主机B的mac地址是yy-yy-yy-yy-yy-yy,这个地址是虚假的,那网关听信了主机A的虚假内容,于是从Internet发来给主机B的所有数据包,网关都发往这个虚假的yy-yy-yy-yy-yy-yy,而主机B还在那边等着网关送给它的报文呢,不过网关一直把主机A告诉给它的虚假地址当作是主机B的地址,于是乎,主机B又断线了!



### 关于ARP协议的定义工作原理 ARP(Address Resolution Protocol,地址解析协议)是一种在网络层和数据链路层之间实现IP地址到MAC地址映射的关键协议[^1]。具体而言,在局域网环境中,当设备需要向另一台设备发送数据包时,它不仅需要知道目标设备的IP地址,还需要获取其对应的物理地址(即MAC地址)。ARP的作用正是完成这一映射过程。 #### ARP协议的工作流程 ARP协议通过广播请求消息来查询目标设备的MAC地址。以下是该过程的具体描述: - 当源主机需要目标主机通信但尚未缓存目标主机的MAC地址时,会发起一个ARP请求。 - 此请求以广播形式发送至整个子网中的所有设备,询问哪个设备拥有指定的目标IP地址。 - 如果某台设备发现自己匹配此IP,则回应自己的MAC地址给源主机。 - 源主机接收到响应后更新本地ARP缓存表,并利用获得的MAC地址构建帧头以便继续传输数据[^2]。 此外需要注意的是,为了提高效率并减少重复查询操作,每台参通信的机器都会维护一份临时性的ARP高速缓冲区记录最近使用的对应关系;不过这些条目通常具有时效限制,过期之后需重新验证有效性。 ```python import socket import struct def create_arp_request(src_ip, dst_ip): # Convert IPs to bytes (for demonstration purposes only; actual implementation may vary) src_ip_bytes = socket.inet_aton(src_ip) dst_ip_bytes = socket.inet_aton(dst_ip) # Example of constructing an ARP request packet structure arp_packet = b'\x00\x01' # Hardware type: Ethernet (1) arp_packet += b'\x08\x00' # Protocol type: IPv4 (0x0800) arp_packet += b'\x06' # Hardware address length: 6 bytes (Ethernet MAC addresses are 6 bytes long) arp_packet += b'\x04' # Protocol address length: 4 bytes (IPv4 addresses are 4 bytes long) arp_packet += b'\x00\x01' # Operation code: Request (1) # Source hardware and protocol addresses would be added here... return arp_packet example_req = create_arp_request('192.168.1.1', '192.168.1.10') print(example_req.hex()) ``` 上述代码片段展示了如何创建一个简单的ARP请求报文结构的一部分作为例子说明用途仅限学习参考实际应用中应当遵循更严格的标准规范编写相应程序逻辑处理细节部分未完全展示出来。 ### 总结 综上所述,ARP 协议主要负责解决同一局域网内的 IP 地址到 MAC 地址之间的动态映射问题,从而保障基于 TCP/IP 的网络通讯能够顺利进行。同时了解它的基本工作机制有助于深入理解计算机网络运作机制以及排查可能出现的各种连通性故障等问题所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值