http://www.study-area.net/menu1.htm
或许您已经被一大堆的TCP/IP搞得头昏脑胀了但遗憾的是要头痛的事情还会继续来呢
哦~~my g**!!
好啦提起精神啦~~~ ARP协定就是我们下一个要讨论的协定
Address Resolution Protocol负责的是在IP地址和网卡实体地址(MAC)之间的转换。如果您对网路七层协定有比较清晰的理解的话应该知道各个层级之间都使用其各自的协定。
我们常将TCP/IP当一个协定来看待但其实TCP是工作於传送层而IP则工作於网路层的。TCP/IP 协定好比是程式和网路之间的中间人一样省却了双方的许多烦恼。
我们在“网路概论”中已经知道在不同的网路形态中会使用不同的协定来进行节点间的资料传送如Ethernet 的 CSMA/CD(IEEE802.3) 和 Token Ring 的 Token Pass(IEEE802.5) 。那些协定可以说是工作於 DataLink 层级的。我这里不再重讲述它们的工作原理了有兴趣请往前翻翻看吧。
我在这里也不打算探讨程式和TCP之间是怎样沟通的但会简略的看看封包是如何从一个IP传到另一个IP。
ARP在本地网路的运用
以使用TCP/IP 的 Ethernet 网路为例每台电脑都有一个ARP表格(ARP Table)存放於ARP快取记忆区(ARP Cache)之中它主要记录着同一网路中各节点的 IP 和 MAC 地址的对应。
当机器有一个TCP/IP封包送出去的时候
会先看看目的地址是否属於同一网路里面(还记得上面的netmask和IP的作用吗)
如果是的话则会检查ARP 表格有没有对方的IP和MAC对应
如果有的话就直接将封包传到该MAC去
如果ARP表格上面找不到对方的对应则会向网路发出一个ARP Request广播封包查询对方的MAC地址这个封包会包含发送端的MAC资料
当网路上面的机器接听到该广播看看IP栏位是否和自己的一致如果不是则忽略
如果是则会先将发送端的MAC和IP资料更新到自己的ARP表格去
然後再回应一个ARP Reply封包给对方
当发送端接到ARP Reply之後也会更新自己的ARP表格
然後就可以用此纪录进行传送了。
否则宣告传送失败。
ARP 的查询过程可参考下图
跨网路环境下的ARP
我们已经知道如果Net ID不同的IP传送都要经过router才可以做到。那麽当机器发现封包不是传给本地网路的时候那麽它就要把封包传给router了。记住router必须有一个界面和发送端在同一网路这个router我们可以用DHCP来指定也可以在各台机器上面手工指定。如果本地网路同时还和好几个网路连接也就是说有好几个router可以选择我们也必须一一在各机器上的IP环境中指定好。(我们将在下面的RIP再详细讨论)。
ARP 的跨网过程粗略如下
先检查封包是否寄给本地网路的
如果不是将之送给router
如果ARP表格还没有router的记录的话利用ARP Request来进行更新
然後router会判断下一个router的MAC再把封包传出去
当封包传到目的地的routerrouter也一样检查ARP表格或利用ARP Request找到目的主机的MAC
最後将封包传给目的IP地址。
查看ARP记录
如果你要查询一下ARP表格在您的Windows98中你可以使用这个命令
C:\>arp -a
Interface: 192.168.0.15 on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.17 00-80-c7-47-8c-9a dynamic
192.168.0.7 00-80-c7-47-8c-9a dynamic
这样您就可以看到看IP和MAC的对应有些系统会用主机名称和MAC对应但如果在IP网路中归根结底是要转换成IP才知道如何传递封包。
待一会等你和多几台机器连线之後再使用这个命令你就会看到ARP表格的内容会多起来了。不过这些在Cache产生的纪录如果2分钟之内没再被使用系统就会将之删除掉如果有被使用到那麽检查期则会变成10分钟。我们称这样的纪录为动态式(Dyanmic)记录。
当我们的本地网路有些IP地址是经常使用的比如档案伺服器和router等为了减少ARP Request的广播我们可以用
arp -s IP MAC
(如arp -s 192.168.1.2 48:54:E8:27:75:77)
来产生一笔静态(Static)ARP记录。
这里我还要指出一点的是在一个MAC地址上您可以对应好几个IP地址我们管这样的设定为IP Aliase或Virtual Host当您需要在单一主机上面建立好几个虚拟网站的时候您就要用到了。
RARP和Proxy ARP
Reverse ARP是用来从MAC反查询IP地址的一些系统服务将会用到这个功能。例如您的无磁碟 (diskless) 工作站使用 BOOT ROM 来登录网路开始它并不知道自己的 IP 是什麽。那它可以先送出一个 RARP 封包假如网路上有其它主机被设定成可以回答 RARP 查询并且知道它的 IP 的话就可以对之做出回应。这样无磁碟工作站也就知道自己的 IP 地址了。
RARP 的查询过程可参考下图
通常每台机器只会回答有关本身的IP地址查询但也可以代其它机器的IP做出回应我们称这样的功能为 Proxy ARP。Proxy ARP有时候可以代理下一站的路由器回答ARP查询同时在PPP的拨接网路上也是非常有用的功能。