vlambda博客
学习文章列表

四层和七层网络模型,到底是个啥?

四层和七层网络模型,到底是个啥?

之前老是听说什么网络"四层模型"、“七层模型”,到底什么鬼,刚好又赶上最近的工作是跟通信相关,不懂点网络分层模型,感觉有点对不起内心中小小的倔强!正好看了下极客时间上透视HTTP协议上对网络分层的讲解,先记下来,深刻理解加长久记忆!TCP/IP 网络分层模型

还是先从 TCP/IP 协议开始讲起,一是因为它非常经典,二是因为它是目前事实上的网络通信标准,研究它的实用价值最大。先看下TCP/IP 的协议层次图。

TCP/IP 协议总共有四层,就像搭积木一样,每一层需要下层的支撑,同时又支撑着上层,任何一层被抽掉都可能会导致整个协议栈坍塌。

第四层叫“应用层”(application layer),由于下面的三层把基础打得非常好,所以在这一层就“百花齐放”了,有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP 等等。

MAC 层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

OSI网络封层模型

OSI,全称是“开放式系统互联通信参考模型”(Open System Interconnection Reference Model),历史背景就不说了。

OSI 模型分成了七层,部分层次与 TCP/IP 很像,从下到上分别是:

  1. 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;

  2. 第二层:数据链路层,它基本相当于 TCP/IP 的链接层;

  3. 第三层:网络层,相当于 TCP/IP 里的网际层;

  4. 第四层:传输层,相当于 TCP/IP 里的传输层;

  5. 第五层:会话层,维护网络中的连接状态,即保持会话和同步;

  6. 第六层:表示层,把数据转换为合适、可理解的语法和语义;

  7. 第七层:应用层,面向具体的应用传输数据。

两个分层的映射关系

    

分层模型的映射关系


  1. 第一层:物理层,TCP/IP 里无对应;

  2. 第二层:数据链路层,对应 TCP/IP 的链接层;

  3. 第三层:网络层,对应 TCP/IP 的网际层;

  4. 第四层:传输层,对应 TCP/IP 的传输层;

  5. 第五、六、七层:统一对应到 TCP/IP 的应用层。

所谓的“七层负载均衡”就是指工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。

总结

  1. TCP/IP 分为四层,核心是二层的 IP 和三层的 TCP,HTTP 在第四层;

  2. OSI 分为七层,基本对应 TCP/IP,TCP 在第四层,HTTP 在第七层;

  3. OSI 可以映射到 TCP/IP,但这期间一、五、六层消失了;

  4. 日常交流的时候我们通常使用 OSI 模型,用四层、七层等术语;

  5. HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现了数据传输,但下面的细节并不可见。有一个辨别四层和七层比较好的(但不是绝对的)小窍门,“两个凡是”:凡是由操作系统负责处理的就是四层或四层以下,否则,凡是需要由应用程序(也就是你自己写代码)负责  处理的就是七层。