一文读懂OSI开放系统互联模型:从原理、数据封装到TCP/IP模型全指南
OSI 开放系统互联模型
在对 ETH 以太网通信进行讲解之前,我们需要先了解 OSI 开放系统互联模型,开放系统互联(OSI)模型是一个网络通信的概念模型,它由国际标准化组织(ISO)在 20 世纪 80 年代开发。OSI 模型将网络通信过程分为七个层次,从物理层(第 1 层)到应用层(第 7 层)。每一层都有其特定的功能和责任,确保信息能够在不同的计算机系统之间准确无误地传输。

OSI 模型分为七层,从上到下依次为::
- 应用层(Application Layer):
- 应用层是 OSI 模型的最高层,它直接为用户提供服务。应用层协议定义了应用程序之间的通信规则,如 HTTP、FTP、SMTP、DNS 等
- 表示层(Presentation Layer):
- 表示层负责数据的格式化和加密。它定义了数据的编码方式、数据压缩、数据加密和解密等
- 会话层(Session Layer):
- 会话层负责建立、管理和终止应用程序之间的会话。它提供了会话的建立、数据交换和会话恢复等功能
- 传输层(Transport Layer):
- 传输层负责端到端的通信管理,提供数据包的分段、重组、流量控制和错误检测。常见的传输层协议包括 TCP(传输控制协议)和 UDP(用户数据报协议)
- 网络层(Network Layer):
- 网络层负责数据包的路由选择和转发,确保数据包能够跨越不同的网络到达目的地。它定义了 IP 地址、路由协议等。常见的网络层协议包括 IP(IPv4 和 IPv6)、ICMP、IGMP 等
- 数据链路层(Data Link Layer):
- 数据链路层负责建立和管理节点之间的数据链路。它提供了数据帧的封装/解封装、错误检测、流量控制等功能
- 物理层(Physical Layer):
- 物理层负责在物理媒介上传输比特流,即 0 和 1 的电信号。它定义了电气规范、接口标准、线缆类型等。常见的物理层协议和设备包括以太网、USB、蓝牙和集线器

OSI 模型各层数据格式示意图:从物理层到应用层。每一层都有其特定的数据格式和处理方式。物理层处理的是原始的比特流,数据格式通常是一串连续的 0 和 1;数据链路层则将比特流封装成帧(Frame),并在帧头添加控制信息,如源地址和目的地址;网络层的数据格式是包(Packet),包含源 IP 地址、目的 IP 地址和路由信息等;传输层的数据格式是段(Segment)或数据报(Datagram),分别对应于 TCP 和 UDP 协议,提供端到端的可靠传输服务;会话层负责建立、管理和终止会话;表示层处理数据的表示、加密和压缩;应用层则是用户最直接交互的层次,数据格式取决于具体的应用需求,如 HTTP 请求和响应、电子邮件等。

OSI 模型各层功能及协议示意图:每一层都有其特定的功能和支持的协议。物理层负责比特流的物理传输,支持的协议包括以太网(Ethernet)、令牌环(Token Ring)、FDDI(光纤分布式数据接口)等。数据链路层处理数据帧的生成、接收和错误检测,支持的协议有以太网(Ethernet)、令牌环(Token Ring)、PPP(点对点协议)等。网络层负责数据包的路由选择和转发,支持的协议包括互联网协议(IP)、互联网控制报文协议(ICMP)、地址解析协议(ARP)等。传输层提供端到端的可靠传输服务,支持的协议有传输控制协议(TCP)和用户数据报协议(UDP)。会话层负责建立、管理和终止会话,支持的协议有 NetBIOS、SQL 等。表示层处理数据的表示、加密和压缩,支持的协议有 SSL(安全套接层)、TLS(传输层安全)等。应用层直接向用户提供服务,支持的协议有 HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等
以太网和 OSI 模型的关系在于:
- 物理层:以太网的物理层对应于 OSI 模型的第 1 层,它们都负责物理介质上的数据位流传输。以太网的物理层包括了光纤、双绞线等传输介质,以及相关的接口标准
- 数据链路层:以太网的数据链路层对应于 OSI 模型的第 2 层,它负责建立和管理节点之间的数据链路。以太网的数据链路层定义了帧的格式、错误检测和纠正机制等
- 网络层:虽然以太网本身没有明确的网络层,但是以太网的数据包在传输过程中会经过网络层(如 IP 协议),这与 OSI 模型的第 3 层相对应
简单来说,以太网是 OSI 模型在局域网环境中的一个具体实现,它提供了物理层和数据链路层的规范,而 OSI 模型提供了一个更为通用的框架,用于理解和设计各种网络通信协议。
工程师可以使用 OSI 模型来组织和建模复杂的网络系统架构。通过这种方式,我们可以根据其主要功能将每个系统组件的操作层进行分离。通过抽象化,将系统分解成更小、更易于管理的部分的功能,使人们更容易将其概念化为一个整体。OSI 模型不指定在级别之间使用的协议,而是指定协议执行的任务。该模型实现了网络通信开发的标准化,使人们可以快速了解、构建和分解高度复杂的系统,而无需事先了解系统。这种模型还能提取详细信息,因此工程师不需要了解模型的每个方面。在现代应用程序中,我们可以对较低级别的网络和协议抽象化,以简化系统设计和开发。

1.了解 OSI 模型需要知道的前置知识
在了解 OSI 模型前,我们需要知道以下几个在网络通信中常见的术语,包括节点、链路、协议、网络、拓扑。

