计算机网络中不同层的运作
您是否曾经想过网络的不同层如何协同工作以发送消息?在深入细节之前,让我们首先了解一些基本术语。
地址解析协议 (ARP) 请求是一种将 IP 地址转换为 MAC 地址的协议。
路由表是一组规则,通常以表格形式显示,用于确定通过互联网协议 (IP) 网络传输的数据包的路由位置。
在典型的网络中,主机设备或主计算机包含所有层,另一方面,路由器具有网络层、数据链路层和物理层。
示例
假设我们想向主机 2 上的接收方发送一条消息,该接收方位于不同的网络上。
主机 1 的 IP 和 MAC 地址分别为 **I1、M1**,主机 2 的 IP 和 MAC 地址分别为 **I2、M2**。
假设主机 1 的默认网关为 **路由器 1**(IP 地址为 IR1,MAC 地址为 MR1),主机 2 的默认网关为 **路由器 2**(IP 地址为 IR2,MAC 地址为 MR2)。
对于主机 1
假设应用层想要向主机 2 发送消息“M”。
主机 1 的应用层将其传递给主机 1 的传输层。
传输层向消息 M 添加一个报头,其中包含主机 1、主机 2 的端口号 (x、y)。因此,消息现在为 (M、x、y),并传递给主机 1 的网络层。
网络层还向消息添加一个报头,其中包含主机 1 和主机 2 的 IP 地址。消息现在为 (M、x、y、I1、I2),并传递给数据链路层。
数据链路层在将其传递给物理层之前也向消息添加一个报头。由于主机 2 不在同一网络中,它将输入主机 1 的 MAC 地址和默认网关的 MAC 地址(通过发送 ARP 请求来了解 MAC 地址)。消息现在为 (M、x、y、I1、I2、M1、MR1),并传递给物理层。
物理层将给定消息转换为比特并将其发送到路由器 1。
在路由器 1 中
路由器 1 的数据链路层看到数据包后,向主机 1 的数据链路层发送确认,并在将其转发到路由器 1 的网络层之前删除主机 1 DLL 添加的报头信息。
网络层接收到的消息为 (M、x、y、I1、I2)。
网络层看到目标 IP 地址。由于目标不存在于其网络中,它将决定将其转发到路由器 2。
路由器 1 的网络层在查看路由器 1 的路由表后做出此决定。
现在,路由器的 DLL 向消息添加一个报头。这次,源 MAC 地址为 MR1,目标 MAC 地址为 MR2(使用 Arp 查找)。
通过这种方式,接收方只知道源的 IP 地址,但永远不知道源的 MAC 地址。消息现在为 (M、x、y、I1、I2、MR1、MR2),并发送到物理层。
物理层将其转换为比特并将其发送到路由器 2。
对于路由器 2
物理层将比特转换为消息,并通知路由器 2 的 DLL。
现在,路由器 2 的 DLL 在看到消息后向路由器 1 的 DLL 发送确认。
路由器 2 的 DLL 删除 MAC 地址并将其转发到网络层。
网络层通过检查路由器 2 上存在的路由表发现主机 2 位于同一网络中。
现在消息为 (M、x、y、I1、I2、MR2、M2),并传递给物理层,物理层将其转换为比特并将其发送到主机 2。
使用主机 2
物理层将其转换为比特并将消息转发到 DLL。
DLL 向路由器 2 的 DLL 发送确认,并删除传递到网络层的消息中的 MAC 地址。
现在,网络层删除 IP 地址并将其提供给传输层。
主机 2 的传输层向主机 1 的传输层发送确认,并删除端口号并将消息提供给该位置的进程(或应用程序)。