电脑A如何与电脑B进行通信的?
主机A访问主机B,(这里除去ping)
首先应用程序把数据 交给 应用层协议(这里不指定协议),应用层协议(其实就是进入TCP/IP协议栈的接口)。应用层协议在 交给 传输层(大多数交给TCP协议处理)处理,传输层做完封装,在交给网络层。
网络层里有 源、目的IP地址(这里源IP是A的ip,目的IP是B的IP),然后网络层在做完封装后(添加IP头),在交给数据链路层。
数据链路层里有源、目的mac地址,源mac是自己的mac,目的mac 是下一跳的mac(R1 1接口的mac)。
## A如何知道R1接口的IP 地址呢?---网关。
## A如何知道R1接口的MAC地址呢?---A配置了网关,以知R1 1接口IP,采用ARP协议,获取1接口的mac地址。
## SO,为啥要配置网关?---由此可见不配置网关,无法完成封装
来到数据链路层后,封装二层帧头,源mac A的mac,目的mac R1 1接口的mac。然后交给物理层。
到达物理层后,以比特流的形式发出去,来到S1交换机。此时S1交换机收到A的比特流后,解封装成帧。
在转发帧前,进行mac学习,基于目的mac地址进行查找和转发。由于前面ARP协议的请求,S1交换机mac表已经形成mac映射。所以 从数据链路层来到物理层,以比特流的形式发出。从S1的1接口进入,0接口发出,来到R1 的1 接口。
当R1 1接口收到比特流后,解封成mac帧,看到目的mac 是自己,才能继续解封装到 3层,网络层。
如果目的mac地址不是自己,就会丢弃。
当来到网络层后,解封装,看到源IP、目的IP。目的IP不是自己的,查找路由表(目的IP不是自己的,不转发,自己处理),
### 路由表理里 有重要的3元组(目的网络、下一跳,出接口),目的网络 是用来匹配目的网络的,通过目的网络 定位到 下一跳,出接口。(下一跳的目的是为了ARP请求获取mac地址的)
SO,当这一切都获取到了后,才会封装成 二层帧,添加源MAC(自己),目的MAC (R2 1入接口),然后封装成 物理层 ,以比特流的形式发出,来到R2.
当R2 收到比特流后,首先解封装成mac 帧,目的mac 是自己的,所以才会继续拆封装到 网络层,查看目的IP不是自己的,查找路由转发。但是,此时R2和B直连,没有路由,目的IP地址已经知道了。
SO,R2会封装 mac头,交给物理层,然后以bit流的形式发出给S2,S2解封装到 数据链路层,根据目的MAC转发。封装到物理层,以比特流的形式发送给B。
所以,这大概就是A与B的一个通信过程。
- 点赞
- 收藏
- 关注作者
评论(0)