跳至主要內容

计算机网络模型

AruNi_Lu计算机基础网络约 2217 字大约 7 分钟

本文内容

1. 什么是网络模型

网络世界是错综复杂的,一条数据要经过许多设备和不同的协议栈,才能到达目的地。如果把所有的设备和相关的协议揉成一团,是非常不容易维护和发展的。所以专家们就抽象出 网络模型每层模型只负责自己的事情。这就将一个庞大复杂的网络,转化为了若干个较小的局部问题。

每一层模型只需对其上层和下层提供对应的服务或者接口,按照规定的协议进行数据传输,即可将整个网络串联起来,而且对某一层的设备或协议进行单独改进,也不会影响到其他层。

1.1 网络模型层次划分

常见的网络模型有三种,分别是 OSI 七层模型、TCP/IP 五层模型和 TCP/IP 四层模型

OSI 七层模型是最早、最标准的网络模型,每一层划分的很细,功能也很聚焦。但是在真正实施起来的时候,会存在以下问题:

  • 需要为每层定义不同的协议,协议实现太复杂、实现时间长;
  • 层次划分太细,有些层的功能重叠;
  • 不利于协议的发展和维护。

所以,我们一般在学习网络模型时,只需要学习后面两个就行了,七层模型只需进行了解。

OSI 七层模型分为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。

TCP/IP 五层模型 把应用层、表示层和会话层合并为应用层,将网络分成 应用层、传输层、网络层、数据链路层和物理层,而 四层模型 则进一步将 数据链路层和物理层 合并为 网络接口层

这三种模型的对应关系如下:

image-20230301190410548

我们主要学习的是 TCP/IP 的五层模型。

1.2 每层对应的功能、协议、设备是什么

一张图了解每层对应的功能、协议和设备:

image-20230301200116945

接下来分别对每一层进行讲解。

2. 应用层

应用层在网络模型的最上层,我们平时使用的应用程序,都是在应用层。

应用层 只负责 向应用程序提供网络服务,而 不用管数据是如何进行传输。就像寄快递,我们只负责将快递交给快递员,而不用管快递如何运输,

应用层通过应用层协议给用户提供网络服务,常用的有:

  • HTTP:提供点到点之间的超文本传输服务;
  • DNS:提供域名解析服务,将域名解析成对应的 IP 地址;
  • FPT:提供文件传输服务;
  • SMTP:提供邮件传输服务。

3. 传输层

应用层的数据包会传输给传输层,传输层主要服务给应用层提供网络支持。

传输层有两个传输协议,分别是 TCP 和 UDP。它们会建立、维护、管理自己的连接(UDP 无连接),以供应用层使用。

TCP 协议

TCP 传输协议需要 建立连接,它提供 可靠的、基于字节流的传输服务。大多数应用都是使用 TCP 协议进行数据传输,因为它能让数据包可靠的到达目的地。

为了提供可靠的传输,TCP 有了许多特性,如需要建立连接、流量控制、拥塞控制、重传机制等。

UDP 协议

UDP 传输协议 不需要建立连接,只负责简单的收发数据包,所以不需要过多的特性,而且传输效率较高,常用于对数据可靠性要求没那么高的场景。

需要知道的是,应用需要传输的数据包可能会非常大,为了合理控制传输效率,当数据包大小 超过 MSS(Maximum Segment Size,最大报文段长度)时,就需要将数据包 分块传输。这样即使传输过程有一个分块丢失了,也只需要重传这一个,大大提高了传输效率。

TCP 会在数据包上添加 TCP 头部,形成 TCP 报文。另外,为了区分数据包是属于哪个应用进程的,一般在发送数据包时会将应用进程的 端口号 也携带上,保存到 TCP 报文头部。

4. 网络层

网络层常使用的协议有 IP 和 ICMP。IP 协议会将传输层的报文作为数据,再加上 IP 头部,封装成 IP 报文。如果 IP 报文大小 超过 MTU(Maximum Transmission Unit,最大传输单元),就会再次进行 分片

进行数据传输的两台设备之间并不是通过一条网线连接的,而是通过 多个网关、路由器、交换机等网络设备连接起来的,那么就会形成很多条网络路径,因此就需要 通过不断的路由跳转,数据包才能到达目的地

这就是网络层负责的内容,它会进行 IP 地址和路由器的选择,判断出数据库应该发往哪儿。

IP 寻址更像是导航,指导数据包应该发往哪儿,而路由更像在操作方向盘,进行真正路径的选择

例如,我要将数据发送给 IP 为 192.168.31.1 的目标,那么根据路由表规则(路由表中会有目的地址和下一跳地址),就会指明应该先将数据发给哪个路由器,然后再进行多次转发,最终到达目的地。

5. 数据链路层

收到 IP 报文后,数据链路层会在 IP 报文的头部和尾部再加上一个 MAC 头部,然后封装成 数据帧,发送到网络上。

在 IP 头部中有目的地的 IP 地址,通过 IP 地址可以判断数据包要发往哪儿,但是 在以太网中,这个思路是行不通的

以太网

以太网就是一种在「局域网」内,把附近的设备连接起来,使它们之间可以进行通讯的技术。

例如,电脑上的以太网接口、以太网交换机、路由器的以太网口,网线等,都是以太网的组成部分。

以太网在判断数据包的目的地时,和 IP 的方式不同,因此必须采用相匹配的方式才能在以太网中将数据包发往目的地,而这个方式,就是 MAC 地址

MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,可以通过 ARP 协议 获取对方的 MAC 地址

也就是说,需要使用 MAC 地址才能标识网络上的设备,才知道具体发往哪个地方。每台设备的 MAC 地址是唯一的,而 IP 地址不唯一(每个局域网内的 IP 地址才唯一)。

举个公司的例子,把 IP 地址比喻成工号,公司可以回收或者给别人用,或者在不不同的子公司也可以存在完全一样的工号。

有的公司员工离职后再回来,工号重新编。有的公司工号是永久编号,你离职了这个工号就空着,你回来了这个工号还是你的。所以完全看分配的策略,规则比较灵活。

而 Mac 就是一个设备一个编号号,规则不灵活,类似你的身份证号,你出生就有了,一生不变。

6. 物理层

物理层会在数据帧的头部添加一个 前导码,使数据包成为比特流,然后负责数据比特流的传输,比特流在真正传输过程中会转换成对应的信号,然后发送到传输介质中。如下所示:

image-20220304134758719

7. 总结

现在再来回顾一下这个图,就清晰多了:

image-20230301200116945

数据包在被传输的时候,需要添加一系列的头部,数据包被层层封装的示意图如下:

image-20230301221552876

8. 参考文章

上次编辑于: