ARP协议的问题
我在设想如果a主机要访问b主机,是远程访问,需要经过若干个路由器跳转,才能到达。
按照arp协议的规定,它应该只能在局域网里访问,既然是远程访问,势必要用到路由器跳转
按照arp协议规定,他要访问b主机,肯定要找到b主机的ip地址和mac地址,然后才能连接上。
也就是说发送报文必须有目的主机的ip和mac地址。
但是他们是远程访问,中间经过若干个路由器,也就是说,报文需要经过路由器转发,比方说要经过c,d,e路由器的话才能到达目的主机,那么从a发送的报文先传到c路由器,我在想,既然要传送到c路由器,那么它的报文中的目的地址是不是要修改为c路由器的ip地址和mac地址?那这样的话,它再往下传的时候,这个报文的目的地址已经变成c路由器的了,那怎么往下传哦?
[解决办法]
你抓个包看就很清楚了----
举例:
因为某种原因,A需要向C发送了一个数据包,A首先判断目的地C是否在跟自已同一逻辑网段,
如果是,则A会向局域网广播ARP请求C的MAC地址,获取回复后,便把这个数据包以C的IP地址、C的MAC地址,发送出去。
如果不是,则A会把这个数据包,A就查询本机路由表,看自已的默认路由是谁——这儿假定是B,则A会向局域网广播ARP请求B的MAC地址,获得回复后,便把这个数据包以C的IP地址、B的MAC地址,发送出去。交换机会把这个数据包传送到B机的网卡接口,因为它是路由器,所以它会接收/转发终点IP并不是自已的数据包。拿到数据包后,它的处理措施跟A一样。
重复此过程,直到达到终点。
[解决办法]
如果是路由而言,数据包中的源地址不会换成路由器的地址。
如果你是指NAT情况,NAT所在主机在作地址转换动作时,会作记录,以便接到回复数据包时可以找到真正的主人。