您的位置:首页 > 理论基础 > 计算机网络

《深入理解Linux网络技术内幕》阅读笔记(二十五)

2015-10-13 00:03 513 查看






有时候,发送方生成一个ARPOP_REQUEST是为了通知接收方一些信息,而不是请求信息。这种封包就称为无端ARP,它通常用下面列出的情况中:

1.L2地址发生变化。

2.重复地址探测。

3.虚拟IP(用于LVM服务)。

主机可以使用无端ARP来检测重复地址的存在,如果你发出一个目的地址是你自己地址的ARP请求,那么只有当存在一台与你有相同IP配置的主机时,才会收到应答。如果不存在重复地址,就收不到任何应答。













如上图所示,发出请求的主机会收到两个应答。一个来自正确的L2地址的NIC(eth0),而另一个是属于另一个NIC地址(eth1)。至于哪个地址会进入该主机的ARP缓存是不确定的。







如上图所示,当一台主机有多个NIC连接到同一个LAN,且配置在同一个IP子网上时,这个选项可以控制一个接口是否对入口ARPOP_REQUEST做出应答。上述情况下,每个NIC会收到一个ARPOP_REQUEST封包的拷贝,通过这个选项你可以只选择一个接口来应答。





假设主机A现在需要向主机C传输一些东西,但是没有其L2地址。主机A就会发出一个ARPOP_REQUEST广播包,主机B的eth0和eth1接口,以及主机C都会收到该包。主机B不应该对这个ARPOP_REQUEST作出应答,因为主机C自己可以应答。

正如你所看到的,需要一种方来告诉ARP代理服务器,它的两个接口都在同一个广播域内,因此,两个ARPOP_REQUEST包都不应该被处理。通过给连在同一个LAN上的接口指定一个称为medium ID的ID包就可以解决这个问题(只有这个设备的Medium ID和入口设备的Medium ID不同时,主机才会应答该请求)。













回环接口是一种特殊的情况。其发送和接收的封包用PACKET_LOOPBACK类型识别。因为这个接口是虚拟的,并没有实际的硬件地址,因此不需要使用ARP协议。





请求方达到了从ARPOP_REPLY封包中学到目的地址的主要目标,这个过程称为主动学习。而收到ARPOP_REQUEST封包的目的主机从请求封包中也知道了发送方的地址,这个过程称为被动学习。

DHCP服务器或客户端可以随意对DHCP分配一个IP地址发出一个ARPOP_REQUEST,用于双向监测是否相同的地址被错误地用在另一个主机上。这种特殊的ARPOP_REQUEST送出时,其源IP地址是0.0.0.0,以便它不会给予子网内的其它主机引来任何麻烦。



锁定期:它只是一种简单的超时机制,负责处理对同一个ARPOP_REQUEST封包,主机可能收到多个ARPOP_REPLY封包的偶然事件。如果某种配置错误或在同一个LAN中有多个ARP代理服务器,就可能发生这种情况。对此,arp_process函数只会对第一个应答做出反应,而拒绝后面的应答。

目的NAT也称为路由NAT(Route NAT),允许主机定义伪地址(NAT):主机检测到目的地是这些伪地址的入口封包后,将其转发到另一些地址。Linux支持所有的NAT。SNAT,DNAT,伪装等都是用Netfilter实现的。



路由器RT配置了一个伪NAT地址10.0.0.5.无论RT什么时候收到目的地址是10.0.0.5的流量,它都将封包的目的地址改成10.0.1.10,并转发到该地址对应的主机。当然,这个配置要保证发向流量也可以处理。





路由器和ARP代理服务器完成的任务是不同的:路由器将子网分为多个LAN,而ARP代理服务器将不同的LAN合并为单一子网。

包含一台ARP代理服务器的网络拓扑结构要记录大量的solicitation请求和应答。当要代理的主机数量很多时,solicitations占用的网络带宽会相当大。



a.从LAN1到LAN1.(例如,从主机D到E):由于主机D和主机(-。-;)在同一个子网内(10.0.0.0/24),它就可以发出一个对IP地址10.0.0.3的solicitation请求。在LAN1中的所有主机都会收到这个请求,但只有主机E会向主机D应答,表明自己的L2地址。注意,尽管在eth0上已启动了代理功能,但是RT不会应答。原因是RT在eth0(LAN1)上收到solicitation封包,但它知道10.0.0.3位于发送方的子网内,因此不需要拦截该请求:主机E所处的网络,正是solicitation请求生成的网络,因此主机E自己可以应答。

b.从LAN1到LAN1中的非法IP地址。(例如,从主机D到10.0.0.128):从A2的角度看,10.0.0.128是一个合法的主机地址;从RT的角度看,它不是(是一个网络地址)。没有人会做出应答这个请求,不管RT是否是代理。

c.从LAN1到LAN2(例如主机D到主机A):由于10.0.0.130所属的主机位于另一个LAN中,它不会收到这个请求并应答。但是,如果RT在eth0上配置了代理功能,它会用eth0接口的地址应答。这表示当主机D要往主机A发送数据时,它实际上是发到了RT,然后RT再转发到主机A。如果主机A请求主机D的地址,就是相反的过程。

d.从LAN1到LAN3(例如从主机D主机F):由于主机F和主机D不在同一个子网内,且在主机D中没有定义访问LAN3的路由,于是其内核的IP层会用一个消息作为应答,该消息表明没有达到主机F的可用路由。主机D甚至不会产生solicitation请求。

WOL(wake on lan)通过给一个NIC发送一个特殊类型的帧,就能唤醒一个处于待机模式的系统。在各种帧的类型中,有唤醒功能的只有ARP帧。该功能是在硬件级实现的,因为当系统还在待机模式时,CPU上没有运行能处理输入封包的设备驱动程序。带有WOL功能的NIC需要有其自己的电源输入,以便能够扫描到这些特殊的帧。



ARPD:







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: