硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2277|回复: 2
收起左侧

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

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2017-11-15 16:36:05 | 显示全部楼层 |阅读模式
第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协议基础知识:
1、RFC826地址 : ftp://ftp.rfc-editor.org/in-notes/rfc826.txt  
2、wiki百科中文版:地址链接(这个是超链接)
3、wiki百科英文版:地址链接(这个是超链接)
4、百度百科:地址链接(这个是超链接)
对于初学者来说,学习上面四个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍。

努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-11-15 16:37:44 | 显示全部楼层
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工作过程


    工作条件:
1、主机AIP地址为192.168.1.1MAC地址为0A-11-22-33-44-01
2、主机BIP地址为192.168.1.2MAC地址为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缓存表获取方法如下:
(1)WIN+R组合键打开“运行”窗口,输入cmd。
23.1.png

(2)弹出的命令窗口中,输入arp -a
23.2.png

(3)输入arp -a后,回车。
23.3.png


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

23.3.4 ARP报文格式


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

1、以太网传输层
(1)目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
(2)源以太网地址:发送方MAC地址。
(3)帧类型:以太类型,ARP0x0806
2、以太网报文数据
(1)硬件类型:如以太网(0x0001)、分组无线网。
(2)协议类型:如IP网际协议(0x8000)、IPv60x86DD)。
(3)硬件地址长度:每种硬件地址的字节长度,一般为6(以太网)。
(4)协议地址长度:每种协议地址的字节长度,一般为4IPv4)。
(5)操作码:1ARP请求,2ARP回显,3RARP请求,4RARP应答。
(6)源硬件地址:n个字节,n由硬件地址长度得到,一般为发送方MAC地址。
(7)源协议地址:m个字节,m由协议地址长度得到,一般为发送方IP地址。
(8)目标硬件地址:n个字节,n由硬件地址长度得到,一般为目标MAC地址。
(9)目标协议地址: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欺骗发生时,只要重启路由器,网络就能全面恢复,那问题一定是在路由器了。为此,宽带路由器背了不少“黑锅”。
----------------------------------
        对于这个知识点,涉及到的知识点比较广泛,我们这里就为大家介绍这么多,更多相关知识可在如下地址学习:
1、wiki百科中文版:地址链接(这个是超链接)。
2、wiki百科英文版:地址链接(这个是超链接)。
3、百度百科:地址链接(这个是超链接)。





努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
 楼主| 发表于 2017-11-15 16:38:22 | 显示全部楼层
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.png



23.5 总结

        本章节就为大家讲解这么多,更多ARP的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。
努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 03:00 , Processed in 0.164612 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表