首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图

arp协议怎样得到响应?解决方案

2014-01-23 来源:读书人网 【读书人网(Reader8.cn):综合教育门户网站】
arp协议怎样得到响应?最近在看TCP/IP的东西,ARP协议里讲到:当源主机需要将一个数据包要发送到目的主机时,

arp协议怎样得到响应?
    最近在看TCP/IP的东西,ARP协议里讲到:当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
    那么请问:很多情况下,目的IP地址不在本地网段中,请问怎么能得到回应呢?如果不能得到,那我们的计算机怎么通过网络连接远程主机通讯呢?
[解决办法]
我觉得有一定你需要明白。就是在以太网环境中(也就是2层帧),是逐跳进行数据帧传输的。而对于目的IP地址不是本网段中的主机A,我们是不需要知道他的MAC地址的,我们只需要知道哪个MAC地址(主机B)作为转发可以达到A,当有数据要去往A的时候,先去往B,由B来寻找路径到达A。其实B也就是我们说的网关。只要去往A的IP地址是正确,那么就有可能找到主机A。
我举个例子吧:
我是C,网关为B,要去往A。那么我应用程序便构造了一个 【目的IP是A 源IP地址是C】 的3层数据包。当我要发出去的时候,我先看自己的路由表(一张维护的去那个网段,对应哪个出口的表),有直接从那个出口发出去。
如果没有,我就要先找到我的网关(一般我们PC属于这种),这时候,我会发ARP请求,B地址(网关)的MAC是多少,B地址一单播的ARP应答回应我。这是我就记下了B IP-MAC映射表,去往A的数据封装到2层帧,这时候【目的MAC地址是B的MAC地址 源MAC地址是C的MAC地址】(以太网实际上是依靠MAC来寻址的)。从而把数据发出去,由B来帮C寻找去往A的路径。
以后,每次外出的数据都先根据MAC映射表发到B,在由B来为你寻找A的地址。每隔一段时间主机C也会ARP广播,一遍获取网关MAC地址。
楼主明白了吧。
还是不懂的话,可以下载一个抓包工具分析。wireshark挺好的,Windows Linux下都试用。

[解决办法]
对,只有同网络内才能通过arp获得mac,不同网络的话,数据是通过网关转发出去的,不是直接跟远端主机通信的
[解决办法]
A:本机           B:A的网关(交换设备,服务器等)            C:与A不在一个网段的目的机器
A与C通信过程如下:
1. A 查找本地是否有C的MAC地址。 由于不在同一个网段,本地缓存中不存在C的MAC。
2. A arp请求 C的MAC地址。  由于不在同一个网段,无法收到C的arp响应。
3. A确定与C不在同一网段,需要走IP路由, 查找本地路由表。找到下一跳地址,一般为默认网关地址B的IP。
4. A 查找本地是否有B得MAC地址。如果没有,则通过ARP请求B的MAC。
5. A 找到 B的MAC地址以后,将需要发送给C的IP报文发送给 B(即:目标MAC填写为B的MAC,但是目标IP仍然为C的IP地址)。
6. B 收到以上报文以后,按照路由找该IP报文下一跳地址。
7. 经过逐跳转发,最终该IP报文到达 C 。