设计思想

分层解耦、分而治之是贯穿程序设计的一条基本准则。计算机网络协议更为复杂,网络协议设计之初便按分层思想而设计。网络分层之后,网络每一层协议负责的工作都是不一样的,也就对应了有不同设备来处理。

体系结构

为了制定统一标准, 国际标准化组织(ISO)于 1984 年提出了一种标准参考模型 OSI。它被公认为是计算机通信和 Internet 网络通信的一种基本结构模型。

然而 OSI 七层模型是一个概念模型,并没有说明如何具体实现,是理论标准。在实践过程中,实际上广泛采用 TCP/IP 四层协议结构。

读者此时可能会产生疑问,一边是 OSI 体系结构,一边是 TCP/IP 体系结构,两者到底是什么关系?

其实没啥必然关系。 OSI 协议可以理解为官方权威人士提出的一套权威标准,但是实现起来超级困难,属于典型的光说不练假把式。 TCP/IP 协议类似民间高手设计的一套易于实现的通信协议,且难度要比实现 OSI 小很多,所以各大厂商纷纷采用。时至今日,TCP/IP 协议完全统治了江山,整个因特网就是建立在 TCP/IP 协议栈基础之上的。

而 OSI 协议栈里的一堆协议已经没人再提了,不过你不能说它一无是处,毕竟七个分层模型还是很有科学性的。

下面看一张 OSI 体系结构与 TCP/IP 体系结构的对比图,方便大家理解。

分层处理

根据之前描述的 TCP/IP 协议栈的分层结构,每层协议栈各司其职,从网络包中取出自己需要的头部处理完后交给自己的上一层或者下一层。这里用一张图描述,参考自《趣谈网络协议》。

总结

本节内容从网络分层设计的初衷出发,进而引出了两大广为知名的网络体系结构,OSI 七层模型和 TCP/IP 四层协议结构。接着简单阐述了两个模型之间的区别与联系。最后,用一张图清晰的给读者展示出网络包流经每层时是如何被处理的。