1.1 节点(node)
在计算机网络中,节点是指连接到网络并能够进行数据通信的任何设备,如计算机、路由器、交换机等。
节点是网络中的基本组成单元,用于发送、接收和转发数据。
节点可以彼此相邻,其中的节点 0 可以直接连接到节点 1。
节点之间也可以有中间节点,例如节点 0 和节点 2 之间可以放置一个交换机或路由器。
1.2 链路(link)
链路是指连接网络中各个节点的物理线路或逻辑路径,可以是实际的通信线路或虚拟的通信路径。
链路可以是有线(如以太网电缆)或无线(如 Wi-Fi)。
链路可以是一对一或一对多(链路 0 为一对一,链路 1 为一对多)。
1.3 协议(protocol)
“协议定义了管理通信过程中语法(可通信的内容)、语义(如何通信)以及同步(何时通信以及通信的速度)的规则。协议可以由硬件、软件或二者的组合实现。协议可以由任何人创建,但是最被广泛采纳的协议都是基于标准的。”
—— Walter Goralski,《图解网络:TCP/IP 如何在现代网络中工作》
简单来说,协议是指在网络中通信的规则和标准,它规定了数据传输的格式、顺序和错误处理等机制。
1.4 网络(network)
网络是由多个节点和链路组成的复杂系统,它允许节点之间进行数据交换和通信。常见网络的类型包括:LAN、HAN、CAN、MAN、WAN、BAN 或 VPN:
- 局域网(LAN):覆盖范围较小,通常在一个建筑物或校园内,传输速度快,成本低
- 广域网(WAN):覆盖范围广泛,可以跨越国家甚至全球,传输速度较慢,成本高
- 城域网(MAN):介于局域网和广域网之间,覆盖范围通常是一个城市或其周边地区
- 个人区域网(PAN):以个人为中心的网络,如蓝牙、ZigBee 等无线通信技术
- 广播网络(BAN):一种点对多点的通信网络,可以进行信息的广播传输
- 虚拟私人网络(VPN):通过公共网络(如互联网)建立的专用网络,提供安全的通信路径
- 车载网络(CAN):专门用于汽车内部电子系统通信的网络标准
- 工业控制系统网络(MAN):用于工业自动化和控制系统通信的网络
1.5 拓扑(topology)
拓扑是指网络中节点和链路的物理或逻辑布局,它影响着网络的性能和可靠性。常见的拓扑结构有星型、环型、总线型、树型和网状等。

2.OSI 的物理层
2.1 物理层的基本功能
OSI 模型的物理层是 OSI 七层模型的第一层,它定义了网络通信的物理和电气特性。以下是物理层的一些关键要素:
- 节点(设备)和网络硬件:网络中的节点指的是能够发送、接收或中继数据的设备。常见的网络设备包括
- 集线器(Hub):一种基本的网络设备,用于连接多个以太网设备,使它们在逻辑上构成一个网络段
- 中继器(Repeater):用于扩展网络覆盖范围,通过重新传输或放大信号来减少信号衰减
- 路由器(Router):用于连接不同网络段,并选择最佳路径转发数据包
- 计算机、打印机:终端设备,用于发送、接收和处理数据
- 硬件组件:如天线(无线通信)、放大器(信号增强)、网卡(NIC,Network Interface Card,提供网络接口)
- 设备接口机制:设备接口机制涉及物理连接方式和接口标准
- 电缆连接:电缆通过连接器(如 RJ45)连接到设备上的插座(如以太网口)
- 连接器规格:如 RJ45 连接器通常有 8 个引脚,每个引脚有特定的功能(发送、接收等)
- 引脚状态:引脚的活动状态由电信号决定,通常是高电平或低电平
- 功能和程序逻辑:每个连接器引脚的功能和网络设备之间的通信逻辑
- 引脚功能:例如,在以太网中,某些引脚用于发送数据(TX),某些用于接收数据(RX)
- 程序逻辑:决定事件顺序的逻辑,确保节点能够正确地在第二层(数据链路层)通信
- 电缆协议和规范:网络通信协议和规范定义了网络通信的技术细节
- 以太网(CAT):定义了以太网电缆和连接器的标准
- USB:用于连接计算机和外围设备的标准
- 数字用户线(DSL):通过电话线传输数字数据的技术
- 电缆类型:不同类型的电缆适用于不同的网络环境
- 屏蔽双绞线(STP):用于减少电磁干扰
- 非屏蔽双绞线(UTP):常用于以太网连接
- 同轴电缆:用于电视和宽带互联网连接
- 信号类型:网络信号的传输方式
- 基带信号:一次传输一个数据位流,通常用于以太网
- 宽带信号:同时传输多个数据位流,常用于宽带互联网
- 信号传输方法:信号传输可以是有线或无线的
- 有线传输:如以太网(电信号)、光纤(光信号)
- 无线传输:如 WiFi(无线电波),考虑频率(如 2.4 GHz 或 5 GHz)
- 网络标准:如 100BASE-T,定义了以太网的传输速率和介质类型
2.2 基本数据单元:位和字节
对于物理层的通信来说,我们需要了解数据位和字节、数据位传输与同步、传输方式等概念:

