一文搞懂网络参考模型

在上一篇文章里,我们聊了数据通信网络的基础,搞懂了网络里的设备和基本的通信逻辑。但你有没有好奇过,我们发的一个请求,到底是怎么一步步穿过网络,准确送到服务器的?

其实,网络通信就像一个庞大的工厂,复杂的工作被拆成了一条清晰的流水线,每个环节只需要做好自己的事 —— 而支撑这个流水线的,就是我们今天要讲的网络参考模型

一、为什么我们需要 “参考模型”?

你有没有想过,如果没有这套分层的规则,我们的网络会变成什么样?

假设你要写一个聊天软件,你不仅要搞定聊天的内容逻辑,还要自己处理数据怎么打包、怎么找到对方的地址、怎么把数据变成电信号发到网线上…… 甚至如果以后你把网线换成了光纤,你还得把整个软件重写一遍,这也太离谱了。

而参考模型的出现,就是为了解决这个问题:它把复杂的网络通信,拆成了一层一层的独立模块,每个模块只需要管好自己的那部分工作:

模块之间解耦:你换了网线,只需要改物理层的内容,上层的聊天软件完全不用动;

标准化:大家都遵守同样的规则,不同厂家的设备、不同的软件,都能互相通信;

排错更简单:网络出问题了,你能很快定位是哪一层出了问题,不用从头排查。

简单说,参考模型就是网络的 “分工说明书”,大家按这个规则干活,整个网络才能高效、稳定地运转。

二、两个经典模型:理想与现实

提到网络参考模型,很多人都会想到 OSI 七层模型和 TCP/IP 四层模型,这两个到底有啥区别?

其实,OSI 七层模型是理论上的 “理想模型”,它把网络通信的功能拆得非常细,分成了应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,听起来很完美,但实际实现起来太复杂了。

而我们现在真正在互联网上用的,是TCP/IP 四层模型,它是 OSI 模型的简化版,把上面的三层合并成了应用层,下面的两层合并成了网络接口层,变成了我们熟悉的四层结构,简单实用,所以成了互联网的标准。

接下来,我们就以实际在用的 TCP/IP 模型,从上层到下层,一步步拆解每一层到底在干嘛。

三、四层模型拆解:你的数据是怎么 “打包发货” 的?

我们还是用大家最熟悉的寄快递来类比,你要给远方的朋友寄一个礼物,这个礼物就是你要发的网络数据,整个打包发货的过程,刚好对应了 TCP/IP 的四层模型。

1. 应用层:给朋友准备礼物

这是最靠近我们用户的一层,你要给朋友寄的礼物,就是这一层生成的。

应用层的作用,就是给我们的应用软件提供网络服务的接口,让我们的软件能用上网络。比如你用浏览器打开网页,用微信发消息,用 FTP 传文件,这些都是应用层的工作。

我们平时熟悉的那些网络协议,基本都在这一层:

HTTP:就是我们浏览网页用的协议,默认用 80 端口;

FTP:文件传输协议,用来上传下载文件,用 20、21 端口;

Telnet:远程登录协议,用来远程管理设备,用 23 端口;

SMTP:发邮件的协议,用 25 端口。

这里的端口号,其实就是你在礼物上写的 “小标签”,告诉下一层:“这个礼物要交给对方电脑上的 XX 应用”,这样对方收到了,才知道要把这个数据给谁。

2. 传输层:给礼物套上小盒子,写上 “门牌号”

你把礼物准备好之后,接下来要给它套一个小盒子,这个盒子就是传输层的工作。

传输层的作用,是帮你建立端到端的连接,也就是你电脑上的某个应用,和对方电脑上的某个应用之间的连接,它要保证你的数据能准确送到对应的应用那里。

这一层有两个最常见的协议,对应了两种不同的 “快递服务”:

TCP 协议:就像寄挂号信,它是面向连接的、可靠的。在发数据之前,它会先跟对方 “打招呼”,也就是我们常说的三次握手,确认双方都准备好了,然后才开始发数据。发数据的时候,它还会给每个数据编上号,对方收到了要给你回一个确认,要是没收到,它就会重发,保证数据不会丢、不会错。最后发完了,还要通过四次挥手断开连接,释放资源。
这种服务适合对可靠性要求高的场景,比如传文件、发消息、打开网页,你肯定不希望文件传一半丢了,或者网页内容错了吧?

UDP 协议:就像寄平信,它是无连接的、不可靠的。它不用跟对方打招呼,发出去就不管了,也不用确认对方有没有收到,速度非常快。
这种服务适合对实时性要求高的场景,比如直播、视频通话、游戏,这些场景里,丢一点点包没关系,大不了卡一下,但是如果等重发,反而会延迟更高,影响体验。

