网络协议ARP协议介绍

Posted 鱼酱2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议ARP协议介绍相关的知识,希望对你有一定的参考价值。

💪本节内容:Arp协议介绍、工作流程、功能及命令行,项目C++结构体定义

😏【Qt6网络抓包工具项目实战】总导航目录(建议收藏书签~~~)

✌️ part1
😏【Qt6网络抓包工具项目实战】1.1Qt6.2.2环境搭建(免费)
😏【Qt6网络抓包工具项目实战】1.2Qt6项目工程创建(免费)
😏【Qt6网络抓包工具项目实战】1.3NMap、NPacp、WinPacp库介绍(免费)
😏【Qt6网络抓包工具项目实战】1.4Qt6引用Npacp第三方库项目目录设计(免费)
😏【Qt6网络抓包工具项目实战】1.5封装通用线程安全单例模板
😏【Qt6网络抓包工具项目实战】1.6使用Npacp获取网卡信息
😏【Qt6网络抓包工具项目实战】1.7项目测试类设计与开发
😏【Qt6网络抓包工具项目实战】1.8多线程框架设计与开发
😏【Qt6网络抓包工具项目实战】1.9主界面显示抓包的16进制数据功能开发

✌️ part2
😙【Qt6网络抓包工具项目实战】2.1以太网帧结构介绍
😙【Qt6网络抓包工具项目实战】2.2ARP协议介绍(免费)
😙【Qt6网络抓包工具项目实战】2.3IPV4协议介绍(免费)
😙【Qt6网络抓包工具项目实战】2.4ICMP协议介绍
😙【Qt6网络抓包工具项目实战】2.5TCP协议介绍
😙【Qt6网络抓包工具项目实战】2.6UDP协议介绍
😙【Qt6网络抓包工具项目实战】2.7IPV6协议介绍
😙【Qt6网络抓包工具项目实战】2.8MAC帧、ARP、TCP、IPV4、IPV6、UDP、ICMP协议结构体汇总
😙【Qt6网络抓包工具项目实战】2.9网卡数据解析并显示

✌️ part3
😬【Qt6网络抓包工具项目实战】3.1选择网卡适配器界面开发
😬【Qt6网络抓包工具项目实战】3.2抓包过滤器功能开发
😬【Qt6网络抓包工具项目实战】3.3主界面数据包修改为Table显示
😬【Qt6网络抓包工具项目实战】3.4开发点击数据表格生成网络树形结构
😬【Qt6网络抓包工具项目实战】3.5python3 tcp客户端、服务端编写(免费)
😬【Qt6网络抓包工具项目实战】3.6python3 udp客户端、服务端编写(免费)
😬【Qt6网络抓包工具项目实战】3.7 TCP三次握手分析(免费)
😬【Qt6网络抓包工具项目实战】3.8 TCP四次挥手分析(免费)
😬【Qt6网络抓包工具项目实战】3.9 UDP数据分析分(免费)
😬【Qt6网络抓包工具项目实战】3.10 TCP数据分析分(免费)

1.ARP (地址解析协议)

   根据IP地址获取物理地址的一个TCP/IP协议。

2.ARP工作流程

  1.主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
  2.收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;

由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

  • ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

3.ARP功能

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程

另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。

在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

4.ARP命令

C:\\Users\\Administrator>arp

显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            通过询问当前协议数据,显示当前 ARP 项。
                如果指定 inet_addr,则只显示指定计算机
                的 IP 地址和物理地址。如果不止一个网络
                接口使用 ARP,则显示每个 ARP 表的项。
  -g            与 -a 相同。
  -v            在详细模式下显示当前 ARP 项。所有无效项
                和环回接口上的项都将显示。
  inet_addr     指定 Internet 地址。
  -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
  -d            删除 inet_addr 指定的主机。inet_addr 可
                以是通配符 *,以删除所有主机。
  -s            添加主机并且将 Internet 地址 inet_addr
                与物理地址 eth_addr 相关联。物理地址是用
                连字符分隔的 6 个十六进制字节。该项是永久的。
  eth_addr      指定物理地址。
  if_addr       如果存在,此项指定地址转换表应修改的接口
                的 Internet 地址。如果不存在,则使用第一
                个适用的接口。
示例:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09.... 添加静态项。
  > arp -a                                  .... 显示 ARP 表。

C:\\Users\\Administrator>

5.ARP协议总结

  • ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。
  • 在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。
  • 一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

6.ARP的C++结构体定义

struct arp_header

    quint16 ar_hw;						//硬件类型
    quint16 ar_prot;						//协议类型
    quint8 ar_hln;						//硬件地址长度
    quint8 ar_pln;						//协议地址长度
    quint16 ar_op;						//操作码,1为请求 2为回复
    quint8 ar_srcmac[6];			//发送方MAC
    quint8 ar_srcip[4];				//发送方IP
    quint8 ar_destmac[6];			//接收方MAC
    quint8 ar_destip[4];				//接收方IP

以上是关于网络协议ARP协议介绍的主要内容,如果未能解决你的问题,请参考以下文章

ARP协议

网络层协议及ARP攻击

网络层协议介绍及概述

网络安全概述

网络七层协议之部分协议详解

计算机网络-----ARP协议