物理层通信基础:数据位与字节的传输原理及同步机制
- 物理层的数据单元:数据位和字节
- 数据位(bit):
- 最小的数据传输单元,只有两个状态:0 和 1
- 所有更高级别的数据单元(如字节、帧、包等)都是由数据位组成的
- 字节(byte):
- 由 8 个数据位组成,是计算机处理中常用的基本数据单元
- 一个字节可以表示 256 种不同的值(2^8)
- 数据位(bit):
- 数据位传输与同步
- 数据速率(传输速率):
- 以每秒传输的数据位数来衡量,通常以 bps(bits per second)为单位,如 Mbps(百万数据位每秒)和 Gbps(十亿数据位每秒)
- 数据位同步:
- 发送端和接收端必须在同一时间参考点上协调,以确保数据位能够正确地传输和接收
- 同步方式可以通过时钟信号或者嵌入在数据流中的同步信息来实现
- 数据速率(传输速率):
- 传输方式
- 信号传输方法:
- 有线传输:如电信号(以太网)、光信号(光纤)
- 无线传输:如无线电波(WiFi、蓝牙)
- 调制技术:
- 在无线通信中,信号传输需要通过调制技术来实现,例如 AM、FM、QAM 等
- 信号传输方法:
- 传输模式
- 单工模式(Simplex):
- 数据只能单向传输,即一个节点只能发送,另一个节点只能接收
- 例如,广播电视信号
- 半双工模式(Half-Duplex):
- 数据可以双向传输,但不能同时进行,即发送和接收需要交替进行
- 例如,对讲机通信
- 全双工模式(Full-Duplex):
- 数据可以同时双向传输,即发送和接收可以同时进行
- 例如,现代电话通信、全双工以太网
- 单工模式(Simplex):
3.OSI 的数据链路层
3.1 数据链路层基本功能
OSI 模型的第二层是数据链路层,它负责在直接相连的网络节点之间提供可靠的数据传输。数据链路层将物理层传输的比特流组织成数据帧,并处理错误检测和纠正,以确保数据的可靠性。数据链路层的主要功能包括:
- 数据封装:
- 将网络层的数据包封装成帧,并在帧头和帧尾添加控制信息(如地址、错误检测码);
- 每一帧包含一个帧头、一个数据字段和一个帧尾;
- 物理地址寻址:
- 使用 MAC 地址(媒体访问控制地址)来唯一标识网络中的每个设备;
- 帧的发送和接收基于 MAC 地址进行;
- 帧同步:
- 确保帧的开始和结束能够被正确识别,通常通过特定的帧起始和结束标志实现;
- 错误检测与纠正:
- 使用循环冗余校验(CRC)或其他错误检测码来检测传输中的错误;
- 错误检测后可以请求重传,以纠正错误数据
- 流量控制:
- 调整发送方和接收方之间的数据传输速率,防止接收方缓冲区溢出
- 链路管理:
- 建立、维护和释放物理链路
- 包括链路初始化、链路维护和链路释放过程
3.2 LLC 层和 MAC 层
数据链路层通常分为两个子层:

数据链路层的子层划分
- 逻辑链路控制子层(LLC,Logical Link Control):
- 负责与网络层的接口,处理多种网络协议
- 提供流量控制、错误控制和帧同步功能
- 媒体访问控制子层(MAC,Media Access Control):
-
负责与物理层的接口,控制对共享介质的访问
-
实现物理地址寻址、帧定界和介质访问控制
-
MAC 子层负责分配硬件标识号,即 MAC 地址,来唯一标识网络上的各个设备
![9.png]()
-
MAC 地址包括 OUI 组织唯一标识符和 Vendor 厂商代码
-

交换机在数据链路层(第二层)通过维护 MAC 地址表(也称为内容可寻址存储器表,CAM 表),跟踪一个网络中所有设备的 MAC 地址。每当交换机接收到数据帧时,它会记录源 MAC 地址和接收端口,从而更新 MAC 地址表,并根据目标 MAC 地址将数据帧转发到相应的端口,实现高效的局域网内通信。

DGS-108 8 口交换机
4.OSI 的网络层
4.1 网络层的基本功能
OSI 模型的网络层是第三层,负责数据包的转发和路由选择,确保数据从源节点到达目标节点。通过网络层,我们不仅可以实现节点到节点的通信,还可以通过路由器在不同局域网 LAN 之前传输数据。网络层主要解决网络拓扑、路径选择和网络连接等问题。
网络层的主要功能包括:
- 路径选择和路由:
- 决定数据包从源节点到目标节点的最佳路径。
- 使用路由协议和算法(如 OSPF、BGP)来动态地确定和维护路由表。
- 逻辑地址分配:
- 使用 IP 地址(IPv4 或 IPv6)来标识网络中的每个设备。
- IP 地址包括网络部分和主机部分,用于确定设备在网络中的位置。
- 数据包封装和解封装:
- 将来自传输层的数据段封装成数据包,并添加网络层头部信息。
- 接收方解封装数据包,提取并传递数据段给传输层。
- 分组和重组:
- 根据网络 MTU(最大传输单元)将大数据包拆分成更小的分组。
- 接收方重新组装分组,恢复原始数据包。
- 错误处理和诊断:
- 检测和处理数据包在传输过程中可能发生的错误。
- 使用协议如 ICMP(Internet 控制消息协议)来报告网络错误和诊断信息。
4.2 路由器和路由表
路由器在网络层的作用是将数据包从源节点转发到目标节点,连接不同网络并管理它们之间的通信,连接到网络服务提供商(ISPs,Internet Service Providers)以提供互联网访问,执行网络地址转换(NAT)和安全功能,从而确保数据在多个网络之间高效、可靠地传输。

