一直有一个疑问:局域网的主机之间是如何将数据包发出去的 ? 求细节。
我目前的真实网络环境:
路由器(家用)的IP地址为192.168.1.1;
主机A地址192.168.1.100;
主机B地址192.168.1.102;
主机A的路由表:
主机A的arp表:
当主机A来ping主机B时,数据包是怎么发送到B的呢?
先说说我的理解:因为主机A与网络通信只有一条路径,所以数据包将会被转发给默认路由(192.168.1.1),然后由路由器将该包转发给主机B。具体是:A将数据包转发给路由器,路由器发送一个ARP广播查找主机B的MAC地址,得到MAC地址后,路由器通过链路层将数据发给主机B。(这里有一个ARP广播,我认为这个ARP广播应该由路由器发出,广播中的源地址(包括IP和MAC)地址都应该是路由器本身的,而不是主机A的。)
但抓包结果(见下图)来看,主机A应该是直接将数据包发给了主机B。这是因为,主机A发了一个ARP广播来寻找主机B的MAC地址,且得到了应答。(主机A所发的ARP广播中的源地址(包括IP和MAC)都是主机A本身的)。那么接下来,有了MAC地址后,主机A是怎么直接将数据发给主机B而没有通过路由器的呢? A与B虽然是同一网络,但未直接相连啊。