本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除
我们为什么需要网络协议来传输数据?
连接互联网的各种设备需要用它们能理解的语言进行通信。各种计算机系统使用 OSI(Open Systems Interconnectio)模型规定的标准相互通信。
OSI 模型有七个抽象层,每个层都有不同的职责和协议。
下图显示了 OSI 模型中每一层的功能。每个中间层都为其上层提供功能,并由其下层提供服务。
应用层最接近终端用户。大多数应用程序都位于这一层。我们从后端服务器请求数据,无需了解数据传输的具体细节。这一层的协议包括 HTTP、SMTP、FTP、DNS 等。
这一层处理数据编码、加密和压缩,为应用层准备数据。例如,HTTPS 利用 TLS 实现客户端与服务器之间的安全通信。
该层用于打开和关闭两个设备之间的通信。如果数据量较大,会话层就会设置检查点,避免从头开始重新发送。
该层处理两个设备之间的端到端通信。它在发送方将数据分解成段,然后在接收方重新组装。这一层有流量控制,以防止拥塞。这一层的主要协议是 TCP 和 UDP。
这一层实现不同网络之间的数据传输。它进一步将网段或数据报分解成更小的数据包,并使用 IP 地址找到通往最终目的地的最佳路由。这一过程被称为路由选择。
这一层允许在同一网络的设备之间传输数据。数据包被分解成帧,这些帧被限制在局域网内。
这一层通过电缆和交换机发送比特流,因此与设备之间的物理连接密切相关。
既然我们已经了解了每一层的职责,那就让我们来总结一下图中的数据传输过程。这就是所谓的封装(encapsulation)和解封装(decapsulation)。
封装是指在数据向目的地传输的过程中为数据添加报头(header)。解封装会移除这些报头,以获取原始数据。
请注意,每一层都使用报头来处理指令,而不需要解封上一层的数据。
与理论上的 OSI 模型相比,TCP/IP 模型提供了一个更实用的框架。它包含四个关键层:
这一模型更贴近现实世界的互联网通信,将七个 OSI 层压缩为这四个关键层。