协议及其工作原理

2025-06-08

协议及其工作原理

免责声明:这是一篇由正在研究此主题的人士撰写的入门文章。如果您对本文涉及的主题有任何建议,请直接私信我!我们可以聊聊,我很乐意修改这篇文章。感谢您的阅读!

在我上一篇关于部署及其工作原理的文章(仅介绍该主题)之后,我开始更多地研究网络以及如何将我们的设备与其他设备连接,当然还有它们之间如何交换数据。

我打算写一系列(不知道会有多少篇)关于协议以及它们如何单独工作的文章,在本系列文章结束时,您可能会很好地理解互联网如何与所有这些协议协同工作,使部署看起来像小孩子的游戏。

就此而言,我将使用两个最常用的模型,即 TCP/IP 和 OSI 模型,因为它们都可以用作参考模型,它将帮助我们了解任何类型网络中的数据流。

我在之前的学习中已经了解了OSI模型,但它并没有引起我的注意,甚至连作为我们网络通信骨干的TCP/IP协议直到现在才引起我的注意。因此,我决定写一些关于一些我们已经了解的协议的文章,旨在展示(或者尝试)OSI和TCP/IP模型中事物的工作原理。

OSI 和 TCP/IP 堆栈

两种模型都是分层结构的,OSI 有 7 层,与 TCP/IP 模型的 4 层相对应,因为它们都可以作为参考模型。

OSI 和 TCP/IP 模型

首先,让我们了解一下协议实际上的作用以及为什么我们称它们为堆栈。

协议本质上是两台或多台主机之间为通信建立一些标准而达成的协议。协议栈的创建是为了让我们能够参考通信中的多个阶段,并解决可能出现的任何问题。我们可以说,协议栈包含了主机之间通信所需的所有协议或服务。

此外,堆栈还代表了层与层之间的隔离,因此每一层都会与另一台主机中的同一层进行通信,并使用相同的协议经过相同的阶段,使用层与层之间的隔离,以便上层不必占用正在下层执行的一些服务。

好的,但是这些层实际上起什么作用?

堆栈的第一层是物理层,此时我认为每个人都知道数据是如何物理传输的,无论使用什么介质,计算机总是会看到比特流动。

第二层负责转换接收到的传输,将其分解成更小的块,形成数据帧(数百或数千字节),并按顺序传输帧,接收方可以发回确认帧以确认已正确接收到数据帧。

第三层可能是最著名的一层,它负责在网络中路由数据,此外,它还负责处理拥塞问题以及确保其他层提供的服务质量。网络层必须确保使用正确的协议。这一层的数据称为数据包。

对我来说,第四层是最具挑战性的,尤其是因为这里正是魔法——或者说隔离——发生的地方。这一层负责隔离上下层之间的通信过程,因此它需要将所有数据整理得井井有条,必须重新排序收到的每个数据,并谨慎处理通信。这一层必须建立直接指向另一台机器的连接,因此它是两台主机之间的“直接”连接,因为下层将处理主机与下一个直接主机(例如路由器、交换机或接入点)之间的通信,而第四层将处理主机与最终目的地之间的通信。

最后三层只是 TCP/IP 协议栈的一层,为什么呢?这是一个有趣的话题,但我们现在先不讨论,我们继续往下看。

会话层主要负责管理会话令牌,例如跟踪轮到谁传输数据,还将管理这些令牌,以便双方甚至不会在没有令牌的情况下尝试发送数据,最后但并非最不重要的是,确保即使在数据传输过程中发生崩溃,已传输的数据也是有序的。

几乎到达模型的顶峰我们有表示层,这一层我们可以把他看作是一个支持角色,因为它将帮助应用层与会话层提供的一些服务进行通信,会话层通过这一层知道它需要提供哪些服务来保持数据流动。

最后,但绝对不是最不重要的一点,我们有应用层,其职责是提供对 OSI 模型中其他服务的访问,它通过使用允许最终用户与其他服务通信的接口来实现这一点,使用此输入生成的所有数据将被一些其他工具使用,这些工​​具将与下面的层建立连接,然后按照该过程直到到达另一台主机。

待续...

这现在听起来可能有点令人困惑,但我相信这对您在整个 IT 职业生涯中理解向您展示的协议会有很大帮助,因为网络中的每个通信过程都可以看到这些层,正如我在本文开头所说的那样,这些是参考模型,所以它不会向您展示特定协议如何工作的答案,但肯定会向您展示协议必须遵循哪些规则才能成为某个层的一部分,或者某些协议仅仅因为成为这些层的一部分而具有哪些功能。

下一篇文章将讨论 LAN(局域网)内的通信过程、数据流的工作方式以及每个组件的职责,它将帮助您更好地理解如何将参考模型应用于实际场景。

参考

Tanenbaum, Andrew S. 计算机网络。第 5 版。新泽西州 Upper Saddle River:Prentice Hall,2010 年。

Piscitello, David M. 和 Chapin, A. Lyman。开放系统网络:TCP/IP 和 OSI。新泽西州上萨德尔河:Addison-Wesley,1993 年。

鏂囩珷鏉ユ簮锛�https://dev.to/basementdevs/protocols-and-how-they-work-46cd
PREV
如何设置 Neovim 进行全栈开发 设置 Neovim 进行全栈开发
NEXT
数据库新手入门:动手实践