电脑A如何与电脑B进行通信的?

举报
rivers 发表于 2022/04/01 21:43:40 2022/04/01
【摘要】 最近收到很多小伙伴问题,他说学完了TCP/IP 网络基础知识,但还是搞不明白主机A与B的一个通信过程。所以,博主利用时间画了一个拓扑图,然后根据拓扑图,简要的介绍下他们之间通讯的一个大致流程

主机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的一个通信过程。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。