3. 网络层:给盒子套上大箱子,写上 “城市地址”

小盒子打包好了,接下来你要给它套一个大箱子,写上你和朋友的城市地址,这就是网络层的工作。

网络层的作用,是帮你完成主机到主机的通信,也就是把你的数据,从你的电脑,传到对方的电脑,不管你们是不是在同一个网络里。

这一层最核心的就是 IP 地址,就像你家的城市地址,路由器就是根据这个地址,帮你找路的:当路由器收到你的数据包,它会看一下目标 IP 地址,然后在自己的路由表(就像导航地图)里找最优的路径,把你的数据包转发到下一个路由器,经过很多次转发,最后送到对方的网络里。

我们平时说的 IPv4、IPv6,还有 ICMP(就是 ping 用的协议),都是这一层的协议。

4. 网络接口层:最后套上快递袋,写上 “小区门牌号”

大箱子准备好了,最后你要给它套一个快递袋,写上你和朋友在小区里的门牌号,这就是网络接口层的工作,它对应了 OSI 模型里的数据链路层和物理层。

这一层的作用,是帮你完成同一个局域网里的传输,因为到了同一个小区里,要找到具体的那户人家,就需要小区里的门牌号,也就是 MAC 地址。

MAC 地址是你网卡的出厂地址,全球唯一,就像你家的小区门牌号,在同一个局域网里,大家靠这个来找到对方。比如你要给同一个局域网里的邻居发数据,你知道他的 IP 地址,但是你不知道他的 MAC 地址,这时候就会用ARP 协议,在小区里喊一声:“谁是 [192.168.1.2](192.168.1.2) 啊?你的 MAC 地址是啥?”,然后对方就会回你,这样你就知道他的门牌号了,就能把数据准确发给他。

而物理层,就是最后的运输环节,它把你的数据,转换成电信号、光信号或者电磁波,通过网线、光纤或者无线电,把这些 0 和 1 的比特流,传到对方的设备那里。

四、封装与解封装:数据的 “打包” 与 “拆包”

讲完了每一层的工作,你应该发现了:你发数据的时候,每一层都会给你的数据,加上自己的头信息,这个过程就叫做封装

就像你寄快递:

  1. 应用层把礼物准备好,加上应用层的头;

  2. 传输层给它加上 TCP 的头,变成了 “段”;

  3. 网络层给它加上 IP 的头,变成了 “包”;

  4. 链路层给它加上以太网的头,变成了 “帧”;

  5. 最后物理层把它变成比特流,发出去。

而到了对方那里,过程刚好反过来,每一层会把自己的头拆掉,这个过程叫做解封装

  1. 物理层把比特流转成数据,交给链路层;

  2. 链路层拆掉以太网头,把剩下的交给网络层;

  3. 网络层拆掉 IP 头,把剩下的交给传输层;

  4. 传输层拆掉 TCP 头,把剩下的交给应用层;

  5. 最后应用层拿到了原始的数据,也就是你寄的礼物。

是不是非常形象?就像对方收到快递,一层一层拆开,最后拿到你给他的礼物。

而且中间的路由器,它只会解封装到网络层,看一下目标 IP,然后重新封装,转发出去,不用管上层的内容,这样转发的效率就非常高。

五、这些标准,是谁定的?

你有没有好奇过,为什么全世界的设备,都能遵守同样的规则?这就要归功于那些标准化组织了:

IETF:互联网工程任务组,它负责制定互联网的核心协议,比如 TCP、IP、HTTP 这些我们熟悉的协议,都是它制定的,通过 RFC 文档发布;

IEEE:电气和电子工程师协会,它制定了很多局域网的标准,比如我们熟悉的以太网(IEEE802.3)、Wi-Fi(IEEE802.11),都是它的成果;

ISO:国际标准化组织,就是它制定了 OSI 参考模型,虽然实际中我们用的是 TCP/IP,但是这个模型给我们提供了非常好的理论参考。

正是因为有了这些组织,大家才能遵守同样的标准,不管是华为的路由器,还是思科的路由器,不管是 Windows 的电脑,还是 Mac 的电脑,都能互相通信,这才有了我们现在的互联网。

写在最后

其实网络参考模型,并没有那么难理解,它本质上就是一套分工的规则,把复杂的网络通信,拆成了一层一层的简单工作,每个层各司其职,最终实现了全世界设备的互通。

搞懂了参考模型,你就搞懂了网络通信的核心逻辑,以后再去学具体的协议,比如 TCP、IP、ARP,你就知道它们是属于哪一层,到底在干嘛,学习起来就会轻松很多。

希望这篇文章,能帮你搞懂网络参考模型,打开网络世界的另一扇大门。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