路由器在多网络互联与数据包转发中的应用

注意区分:中继器、集线器、网桥、交换机和路由器
路由器将所有的地址和路由信息都保存在路由表中,路由表包含网络层的信息,用于决定数据包的转发路径。以下是一个简单的路由表示例,展示了路由表的常见字段和内容:

路由器包括以下信息:
- 目的网络(Destination Network):数据包目标的网络地址
- 子网掩码(Subnet Mask):用于确定目的网络的范围,定义了 IP 地址的网络部分和主机部分
- 下一跳(Next Hop):到达目的网络的下一个路由器或网关的 IP 地址
- 出接口(Outgoing Interface):数据包发送到目的网络所使用的网络接口
- 路由类型(Route Type):指示路由的来源类型,例如静态路由、动态路由、默认路由等
- 路由度量(Metric):用于衡量路径优先级的数值,数值越小,优先级越高
以上示例含义为:
- 192.168.1.0/24 网络的流量通过 192.168.0.1 的下一跳路由器,经由 eth0 接口发送。该路由是静态配置的,度量值为 1
- 10.0.0.0/8 网络的流量通过 192.168.0.2 的下一跳路由器,经由 eth1 接口发送。该路由是动态学习到的,度量值为 10
- 172.16.0.0/12 网络的流量通过 192.168.0.3 的下一跳路由器,经由 eth2 接口发送。这是一个默认路由的配置,度量值为 20
- 0.0.0.0/0 表示默认路由,匹配所有未指定的目的网络,流量通过 192.168.0.4 的下一跳路由器,经由 eth3 接口发送。度量值为 50,通常是最不优先的路由
节点一旦连接到因特网,它就会被赋予一个因特网协议(IP,Internet Protocol)地址,目前常用的 IP 地址包括两种:
- IPv4(Internet Protocol version 4):
- 广泛使用的 IP 协议版本,使用 32 位地址空间
- 支持分组、路由和网络间互联
- IPv4 地址由四个十进制数组成,每个数的范围是 0 到 255,用点号(.)分隔
- 例如:172.16.254.4
- IPv6(Internet Protocol version 6):
- 下一代 IP 协议,使用 128 位地址空间,解决 IPv4 地址耗尽问题
- 提供更好的扩展性、自动配置和安全性
- IPv6 地址长度为 128 位,由 8 组 16 进制数组成,每组由冒号(:)分隔
- 例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334

ARP(地址解析协议)用于将网络层的 IP 地址映射到数据链路层的 MAC 地址。此过程对于局域网(LAN)内的设备进行通信至关重要,因为数据包在链路层的传输需要使用 MAC 地址,ARP 在网络层和数据链路层之间起到桥梁作用。

4.3 典型的网关和子网掩码配置
在配置网络设备(如计算机、路由器或嵌入式系统)时,通常需要设置 IP 地址、子网掩码和网关地址。例如:
- IP 地址:192.168.1.100
- 子网掩码:255.255.255.0
- 网关地址:192.168.1.1
网关地址是网络上的设备通过路由器或其他网关设备与其他网络通信时所需要的地址,通常指向设备所在子网的路由器地址,这样设备在需要访问外部网络时,就会将数据包发送到网关,网关负责将数据包转发到目的地。
比如有网络 A 和网络 B,网络 A 的 IP 地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为 255.255.255.0;网络 B 的 IP 地址范围为“192.168.2.1~192.168.2.254”,子网掩码为 255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行 TCP/IP 通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP 协议也会根据子网掩码(255.255.255.0)与主机的 IP 地址作 “与” 运算的结果不同判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络 A 中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络 B 的网关,网络 B 的网关再转发给网络 B 的某个主机。这就是网络 A 向网络 B 转发数据包的过程。
子网掩码用于将一个 IP 地址划分为网络地址和主机地址两部分,以确定设备所在的子网范围。它定义了 IP 地址的哪些部分是网络部分,哪些是主机部分。子网掩码不能单独存在,它必须结合 IP 地址一起使用。通过子网掩码,设备可以判断目标 IP 地址是否在同一子网内,从而决定是否需要通过网关转发数据包。
常见的子网掩码格式如下:
- 255.255.255.0:通常用于将一个 C 类网络划分为 256 个主机地址,其中 254 个可用(两个用于网络和广播)
- 255.255.0.0:用于将一个 B 类网络划分为 65536 个主机地址
- 255.0.0.0:用于将一个 A 类网络划分为 16777216 个主机地址
可以看到,对应 IP 地址的网络地址用 1 表示,对应 IP 地址的主机地址用 0 表示,IP 地址和子网掩码作逻辑“与“运算得到网络地址:
- 0 和任何数相与都等于 0
- 1 和任何数相与都等于任何数本身
4.4 基本数据单元:数据包
在网络层,数据单元被称为数据包。数据包由网络层头部和数据负载组成。

