【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP

第23章      RL-TCPnet之地址解析协议ARP

本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家对ARP也有个基础的认识。

(本章的知识点主要整理自网络)

23.1  初学者重要提示

23.2  ARP基础知识参考资料

23.3  ARP基础知识点

23.4  ARP函数

23.5  总结

23.1  初学者重要提示

通过前面几个章节对TCP和UDP的学习,需要初学者对ARP的基础知识点也有个认识。

23.2  ARP基础知识参考资料

为了对TCP和UDP有更全面的认识,需要对ARP协议的一些基础知识有个了解。大家可以从以下地址获得ARP协议基础知识:

对于初学者来说,学习上面四个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍。

23.3  ARP基础知识点

(这里的知识点整理自上面的参考资料地址)

教程这里也对ARP的基础知识做个介绍,方便大家先有个大概的认识。

23.3.1 ARP简要说明

ARP(Address Resolution Protocol,地址解析协议)基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被NDP(Neighbor Discovery Protocol,邻居发现协议)所替代。

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

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

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

23.3.2 ARP工作过程

工作条件:

  • 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01。
  • 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02。

工作过程:

当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  • 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
  • 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  • 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  • 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  • 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

23.3.3 ARP缓存表

ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址到MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。

电脑端的ARP缓存表获取方法如下:

  • WIN+R组合键打开“运行”窗口,输入cmd。
  • 弹出的命令窗口中,输入arp -a。
  • 输入arp -a后,回车。

这就是电脑端的ARP缓存表。

23.3.4 ARP报文格式

为了把IP地址映射到48位以太网地址用于传输,需要一个体现地址转换协议的包格式。下面是含以太网首部数据的ARP报文格式:

  • 以太网传输层
    • 目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
    • 源以太网地址:发送方MAC地址。
    • 帧类型:以太类型,ARP为0x0806
  • 以太网报文数据
    • 硬件类型:如以太网(0x0001)、分组无线网。
    • 协议类型:如IP网际协议(0x8000)、IPv6(0x86DD)。
    • 硬件地址长度:每种硬件地址的字节长度,一般为6(以太网)。
    • 协议地址长度:每种协议地址的字节长度,一般为4(IPv4)。
    • 操作码:1为ARP请求,2为ARP回显,3为RARP请求,4为RARP应答。
    • 源硬件地址:n个字节,n由硬件地址长度得到,一般为发送方MAC地址。
    • 源协议地址:m个字节,m由协议地址长度得到,一般为发送方IP地址。
    • 目标硬件地址:n个字节,n由硬件地址长度得到,一般为目标MAC地址。
    • 目标协议地址:m个字节,m由协议地址长度得到,一般为目标IP地址。

23.3.5 ARP欺诈/ARP攻击

ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议的一种攻击技术。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接。

ARP欺骗是黑客常用的攻击手段之一,ARP欺骗分为二种:

  • 一种是对路由器ARP表的欺骗。

第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。

  • 另一种是对内网PC的网关欺骗。

第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,网络掉线了。

一般来说,ARP欺骗攻击的后果非常严重,大多数情况下会造成大面积掉线。有些网管员对此不甚了解,出现故障时,认为PC没有问题,交换机没掉线的“本事”,电信也不承认宽带故障。而且如果第一种ARP欺骗发生时,只要重启路由器,网络就能全面恢复,那问题一定是在路由器了。为此,宽带路由器背了不少“黑锅”。

----------------------------------

对于这个知识点,涉及到的知识点比较广泛,我们这里就为大家介绍这么多,更多相关知识可在如下地址学习:

23.4 ARP函数

关于ARP,RL-TCPnet提供了如下三个函数:

  • arp_cache_ip

函数功能:根据已知的IP地址查找ARP缓存表中是否存在相应的MAC地址,如果没有的话,会强制RL-TCPnet网络协议栈进行解析。协议栈会向网络发一个arp请求,得到响应的话,会把IP地址和返回的MAC地址存到ARP缓冲区。

  • arp_cache_mac

函数功能:根据已知的MAC地址查找ARP缓存表中是否存在相应的IP地址,如果没有的话,会强制RL-TCPnet网络协议栈进行解析。协议栈会向网络发一个arp请求,得到响应的话,会把MAC地址和返回的IP地址存到ARP缓冲区。

  • arp_get_info

函数功能:根据IP地址返回ARP缓存表中记录的对应MAC地址或者根据MAC地址返回ARP缓存表中记录的对应IP地址,均支持。

关于这3个函数的详细讲解及其使用举例可以看教程第 3 章 3.4 小节里面说的参考资料 rlarm.chm 文件,我们这里就不再专门做例子进行说明了(注意,下面这几个函数都不支持重入,也就是不支持多任务):

23.5 总结

本章节就为大家讲解这么多,更多ARP的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『中级篇』docker学习必会网络基础(24)

请求源主机或者其它路由器将此 IP 数据包发送给 NAT, 然后由 NAT 将向外发送的数据包的地址解析如下:      

8920
来自专栏Java进阶架构师

动图详解TCP的三次握手与四次挥手

原文:https://blog.csdn.net/qzcsu/article/details/72861891

17140
来自专栏编程坑太多

『中级篇』docker学习必会网络基础(24)

请求源主机或者其它路由器将此 IP 数据包发送给 NAT, 然后由 NAT 将向外发送的数据包的地址解析如下:      

15690
来自专栏landv

烽火2640路由器命令行手册-02-接口配置命令

本文描述用于不同类型接口的基本命令,这些命令对应于手册包括的接口配置任务,有关配置要点,参考下面列出的各项内容。

14620
来自专栏北京马哥教育

TCP恋爱史:三次握手和四次分手

TCP恋爱史:三次握手和四次分手 ---- 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 以我们最近出现的 TCP协议非常重...

27930
来自专栏王亚昌的专栏

开多少个FCGI进程才合适

    现在网站很多都用FCGI布署到WEB SERVER上提供服务,但同一个服务的FCGI开多少个进程才合适呢?

9910
来自专栏杨龙飞前端

使用webpack打包vue工程

25370
来自专栏后端技术探索

nginx对IP和目录限速

从Nginx配置与应用详解专题的投票结果来看,Nginx已经是目前仅次于APache和MS IIS的Web服务器。Nginx优秀的高并发支持和高效的负载均衡是我...

9710
来自专栏FreeBuf

MOTS攻击技术分析

背景 我们经常遇到这样一个场景:在用户现场通过端口镜像方式对流量做镜像,用来分析数据包或者审计的时候,疑心较大的用户总是怀疑其数据会被篡改或客户端信任的结果并非...

27580
来自专栏用户画像

第41章 交换机端口安全技术

187. 交换机SWA 的端口E1/0/1 连接有PC。如果想要使交换机通过802.1X 协议对PC 进行本地验证,则需要在交换机上配置哪些命令?

16330

扫码关注云+社区

领取腾讯云代金券