ARP存在的目的:
首先,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。
报文需要有源MAC和目的MAC,才能在物理网络上发送。
另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。
所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。
于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)。
ARP缓存表:
每台工作在网络上的主机都有一个ARP缓存表。
即一个IP地址和MAC地址一一对应的表格。
当该台主机与网络上其他主机通信是,他首先会通过IP去表格中寻找,IP地址对应的物理MAC地址。
如果找到,封包发送数据。
如果没有找到,则通过ARP去询问对方MAC地址。
主机A就会在网络上发送一个广播(MAC:ff:ff:ff:ff:ff:ff),A主机MAC地址是“主机A的MAC地址”,
这表示向同一网段内的所有主机发出这样的询问:“我是192.168.1.5,我的硬件地址是"主机A的MAC地址".
请问IP地址为192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,
才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,
它就可以向主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),
下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。ARP缓存表采用了老化机制(即设置了生存时间TTL),
在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
具体程序实现,参看ARP.c
ArpRequest 发送ARP请求
ArpEcho 收到ARP回复后对ARP缓存表进行更新。
ArpAnswer
UpdateArpTab
FindMac
本文来源:https://www.wddqw.com/doc/7b489a09844769eae009eda4.html
正在阅读:
个人总结-ARP的实现01-01
女儿的备注名称大全01-01
描写工作细致的好句01-01
对近十年来韦应物生平及作品研究观点的评述01-01
2020最新银行反假货币宣传月活动总结01-01
请假条模板下载【标准版4篇】_请假条01-01
我的梦想手抄报简单好看5张01-01
电影泰坦尼克号的经典台词01-01