网络核心|OSI七层、TCP/IP五层模型,封装和分用详解
标签:#计算机网络 #OSI七层 #TCPIP五层 #封装分用 #网络分层
上一篇我们了解网络发展,IP、端口、五元组、协议的基础概念。本篇聚焦网络协议分层,这是计算机网络最核心的思想。
一、什么是协议分层?为什么要分层?
复杂的网络通信,如果全部做成一大套规则,代码会无比庞大,修改一个功能,可能牵动全部逻辑。于是人们想到分层设计。
类比打电话的例子:分成两层------语言层、通信设备层。
- 两个人说汉语沟通(语言层),底层设备可以换成座机、对讲机,上层语言逻辑不用改动。
- 底层设备不变,两个人换成说英语,底层通信硬件也不用改动。
分层的核心好处,和面向接口编程思想一模一样:
- 层与层之间只定义接口规范,下层对上层隐藏内部实现细节;
- 上层只调用下层提供的服务,不用关心下层怎么实现;
- 某一层技术升级替换,其他层不受影响,便于维护、扩展。
二、OSI七层参考模型
OSI全称开放系统互连模型,它是一套理论规范,没有真正落地实现,但是是所有网络的理论框架。
| 分层 | 名称 | 核心功能 |
|---|---|---|
| 7 | 应用层 | 针对应用的协议:邮件、文件传输、远程登录 |
| 6 | 表示层 | 数据格式转换,做编解码、加密解密 |
| 5 | 会话层 | 建立、管理、断开通信会话连接 |
| 4 | 传输层 | 两台主机之间进程的数据传输,保障可靠性 |
| 3 | 网络层 | IP地址管理,路由选择,决定数据走哪条路 |
| 2 | 数据链路层 | 在相邻设备之间传输帧,差错校验 |
| 1 | 物理层 | 传输0/1比特流;网线、光纤、电信号硬件规格 |
OSI七层模型过于复杂,现实网络没有直接使用,实际工程使用TCP/IP五层模型。
三、TCP/IP五层模型(工程实际使用)
TCP/IP协议簇,分为五层,很多教材把物理层去掉,称为TCP/IP四层模型。
| 分层 | 核心作用 | 典型协议 | 典型设备 |
|---|---|---|---|
| 应用层 | 应用程序之间交互;网络编程主要就是写这一层 | HTTP、HTTPS、FTP、SMTP、SSH | 主机(软件层面) |
| 传输层 | 端到端进程通信,可靠/不可靠传输 | TCP、UDP | 操作系统内核 |
| 网络层 | IP寻址,路由选路 | IP、ICMP、ARP | 路由器(工作在网络层) |
| 数据链路层 | 相邻设备传输帧,帧校验 | 以太网协议 | 传统二层交换机 |
| 物理层 | 传输比特流,网线、光纤、电磁波 | 硬件电气规范 | 集线器Hub |
设备工作在哪一层(传统设备)
- 主机:实现全部五层(内核实现传输层到物理层,应用程序实现应用层)
- 路由器:网络层、链路层、物理层(下三层)
- 交换机(二层):数据链路层 + 物理层(下两层)
- 集线器Hub:只工作在物理层
注意:现代有三层交换机、四层路由器,已经突破传统分层,面试一般考察传统设备。
四、数据包的一生:封装与分用
数据包每经过一层,都要做处理:发送端封装,接收端分用(解封装)。
1. 封装 Encapsulation(发送主机,从上到下)
应用程序生成原始用户数据,交给应用层;
每往下传递一层,当前层在数据前面加上自己的头部Header(部分层还有尾部)。
各层数据包名字:
- 传输层:TCP段(segment)
- 网络层:IP数据报(datagram)
- 数据链路层:帧(frame)
流程简单梳理:
用户数据 →(加应用层头部)→(加TCP头部)TCP段 →(加IP头部)IP数据报 →(加以太网头部+尾部)以太网帧 → 变成比特流,通过网线发出。
2. 分用(解封装,接收主机,从下往上)
数据包到达目标主机,从物理层往上传递:
每一层,剥掉属于本层的头部,读取头部信息,根据头部记录的上层协议类型,把剩下的数据交付给上一层。
- 以太网链路层:根据帧头部的帧类型,交给IP/ARP等上层;
- IP层:根据IP头部协议字段,交给TCP、UDP、ICMP;
- TCP/UDP层:根据端口号,把数据交给主机上对应的应用进程。
跨网段通信场景:数据包会经过路由器。路由器只会处理到网络层,剥掉链路层头部,重新封装新链路层头部转发,不会改动传输层、应用层内容。
五、总结
- 分层是网络的灵魂:解耦,方便维护迭代;OSI七层是理论,TCP/IP五层是现实工程实现。
- 记住设备分层:路由器工作网络层,二层交换机链路层,集线器物理层。
- 封装:发送方自上而下每层加头部;分用:接收方自下而上剥头部,分发数据给上层。
理解分层、封装分用之后,再去学习TCP协议三次握手、四次挥手,就不会觉得抽象难懂。后续博客,我们继续拆解传输层TCP与UDP。