同一网段内计算机通信流程
参考地址:https://www.processon.com/view/5d784083e4b01080c73b9ca8
如上图为一个简单的同一网段内主机的示例。
如果计算机 A 向计算机 B 发送消息,那么
- 应用层会获取计算机 B 的 ip 地址(例如 192.168.3.98,端口号为 3456),并且将数据封装交给传输层
- 传输层会利用 TCP 协议将数据封装端口号(源端口号 | 目的端口号 | 数据),并交给网络层
- 网络层利用 ip 协议为数据封装 IP 地址(源 IP 地址 | 目的 IP 地址 | 源端口号 | 目的端口号 |
数据),并交给数据链路层 - 数据链路层进行判断判断自己的 ARP 表是否存在目的 MAC 地址。
存在
利用以太网协议给数据封装 MAC 地址(源 MAC 地址 | 目的 MAC 地址 | 源 IP 地址 | 目的 IP 地址 | 源端口号 |
目的端口号 | 数据),并交付物理层。
不存在
向本网段内发送一条 ARP 广播,含义为谁是 IP 192.168.3.98,你的 MAC 地址是多少。
此时计算机 B 收到广播后,发现 IP 是找自己的则先将计算机 A 的 ip 与 MAC 记录到自己的 ARP 表里,然后给计算机 A
回复一个 ARP 响应包,告诉自己的 MAC 地址。计算机 A 接收到回报之后利用以太网协议封包。并交付物理层
- 物理层顺着网线发送给主机 B。
- 主机 B 从物理层逐层拆包获得数据。
不同网段内计算机通信流程
参考地址:https://www.processon.com/view/5d78ab24e4b0c5c942bee050
- 如图所示,不同网段通信。计算机 A 向计算机 E 发送消息。
- 在数据链路层封装的 MAC 地址是默认网关的 MAC 地址
如果主机 A 的 ARP 表内存在默认网关的 MAC 地址
封装 MAC 地址。(目的 MAC 为默认网关的 MAC)
> 如果不存在
计算机 A 将数据包暂存到缓存中,通过广播形式发送 ARP 请求包,请求默认网关 MAC 地址。
路由器 B 收到 ARP 请求后,先将 A 的 IP 与 MAC 存到自己的 ARP 表中,然后以单播形式回复其请求。
计算机 A 收到请求后进行封装。
-
数据首先会经过交换机 A
交换机 A 只能将数据拆到数据链路层,获取 MAC 地址与端口,并且发送。如果 ARP 表中没有此地址则广播获取。 -
路由器三同理,将数据交给左边路由器。
-
左边路由器拿到数据后开始逐层拆包,拆到数据链路层,发现目的 MAC 是自己所以继续拆包到网络层发现目的 IP 不是自己,于是发送给目的 IP 所在网络的默认网关。但需要知道其 MAC。
> 如果 ARP 表中存在 MAC 地址
将 MAC 更换为 自己的 MAC 地址 | 默认网关的 MAC 地址 | 源 IP 地址 | 目的 IP 地址 | 源端口号 |
目的端口号 | 数据
> 不存在
通过广播获取
- 右边路由器获取到数据后开始逐层下发。。。
创作不易,点个赞吧!!
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://blog.csdn.net/wsad861512140