18888628835/Blog

TCP/IP网络分层模型和 OSI 网络分层模型

18888628835 opened this issue · 0 comments

TCP/IP网络分层模型和 OSI 网络分层模型

TCP/IP网络分层模型

TCP/IP 采用分而治之的**,将复杂的网络通信分成了四层

image.png

最下面的为第一层,往上递增。

第一层:链接层(link layer)

这一层主要负责在以太网、wifi 等这样的底层网络中发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络设备,所以也叫 MAC 层。

MAC 地址也称局域网地址,可以唯一标识一个网卡,也标识网卡所属的设备。

第二层:网络互连层(internet layer)
IP 协议就在这一层,因为 IP 协议定义了 IP 地址的概念,所以在链接层的基础上,用 IP 地址替代 MAC 地址,在由局域网、广域网等组成的虚拟网络中找设备时,把 IP 地址翻译成 MAC 地址就可以了。

第三层:传输层(transport layer)
这一层的职责是保证数据在两点之间可靠地传输,这一层是 TCP 所在层,同时还有一个 UDP 协议。

TCP 是可靠的、有状态的、有序的协议,必须在双方建立连接才可以发送数据,而且需要保证数据不丢失和重复。所以就诞生了那个经典的面试题:三次握手和四次挥手。

UDP 则比较简单,它没有状态也不需要事先建立连接就可以随意发送数据,但是并不保证数据一定能发送给对方。

TCP的数据是有先后顺序的,而 UDP 则是顺序发,乱序收。

第四层:应用层(application layer)
这一层就是 HTTP 协议所在的层,这里有各种面向应用的协议,除了 HTTP 外,还有负责远程终端协议的Telnet、SSH 加密等。

MAC 层传输单位是帧,IP 传输单位是包,TCP 传输单位是段,HTTP 传输单位是消息报文(message)。统称为数据包

OSI 网络分层模型

OSI 全称“开放式系统互联通信参考模型”

在 TCP/IP协议诞生的年代,还有很多其他协议,这时候国际标准化组织就来了一个统一规范,于是设计了新的网络分层模型OSI。

国际标准化组织组织的简称是 ISO,倒过来念就是 OSI。

OSI 模型共七层,部分层次类似 TCP/IP,从下至上分别是

image.png

  1. 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;
  2. 第二层:数据链路层,它基本相当于 TCP/IP 的链接层;
  3. 第三层:网络层,相当于 TCP/IP 里的网际层;
  4. 第四层:传输层,相当于 TCP/IP 里的传输层;
  5. 第五层:会话层,维护网络中的连接状态,即保持会话和同步;
  6. 第六层:表示层,把数据转换为合适、可理解的语法和语义;
  7. 第七层:应用层,面向具体的应用传输数据

从特点来看,OSI 比 TCP/IP 更加完整,在补充了TCP/IP协议的细节内容后,还特地加上物理设备的层级。

映射关系

由于OSI 在设计初期就参考了 TCP/IP 的分层结构,所以比较容易但不精确地表示两者的对应关系。以下图表示

image.png

由于 OSI 的七层模型分的太细,而 TCP/IP 实际应用时的会话管理、编码转换、压缩等和具体应用经常联系的很紧密,很难分开。所以就导致一个结果:

OSI 是标准协议,但是实际应用依然可以用TCP/IP协议,这样一比较,第五层会话层和第六层表示层就消失了。

四层负载均衡和七层负载均衡

现在我们已经知道了xx层的概念,那么我们就可以知道,四层指的是传输层,七层指的是应用层。

四层负载均衡指的是在传输层上,通过对 IP 地址、端口号等实现对后端服务器的负载均衡。

七层负载均衡指的是在应用层上,比如通过 HTTP 的 URL、主机名、资源类型等数据通过适当的策略转发给后端服务器。

TCP/IP是怎么工作的

当发送数据的时候:

1.首先HTTP 协议会对我们需要传输的内容进行包装---添加 HTTP专用附加连接。

这就好比我们需要发快递,那么需要拿个塑料袋自己包一下。

2.在经过 TCP 层时,TCP 层给数据再次打包,并加上 TCP 头

这就好比快递员拿到我们的快递,那么会压缩一下,继续包装。

3.按照上面的套路,分别给 TCP 数据加上 IP 头和 MAC 头

这就好比快递员把快递放进三轮车,最后放进大卡车。

当对方接收到数据的时候:

1.数据通往对方的 MAC 层和 IP 层,对方分别对数据进行拆包

快递员把快递卸下大卡车,装上三轮车通往对方家

2.去掉 TCP 头和 HTTP 头,获取到数据

对方拆掉快递包装和你的塑料袋,拿到里面的东西。

HTTP协议的传输过程就是这样通过协议栈逐层向上,每一层都添加上本层专用的数据,然后打包,最后发送出去。用一个成语形容就是层层包围

而接收数据刚好相反,从下往上穿过协议栈,每一层都去掉本层的专有头,最后拿到数据。用一个成语形容就是抽丝剥茧

可以用下图表示

image.png

小结

TCP/IP 有四层,核心的是第二层 IP 和第三层 TCP,HTTP 在最上层。

OSI 有七层模型,其中数据链路层就是 TCP 的链接层,网络层就是 TCP 的网络互连层,传输层就是 TCP 的传输层,第七层应用层对应 TCP 的第四层。

OSI 的第一层TCP没有、第五层跟第六层都在 TCP 的应用层中,对比之下,这几层都消失了。

HTTP 利用 TCP/IP协议栈逐层打包,再逐层拆包实现数据传输。

一般来说,写应用程序的层为应用层,操作系统处理的是四层或者以下。