网络模型

227 阅读4分钟

这天,你用颤抖的手打开小黄网,然后一顿操作猛如虎。

2 分钟后,你无欲无求。这时,你有没有很多个问号?刚刚打开网页时发出了什么指令,为什么客户端知道要从哪个服务器获取资源,发出去的数据包和传回来的数据包不会迷路吗,如果某个数据包丢了怎么办,最精彩的镜头可就看不到了鸭。

很多年前,有这么一批科学家,为了解决这些类似的问题,构建了网络模型。网络模型解决的问题就是数据如何在网络上传输。最简单的模型就是在所有问题都在一起解决,但是这样对系统的拓展性健壮性都不好。所以需要对网络传输的各种问题进行归类,然后分层解决,最终形成一个有层次、每一层边界清晰的模型。

最流行的网络模型有两类

  1. OSI 七层网络模型
  2. TCP/IP 四层网络模型

OSI 七层网络模型

1984 年,OSI(国际标准化组织)发布了 OSI 七层网络模型,将网络划分成七层。


物理层

物理层位于网络模型的第一层。它负责将比特流信息编码成物理信号在介质上传输。所以你看的小黄片底层都是电脉冲等信号,没啥意思的。理智看片从我做起。

数据链路层

数据链路层和物理层交换比特流,负责在不同设备之间可靠地传输数据。它包括物理编址、网络拓扑结构和数据错误校验等。平时比较常接触的 mac 地址,就是设备在链路层上的物理编址。

网络层

网络层主要负责路由和寻址,并有一定的流量控制能力。平时接触的 IP 地址,就是常用的网络层地址。

传输层

传输层是网络模型中十分重要的一层,基于网络层的路由寻址能力,提供了数据在端到端之间的数据传输,并根据不同的传输层协议支持不同的能力。例如拥塞控制、可靠保证。常见的传输层协议有 TCP 和 UDP。

会话层

负责进行对话连接,建立两端之间的关联,可以简单理解成 HTTP 中 session 的功能。

表示层

提供多种功能用于应用层的数据转化,比如数据格式(文本图片视频音频)等等(即数据针对不同格式的表示形式),以确保应用层可以识别数据信息。

应用层

应用层位于网络模型的第七层,也是最靠近用户的一层,依托下层的网络协议提供各种类型的服务,例如 HTTP。

TCP/IP 四层网络模型

OSI 模型是一个美好的愿望,但是现实中实际是按四层网络模型构建的。分别为

  1. 应用层,对应 OSI 模型中的应用层、表示层和会话层
  2. 传输层,对应 OSI 模型中的传输层
  3. 网络层,对应 OSI 模型中的网络层
  4. 物理链路层,对应 OSI 模型中的链路层和物理层

数据格式

从应用层到物理层,数据经过每一层都会封装那一层的信息,一般是增加一些头部和尾部(大部分只是增加头部)。上一层的信息对下一层是不透明的,下层不需要了解上层封装了什么信息,做到职责分明。参考这张图


其他

  1. 不是所有网络设备都需要实现所有分层,最明显的就是应用层,路由器就不必实现它
  2. 从传输层开始协议只需要由终端(end host)实现

写在最后

如果你愿意一层一层地剥开网络模型,你会发现,你会讶异,如果没有做底层的网络开发,只要关注应用层、数据传输层和网络层就可以。其他层如果没用到就随便了解一下,我也只是为了凑凑字数才写的这么多。