赞
踩
同一局域网内通信:用ARP来解决
地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常更新动态。
每一个主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
假设:主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A向本局域网上的主机B发送数据包时,先在其在ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查找其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。
若无(B刚入网或A刚加电的情况),A就自动运行ARP,找出B的硬件地址,步骤如下:
1、ARP进程在本局域网上广播发送一个ARP请求分组,ARP请求分组的主要内容是:“我的IP地址是192.168.1.1,硬件地址是0A-11-22-33-44-01。我想知道IP地址为192.168.1.2的主机的硬件地址”。
2、在本局域网上的所有主机上运行的ARP进程都会受到此请求分组。
3、主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下该ARP请求分组,并向主机A发送ARP响应分组,并在这个响应分组中写入自己的硬件地址。其他主机的IP地址由于和请求分组中的IP不匹配,因子都丢弃这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.1.2,我的硬件地址是0A-11-22-33-44-02”。
请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
4、主机A收到B的ARP响应分组后,就在其ARP高速缓存中写入B的IP地址到硬件地址的映射。
ARP高速缓存的好处是:当主机A向B发送数据报时,为了减少网络上的通信量,主机A发送其ARP请求分组是,就把自己的IP地址和硬件地址写入ARP请求分组中,当B收到A的请求分组是,就把A的地址映射写入自己的ARP高速缓存中,以后A和B就可以方便地通信了。但ARP高速缓存有生存时间,不能一直保存。
不同局域网内通信:用ARP和路由器来解决
假设主机A到主机B的通信路径是:主机A(网1)->路由器R1->主机P(网2)->路由器R2->主机B(网3)
1、主机A发送给主机B的IP数据报时,首先A发送ARP请求分组(在网1上广播),找到网1上的路由器R1的硬件地址,剩下的工作由R1来完成。
2、R1把IP数据报转发到网3上的主机B。B与R1不在一个网络,此时R1发送ARP请求分组(在网2上广播),找到连接在网2上的R2的硬件地址,剩下的工作由R2来完成。
3、R2把IP数据报转发到同一网络的主机B,此时R1发送ARP请求分组(在网2上广播),找到目的主机B的硬件地址。
注:为什么不直接用硬件地址进行通信?
由于全世界存在各式各样的网络,它们使用不同的硬件地址。要使这些异构网络相互通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不肯能的。但统一的IP地址相互通信就更简单,因为上述调用ARP的复杂过程是有计算机软件自动进行的,对用户来说是看不见这种调用过程的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。