同一网段和不同网段中的两台主机通信的过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tonglin12138/article/details/88714042

主机A和主机B通信报文的转发过程

1、主机A和主机B在同一网段中

在这里插入图片描述

       主机A查看自己的ARP缓存,检查是否有主机B的IP到MAC的映射,如果有映射,构造报文,目的IP为主机B的IP,源IP为主机A的IP,目的MAC为主机B的MAC,源MAC为主机A的MAC,将报文发送给交换机C,交换机C进行MAC地址表学习,将主机A的MAC和报文入端口号记录下来,然后交换机C查看自己的MAC转发表,检查是否有主机B的MAC到端口的映射,如果有映射,获取对应的端口,将报文从此端口转发出去,报文到达主机B。如果交换机C没有主机B的MAC转发表映射,采用洪泛的形式广播报文,主机B收到报文后向主机A回复,交换机C进行MAC表学习,将主机B的MAC和报文入端口号记录下来。

        如果主机A没有主机B的ARP映射,主机A需要发送ARP请求,以获取主机B的MAC,将报文发往交换机C,交换机C采用洪泛的形式广播报文,主机B收到广播报文后,在自己的ARP缓存表中写入主机A的IP到MAC的映射,将自己的MAC封装到ARP回复报文中,单播给主机A,主机A获取到主机B的MAC后,在自己的ARP缓存表中写入主机B的IP到MAC的映射,构造报文发送给主机B,过程同上。

主机B向主机A回复报文的过程类似。

2、主机A和主机B不在同一个网络中

在这里插入图片描述
       主机 A 会首先检查目的IP地址是否与自己在同一网段,如果在,就直接广播ARP请求来获取目的主机的MAC地址,如果不在同一网段,又配置有网关地址的话,那么主机 A 就通过 ARP 请求,询问192.168.0.1(网关)在哪里,网关收到后就会回应主机 A ,把网关的MAC地址告诉主机 A ,当获取到网关的MAC地址后,把网关的MAC地址作为MAC帧中的目的MAC地址,然后就把数据丢给网关 192.168.0.1 ,网关根据路由表,转发给下一个路由器,再由下一个路由器交付给主机 D 所在的网络,即网关,网关再通过ARP,找到目的主机 D ,完成数据交付。

        主机A查看自己的ARP缓存表,检查是否有路由器E的IP到MAC的映射,如果有映射,获取路由器E的MAC,构造报文,目的IP为主机B的IP,源IP为主机A的IP,目的MAC为路由器E的MAC,源MAC为主机A的MAC,将报文通过交换机C发往路由器E,过程同上。 如果主机A没有路由器E的IP到MAC的映射,需要发送ARP请求,获取路由器E的MAC,过程同上。路由器E收到主机A的报文后,剥离报文的MAC帧头,查询路由表,发现目标主机B所在的网络是直连的,查看自己的ARP缓存表,如果有主机B的IP到MAC的映射关系,获取主机B的MAC,封装报文MAC帧头,目的MAC为主机B的MAC,源MAC为路由器E的MAC,将报文通过交换机D发往主机B,如果路由器E没有主机B的IP到MAC的映射关系,需要发送ARP请求,获取主机B的MAC,过程同上。

主机B向主机A回复报文的过程类似。

注:路由器上的路由表一般是配置静态路由或者通过路由协议自动学习的。

 
目的主机接收到数据帧的操作:
        当目的主机接收到数据帧后对比目的MAC,如是发送给自己的,则拆去数据帧头,发往网络层,网络层对比目的IP,如相同则拆包发往传输层,传输层再对比目的端口,确认相同则拆去数据段交给应用程进行数据组装。

猜你喜欢

转载自blog.csdn.net/tonglin12138/article/details/88714042