一、网络模型概述
网络模型是为了降低数据在网络中传输的复杂度而提出的分层结构。它使得网络通信过程变得模块化,每一层都有明确的功能定义,这极大地便利了网络协议的设计、故障排查和分析。
目前主要存在两种模型:
- OSI七层参考模型:理论上的标准模型,定义了网络功能的完美框架。
- TCP/IP五层模型:事实上的工业标准,是互联网真正运行的协议栈。
二、OSI七层模型与TCP/IP五层模型
OSI七层模型
Open System Interconnect(开放式系统互连参考模型),共分为七层:
- 应用层 (Application Layer)
- 表示层 (Presentation Layer)
- 会话层 (Session Layer)
- 传输层 (Transport Layer)
- 网络层 (Network Layer)
- 数据链路层 (Data Link Layer)
- 物理层 (Physical Layer)
TCP/IP五层模型
在实际应用中,通常将OSI的上三层(应用层、表示层、会话层)合并为一层,形成更实用的五层模型:
- 应用层 (Application Layer)
- 传输层 (Transport Layer)
- 网络层 (Network Layer)
- 数据链路层 (Data Link Layer)
- 物理层 (Physical Layer)
三、各层功能详解
1. 应用层 (Application Layer)
- 功能:提供人与网络间的接口,各种软件(如浏览器、微信、邮件客户端)就在这一层运作。
- 作用:产生需要传输的数据。
- 典型协议:HTTP, HTTPS, FTP, DNS, DHCP, NTP等。
2. 表示层 (Presentation Layer)
- 功能:负责数据格式的转换,确保一个系统应用层发出的信息能被另一个系统的应用层读取。
- 具体工作:加/解密、压缩/解压缩、编码/解码(如将图片转换为二进制数据)。
3. 会话层 (Session Layer)
- 功能:负责建立、维持和断开一次通信会话。
- 例子:当你登录一个网站时,会话层负责管理你从登录到退出的整个连接过程。
4. 传输层 (Transport Layer)
- 核心功能:负责实现数据端到端的传输。所谓“端”就是主机上的应用程序。
- 关键概念:端口号 (Port)。端口号用于识别主机上不同的应用程序,范围是 1—65535。
- 例如:Web服务默认使用80端口,FTP服务默认使用21端口。
- 查看命令:使用
netstat -an命令可以查看本机正在监听和建立的网络连接及其端口号。
5. 网络层 (Network Layer)
- 功能:负责数据网络到网络(或网段到网段)的通信,即选路。
- 典型设备:路由器 (Router)。
- 依赖的地址:IP地址。
- 典型协议:IP协议、ICMP协议(
ping命令就用它)、ARP协议。
6. 数据链路层 (Data Link Layer)
- 功能:负责数据点到点的通信(例如,同一局域网内从一台交换机到另一台交换机)。
- 典型设备:交换机 (Switch)。
- 依赖的地址:MAC地址(物理地址、硬件地址),理论上全球唯一。
- 查看命令:使用
ipconfig /all命令中的“物理地址”就是本机网卡的MAC地址。
7. 物理层 (Physical Layer)
- 功能:定义物理设备的标准,负责在物理介质上传输原始的比特流(0和1)。
- 关心的问题:电压、线缆规格、接口类型、信号传输距离等。
四、数据的封装与解封装
数据在网络中传输时,就像寄送一个包裹,需要经过层层打包和拆包的过程。
封装过程 (发送端)
数据从应用层产生,自上而下传输,每经过一层都会被添加一个该层的“头部”信息(就像给包裹加一层包装和快递单),这个过程称为封装。
- 应用层:产生原始数据。
- 传输层:将数据分段,并添加TCP或UDP头部,头部中包含源端口号和目的端口号。封装后的数据称为段 (Segment)。
- 网络层:添加IP头部,头部中包含源IP地址和目的IP地址。封装后的数据称为包 (Packet)。
- 数据链路层:添加以太网头部和尾部,头部中包含源MAC地址和目的MAC地址。封装后的数据称为帧 (Frame)。
- 物理层:将帧转换成比特流,通过网线、光纤等物理介质发送出去。
解封装过程 (接收端)
接收端自下而上接收数据,逐层剥离头部,读取信息,最终将原始数据送达目标应用程序,这个过程称为解封装。
- 物理层:接收比特流,将其重组为数据帧。
- 数据链路层:查看帧头中的MAC地址,如果目标是本机,则剥离帧头和帧尾,将数据包向上传递给网络层。
- 网络层:查看IP包头中的IP地址,确认无误后,剥离IP头,将数据段向上传递给传输层。
- 传输层:查看TCP/UDP头中的端口号,确定是哪个应用程序的数据,剥离传输层头,将原始数据向上传递给应用层。
- 应用层:将数据呈现给用户。
五、典型协议详解
1. 应用层协议
- HTTP/HTTPS:超文本传输协议,用于访问网站。HTTP是明文的,HTTPS是加密的。
- FTP:文件传输协议,用于文件共享和传输。
- NTP:网络时间协议,用于设备间的时间同步。
- DHCP:动态主机配置协议,自动为网络中的设备分配IP地址。
2. 传输层协议
TCP (传输控制协议)
- 特点:面向连接、可靠传输。
- 可靠性机制:通过确认应答、超时重传、滑动窗口等机制保证数据不丢失、不重复、按序到达。
- TCP连接管理:
- 三次握手 (Three-way Handshake):建立连接
- 客户端发送SYN报文(同步报文),请求建立连接。
- 服务端收到后,回复SYN+ACK报文(同步+确认报文)。
- 客户端再回复ACK报文(确认报文)。连接建立成功,双方可以开始传输数据。
- 四次挥手 (Four-way Handshake):断开连接
- 主动方发送FIN报文(结束报文),请求断开连接。
- 被动方回复ACK报文,确认收到断开请求。
- 被动方处理完剩余数据后,发送自己的FIN报文。
- 主动方回复ACK报文。等待一段时间后,连接彻底断开。
- 三次握手 (Three-way Handshake):建立连接
UDP (用户数据报协议)
- 特点:无连接、不可靠传输。
- 优点:开销小、速度快。
- 适用场景:视频通话、直播、DNS查询等对实时性要求高、可容忍少量丢失的场景。
3. 网络层协议
ARP (地址解析协议)
- 作用:根据已知的IP地址,查询其对应的MAC地址。
- 工作过程:设备会在本局域网内广播一个ARP请求:“谁的IP是X.X.X.X?请告诉你的MAC”。目标设备收到后,会单播回复自己的MAC地址。
- 查看ARP缓存:
arp -a命令可以查看本机缓存的IP地址与MAC地址的对应关系。 - 清空ARP缓存:
arp -d命令可以清空缓存表(需要管理员权限)。
总结
网络模型是理解所有网络通信技术的基石。OSI七层模型提供了一个理想的理论框架,而TCP/IP五层模型则是我们每天都在使用的实践标准。数据通过封装和解封装在不同层之间流动,每一层都使用特定的协议和地址来完成自己的使命。理解这个过程,对于进行网络配置、故障排除和安全分析都至关重要。