计算机通信流程
同一网段内计算机通信流程
参考地址: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发送消息。
计算机A从物理层到数据链路层的封包过程与同网段内的通信一致。
在数据链路层封装的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地址|源端口号|目的端口号|数据
不存在
通过广播获取
右边路由器获取到数据后开始逐层下发。。。