网络层数据单元:数据包的结构与 IP 头部信息解析
- 头部(Header):
- 源 IP 地址:发送节点的 IP 地址
- 目的 IP 地址:接收节点的 IP 地址
- 其他控制信息:如协议类型、时间生存值(TTL)、标识、标志和片段偏移
- 数据帧/数据负载(Payload):
- 包含从传输层接收到的数据段
以 IPv4 数据包为例,我们讲解一下数据包的基本结构:
Header:
- Version: 4
- IHL: 5 (20 bytes)
- Type of Service: 0
- Total Length: 60 bytes (header 20 bytes + data 40 bytes)
- Identification: 12345
- Flags: 0x2 (Don't Fragment)
- Fragment Offset: 0
- TTL: 64
- Protocol: 6 (TCP)
- Header Checksum: 0x1a2b
- Source IP Address: 192.168.1.10
- Destination IP Address: 192.168.1.20
- Options: None
Payload (Data):
- Data: [TCP Segment]
- Source Port: 12345
- Destination Port: 80
- Sequence Number: 123456789
- Acknowledgment Number: 987654321
- Data Offset: 5 (20 bytes)
- Flags: 0x18 (PSH, ACK)
- Window Size: 65535
- Checksum: 0xabcdef
- Urgent Pointer: 0
- Data: "Hello, World!"
- 头部(Header)
- 版本(Version): 4 位,表示 IP 协议的版本,IPv4 为 4
- 首部长度(IHL): 4 位,表示 IP 头部的长度,以 32 位字(4 字节)为单位
- 服务类型(Type of Service, ToS): 8 位,表示数据包的优先级和服务质量要求。
- 总长度(Total Length): 16 位,表示整个数据包的长度(包括头部和数据),单位为字节
- 标识(Identification): 16 位,用于标识数据包的唯一性,通常在分片时使用
- 标志(Flags): 3 位,指示数据包是否分片以及是否还有更多分片
- 片偏移(Fragment Offset): 13 位,指示数据包分片的位置
- 生存时间(Time to Live, TTL): 8 位,限制数据包在网络中的生命周期,防止无限循环
- 协议(Protocol): 8 位,指示数据包中携带的上层协议类型,如 TCP、UDP
- 头部校验和(Header Checksum): 16 位,用于检测头部的错误
- 源 IP 地址(Source IP Address): 32 位,发送数据包的设备的 IP 地址
- 目的 IP 地址(Destination IP Address): 32 位,接收数据包的设备的 IP 地址
- 选项(Options): 可选字段,用于提供额外的控制信息(如时间戳、记录路由等)
- 填充(Padding): 用于确保头部长度是 32 位的倍数
- 数据负载(Payload)
- 数据段(Data): 包含来自传输层的协议数据单元,如 TCP 段或 UDP 数据报
5.OSI 的传输层
5.1 传输层的基本功能
传输层是 OSI 模型中的第四层,它的主要功能是在源端和目的端之间提供可靠的端到端数据传输服务。传输层的主要重点是确保数据包以正确的顺序到达,没有丢失或错误,或在需要时可以无缝恢复。数据分段、传输控制、流量控制和错误控制通常是传输层的重点。
传输层的主要功能可以概括为以下几点:
- 数据分段和重组:传输层将来自会话层的数据分割成更小的段(Segments),然后在接收端重新组装这些段以还原原始数据
- 传输控制:提供端到端的通信控制,确保数据从源节点传送到目的节点的可靠性和准确性
- 错误检测和纠正:使用校验和等机制检测传输过程中可能发生的错误,并提供纠正措施
- 流量控制:管理数据流速,避免发送端发送数据过快导致接收端无法处理
- 端口管理:使用端口号标识不同的应用程序,以便在同一个设备上同时进行多种网络通信
5.2 TCP 协议和 UDP 协议
常用的传输层协议可以分为两种,TCP(传输控制协议)和 UDP(用户数据报协议):
- TCP(传输控制协议)
- 面向连接:在传输数据之前需要建立连接,通过三次握手(Three-Way Handshake)建立可靠连接
- 可靠性:提供可靠的数据传输服务,通过确认应答(ACK)和重传机制保证数据的完整性和顺序
- 流量控制:通过滑动窗口机制实现流量控制,确保发送端不会淹没接收端
- 错误检测和纠正:使用校验和来检测数据传输中的错误,并进行必要的重传
- 典型应用:HTTP/HTTPS、FTP、SMTP 等需要可靠传输的协议
- UDP(用户数据报协议)
- 无连接:无需建立连接,数据包独立传输,速度较快,但不保证可靠性
- 简单高效:没有确认应答和重传机制,适合对实时性要求高的应用
- 典型应用:DNS 查询、视频流、在线游戏等不需要严格可靠性的应用

简单来说,TCP 是一个面向连接的协议并通过握手确认、重传机制等来确保数据被正确接收,优先保证数据的完整性和正确性,它牺牲了一定的传输速度,但换来了数据传输的可靠性和有序性,TCP 非常适合于需要稳定、无差错传输的应用场景,如 Web 浏览、文件传输等;UDP 是一个无连接的协议,它不需要复杂的可靠性机制如确认、重传等,也无需事先建立连接或维护连接状态,UDP 不保证数据包能够成功送达目的地也无法确保数据包不会丢失或乱序,UDP 以速度为先,牺牲了一定的可靠性和有序性。它适用于对实时性要求高,但对数据完整性要求相对较低的应用场景,如视频会议、在线游戏等。

5.3 基本数据单元:数据段
传输层的数据单元称为段(Segment)。在 TCP 中,称为 TCP 段;在 UDP 中,称为 UDP 数据报(Datagram)。
典型 TCP 段结构如下:
+------------------------------------------------------------+
| 源端口: 12345 (16 bits) | 目标端口: 80 (16 bits)|
+------------------------------------------------------------+
| 序号: 1000 (32 bits) |
+------------------------------------------------------------+
| 确认号: 2000 (32 bits) |
+-------------------+-------+-----------+--------------------+
| 数据偏移: 5 (4 bits)| 保留 (6 bits) | 控制标志: 0x18 (PSH, ACK) |
+-------------------+-------+-----------+--------------------+
| 窗口大小: 4096 (16 bits) |
+------------------------------------------------------------+
| 校验和 (16 bits) | 紧急指针: 0 (16 bits) |
+------------------------------------------------------------+
| 选项: (可选, 0 bits) |
+------------------------------------------------------------+
| 数据: "Hello, TCP!" (10 bytes) |
+------------------------------------------------------------+
这里假设源端口是 12345,目标端口是 80(HTTP),序号为 1000,确认号为 2000,窗口大小为 4096,且携带数据“Hello, TCP!”;在控制标志中,0x18 表示 PSH 和 ACK 置位;校验和由发送方计算,以确保数据完整性。
其中:
- 源端口(Source Port):数据发送方的端口号
- 目标端口(Destination Port):数据接收方的端口号
- 序号(Sequence Number):数据段的序列号,确保数据包顺序
- 确认号(Acknowledgment Number):确认已收到数据的序列号
- 数据偏移(Data Offset):TCP 头部的长度,以 32 位字(4 字节)为单位
- 保留(Reserved):保留位,通常为 0
- 控制标志(Flags):包括 URG, ACK, PSH, RST, SYN, FIN 等
- 窗口大小(Window Size):用于流量控制,指示可以接收的数据量
- 校验和(Checksum):用于错误检测
- 紧急指针(Urgent Pointer):如果 URG 标志被设置,指示紧急数据的位置
- 选项(Options):可选字段,用于指定特殊的控制信息
- 数据(Data):实际传输的数据负载

典型 UDP 数据报结构如下:
+------------------------------------------------------------+
| 源端口: 12345 (16 bits) | 目标端口: 53 (16 bits)|
+------------------------------------------------------------+
| 长度: 18 (16 bits) | 校验和: 0x1234 (16 bits) |
+------------------------------------------------------------+
| 数据: "Hello, UDP!" (10 bytes) |
+------------------------------------------------------------+
这里假设源端口是 12345,目标端口是 53(DNS),数据长度为 18 字节(包括 8 字节的头部),且携带数据“Hello, UDP!”。
其中:
- 源端口(Source Port):数据发送方的端口号
- 目标端口(Destination Port):数据接收方的端口号
- 长度(Length):整个数据报的长度,包括头部和数据部分
- 校验和(Checksum):用于错误检测
- 数据(Data):实际传输的数据负载
6.OSI 的会话层
6.1 会话 Session 的基本概念
在计算机网络和通信中,会话(Session)是指在两个或多个设备、用户或应用程序之间进行的通信交换过程。会话包含从建立连接、维持通信到最终终止连接的整个过程。会话可以是短暂的,如一次 HTTP 请求,也可以是长期的,如用户登录后的交互过程。
会话过程如下:
- 会话建立:会话开始时,通信双方需要协商和建立连接。这通常包括认证、资源分配和会话参数的设置
- 会话管理:在会话期间,会话层负责管理数据的传输、同步和错误控制。它确保数据在正确的顺序到达,并且可以在中断后恢复
- 会话终止:会话结束时,会话层负责释放资源和断开连接。正确终止会话可以防止资源泄漏和不必要的占用
简单来说,会话就是一个建立在两个特定的用户应用之间的连接。
根据会话持续时间,我们可以将会话分为两种类型:
-
持久会话:持久会话是指在整个通信过程中保持连接的会话类型。这通常用于需要连续互动的应用,例如在线聊天、视频会议或远程桌面访问
-
非持久会话:非持久会话是指短暂的、一次性的会话类型。每次请求和响应都是独立的,不需要持续的连接。例如,大多数 HTTP 请求都是非持久的
根据应用程序、协议和硬件的不同,会话可以支持以下模式:
-
单工模式(Simplex Mode):数据只在一个方向上传输。一个设备只发送,另一个设备只接收。比如,键盘到计算机的通信。
-
半双工模式(Half-Duplex Mode):数据可以在两个方向上传输,但不能同时进行。通信双方轮流发送和接收数据。比如,对讲机通信。
-
全双工模式(Full-Duplex Mode):数据可以在两个方向上同时传输。通信双方可以同时发送和接收数据。比如,电话通信和现代以太网连接。
6.2 客户端-服务器模型和请求-响应模型
客户端-服务器(Client-Server)模型和请求-响应(Request-Response)模型是计算机网络通信的基础概念,它们描述了在网络应用中,如何进行数据传输和处理。
客户端-服务器模型是一种网络架构,其中计算任务分为客户端和服务器。客户端请求服务,服务器提供服务:
暂时无法在飞书文档外展示此内容
-
客户端(Client):请求信息或服务的应用程序或设备。客户端通过网络向服务器发送请求,并等待服务器的响应
-
服务器(Server):提供信息或服务的应用程序或设备。服务器接收客户端的请求,处理请求,并返回相应的信息或服务
请求-响应模型是客户端-服务器模型的具体通信方式之一。在这个模型中,通信由一系列请求和响应组成:
暂时无法在飞书文档外展示此内容
- 请求(Request):客户端向服务器发送请求,包含需要执行的操作或需要获取的数据。
- 响应(Response):服务器处理请求,并将结果返回给客户端。响应可以是请求的数据、执行操作的结果,或者错误信息。
在请求-响应模型中,多次请求-响应交互构成了一个会话,例如,在网页浏览中,用户与网页服务器之间的交互就可以被视为一种会话:
- 客户端向服务器发送请求:请求信息:包含请求的类型、目标资源、参数等;
- 服务器接收并处理请求:处理请求:根据请求类型和参数,执行相应的操作(如查询数据库、计算结果);
- 服务器返回响应:响应信息:包含操作的结果、请求的数据、状态码等;
- 客户端接收并处理响应:处理响应:根据响应信息,执行相应的操作(如显示数据、更新界面)。
6.3 会话层的基本功能
在 OSI 模型中,会话层(第 5 层)负责会话的建立、管理和终止。它的主要功能包括:
- 会话控制:管理会话的建立、维护和终止
- 同步:提供数据流的同步功能,例如设置检查点,以便在会话中断时能够从检查点恢复
- 对话控制:管理全双工通信中的对话方向,防止数据冲突
会话层和相关协议在通信中提供故障解决程序,以确保可靠性和数据完整性。这些程序包括:
- 错误检测和校正:使用校验和、循环冗余校验(CRC)等技术来检测和校正传输中的错误
- 重传机制:如果检测到数据包丢失或损坏,会话层可以请求重传丢失或损坏的数据包
- 超时和重试:如果在一定时间内没有收到预期的响应,会话层可以重新发送请求
- 会话恢复:如果会话中断,会话层可以从上次同步点恢复会话,避免数据丢失
6.4 会话层常见协议
在 OSI 模型的第五层(会话层),有几种常见的协议和技术用于管理和控制网络会话。这些协议和技术确保了通信会话的建立、管理和终止。以下是一些会话层协议的例子:
- NetBIOS(Network Basic Input Output System):NetBIOS 是一个用于网络通信的 API,它提供了会话层和表示层服务,使应用程序能够在局域网(LAN)中进行通信。
- 主要功能:
- 提供会话建立和终止功能
- 支持会话管理和控制
- 提供名称服务和数据报服务,允许应用程序在网络中找到并访问其他计算机
- 应用场景:
- 主要用于局域网中的文件和打印机共享
- 在 Microsoft 网络中广泛使用,用于 Windows 计算机之间的通信
- 主要功能:
- RPC(Remote Procedure Call Protocol):远程过程调用协议(RPC)允许程序调用网络上另一台计算机上的程序,就像调用本地程序一样。
- 主要功能:
- 使程序能够在网络上调用远程服务
- 管理会话的建立、数据传输和会话终止
- 提供同步和异步通信机制
- 应用场景:
- 分布式计算环境中的应用程序通信
- 网络服务和分布式系统中,客户端调用远程服务器上的服务
- 主要功能:
- PPTP(Point-to-Point Tunneling Protocol):点对点隧道协议(PPTP)是一种用于虚拟专用网络(VPN)的协议。
- 主要功能:
- 创建安全的、加密的隧道,以便通过公共网络(如互联网)传输数据
- 管理隧道的建立、维护和终止
- 应用场景:
- 远程访问 VPN,允许用户通过安全隧道访问公司网络资源
- 主要功能:
- SMB(Server Message Block):服务器消息块协议(SMB)用于在网络上共享文件、打印机和串行端口。
- 主要功能:
- 提供文件和打印机共享服务
- 管理会话的建立和终止
- 支持文件的读写操作和共享权限管理
- 应用场景:
- Windows 网络中的文件和打印机共享
- NAS(网络附加存储)设备中的文件共享
- 主要功能:
7.OSI 的表示层
7.1 表示层的基本功能
OSI 模型的第六层是表示层(Presentation Layer)。表示层的主要作用是处理数据格式、加密和解密、数据压缩和解压缩等。它是数据在网络上进行传输前的最后一层处理,也是数据从网络接收到应用程序前的第一层处理。
表示层的主要任务包括:
- 数据格式化:将数据转换为应用程序可以识别的格式
- 数据加密:对数据进行加密,以保护其在传输过程中的安全性
- 数据压缩:对数据进行压缩,以减少传输数据的大小,提高传输效率
- 数据解压缩:对接收到的数据进行解压缩,恢复原始数据格式
- 数据访问控制:控制对数据的访问权限,确保数据的安全性
7.2 表示层的数据格式化方法
- ASCII(American Standard Code for Information Interchange)
- 概述:
- ASCII 是一种七位字符编码标准,最初设计用于信息交换。它定义了 128 个字符,包括英文字母、数字、标点符号和一些控制字符(如换行符)
- 特点:
- 使用七位二进制数表示一个字符,每个字符的编码范围是从 0 到 127
- ASCII 编码广泛用于文本文件和数据交换,因为它兼容性强并且简单
- 扩展:
- ISO-8859-1(也称为 Latin-1)是 ASCII 的超集,扩展了 ASCII 的字符集以包括西欧语言中使用的额外字符,如一些附加的符号和字母
- 概述:
- EBCDIC(Extended Binary-Coded Decimal Interchange Code)
- 概述:
- EBCDIC 是 IBM 设计的字符编码标准,主要用于大型机系统。它是一个八位编码系统,与 ASCII 不兼容
- 特点:
- 使用八位二进制数表示一个字符,字符的编码范围从 0 到 255
- EBCDIC 主要用于老式的 IBM 大型机和一些主机系统,因此它与现代计算机系统和互联网标准(如 ASCII 和 Unicode)不兼容
- 应用:
- 主要用于大型机环境中的数据处理和存储
- 概述:
- Unicode
- 概述:
- Unicode 是一种字符编码标准,旨在为所有书写系统提供唯一的编码。它支持多种编码形式,如 UTF-8、UTF-16 和 UTF-32
- 特点:
- UTF-8:变长编码,使用 1 至 4 个字节表示一个字符,兼容 ASCII,是最常见的 Unicode 编码形式
- UTF-16:使用两个或四个字节表示一个字符,能够表示所有的 Unicode 字符
- UTF-32:使用固定的四个字节表示一个字符,支持所有 Unicode 字符,简化了字符处理,但相对浪费空间
- 应用:
- Unicode 使得不同语言和字符集的文本可以被统一处理和显示。它广泛应用于现代计算机系统、互联网和软件中,以支持全球多种语言的字符集
- 概述:
7.3 网络安全协议
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是网络安全协议,用于在计算机网络上加密通信,确保数据在传输过程中的安全性。TLS 是 SSL 的继任者,两者之间有许多相似之处,但 TLS 提供了更强的安全性和更多的功能改进。
SSL(Secure Sockets Layer)SSL 是最早的加密协议,由 Netscape 开发。它主要用于保护网络通信的机密性和完整性。SSL 通过加密数据流、防止数据篡改和验证通信双方的身份来实现安全通信。
SSL 协议有两个版本:
- SSL 2.0(1995 年):最早的版本,存在一些安全漏洞
- SSL 3.0(1996 年):改进了 SSL 2.0,但也存在一些已知的安全问题
TLS 是 SSL 的继任者,由互联网工程任务组(IETF)开发。TLS 改进了 SSL 的安全性,并提供了更强的加密算法和认证方法。TLS 协议确保数据传输的机密性、完整性和身份验证。
TLS 协议有四个版本:
- TLS 1.0(1999 年):基于 SSL 3.0,进行了改进
- TLS 1.1(2006 年):进一步增强了安全性,修复了 TLS 1.0 的一些问题
- TLS 1.2(2008 年):增加了对更强加密算法的支持,并改进了协议的安全性
- TLS 1.3(2018 年):简化了握手过程,提供了更强的加密和更快的性能,改进了安全性和隐私保护
SSL 和 TLS 加密解密流程如下:
- 握手阶段(Handshake Phase):
- 客户端和服务器建立安全连接,并交换加密算法和密钥信息
- 服务器提供其数字证书,客户端验证证书的有效性
- 双方协商加密算法和生成会话密钥,用于加密实际数据
- 加密阶段(Data Transfer Phase):
- 客户端和服务器使用协商好的加密算法和会话密钥来加密和解密数据
- 数据在网络上进行安全传输,防止窃听和篡改
- 关闭阶段(Termination Phase):
- 客户端和服务器终止会话,释放相关资源
8.OSI 的应用层
8.1 应用层的基本功能
OSI 模型的第七层是应用层(Application Layer)。应用层是 OSI 模型中的最高层,直接为用户的应用程序提供网络服务。它处理应用程序与网络之间的交互,提供了与用户和应用程序直接接口的功能。这里,应用程序指的是安装在操作系统中的软件程序,例如网页浏览器(如 Firefox)和文字处理程序(如 Microsoft Word)。某些应用程序在后台执行专门的网络功能。例如,电子邮件客户端程序使用 SMTP、POP3 或 IMAP 协议在网络上发送和接收电子邮件。这些协议都运行在应用层,确保电子邮件能够正确传输。
应用层主要功能为:
- 网络服务:提供与网络通信相关的服务,如电子邮件、文件传输和网页浏览等
- 协议支持:支持各种应用层协议,这些协议定义了应用程序如何通过网络进行通信
- 数据格式化:将应用程序生成的数据格式化为可以通过网络传输的格式
- 用户接口:提供网络应用程序的用户接口,使用户能够通过网络执行操作
- 会话管理:管理和控制会话的建立、维护和终止,虽然这主要是在会话层完成,应用层通常与会话管理交互
8.2 应用层常用协议
应用层包括了多种协议,这些协议支持不同类型的网络应用和服务:
- FTP(File Transfer Protocol)
- 用于在网络上进行文件传输。支持文件上传和下载、文件管理(如删除和重命名)等功能
- SSH(Secure Shell)
- 提供安全的远程访问和管理功能。通过加密的通道允许用户远程登录到另一台计算机,执行命令和管理系统
- SMTP(Simple Mail Transfer Protocol)
- 用于发送电子邮件。定义了邮件服务器如何发送和转发电子邮件
- IMAP(Internet Message Access Protocol)
- 用于从邮件服务器上访问和管理电子邮件。支持在服务器上保存邮件,并提供对邮件的灵活访问和管理
- DNS(Domain Name System)
- 将域名转换为 IP 地址,允许用户通过域名访问网络资源。支持域名解析、负载均衡和服务发现等功能
- HTTP(Hypertext Transfer Protocol)
- 用于网页浏览和数据传输。定义了客户端(浏览器)和服务器之间的请求和响应过程

对 ETH 以太网通信进行讲解之前,我们需要先了解 OSI 开放系统互联模型,开放系统互联(OSI)模型是一个网络通信的概念模型,它由国际标准化组织(ISO)在 20 世纪 80 年代开发。OSI 模型将网络通信过程分为七个层次,从物理层(第 1 层)到应用层(第 7 层)。每一层都有其特定的功能和责任,确保信息能够在不同的计算机系统之间准确无误地传输。

浙公网安备 33010602011771号