ARP封包与邻居协议
ARP封包与邻居协议
ARP封包
ARP封包中L3地址的地址类型有unicast,broadcast,multicast,类型保存在neighbour结构中(neigh->type),可以通过inet_addr_type可以确定地址类型,ARP对每个类型的处理:
unicast : 这正是常见的ARP解析的solication请求。
broadcast:arp将L3广播地址映射为与具体设备有关的L2广播地址。
multicast:ARP使用函数arp_mc_map从L3多播地址导出L2多播地址,ARP不需要生成solication请求,因为L2地址可以根据硬件类型(Ethernet,Token Ring等)的公式推算得到。
Ethernet帧中包含了发送方硬件地址两次:一次是ethernet帧头,一次是在ARP封包中。
当主机充当ARP代理角色时,这两个值会不同了。
另外:
ARP 邻居协议是在IPV4中采用的。IPV6中用的是ND邻居协议居多
邻居协议
在现在的IP网络中使用两个邻居协议,绝大多数系统使用IPv4中的ARP协议,另一个更通用的协议是邻居发现协议(Neighbor Discovery,ND),它是为IPv6开发的,为了能在专有网络中使用,linux内核支持其它邻居协议,如: DECnet使用的邻居协议。
邻居协议代理是什么呢?
若一台主机将发往另一台主机的流量拦截下来,并代替后者处理这些流量,那么这台主机就是代理。
邻居协议的代理服务器是一台主机,对请求不属于自己的地址的solication请求,它能够代替拥有这些地址的主机做出应答,因为有了代理,位于不同LAN中的主机可以互相通信,就好像它们在同一个LAN中。
代理举例:
http代理,也就是一台http缓存服务器,它将发往受访问的Web的请求截断,然后将保存自己缓存中的的那些服务器上的网页提供给请求者,这种方式可以减少网络流量。