OSI参考模型概述
扩展
几个极易混淆的缩写
| 英文 | 说明 |
|---|---|
| OSI ( Open System Interconnect ) | 开放系统互联参考模型 |
| ISO( International Organization for Standardization ) | 国际标准化组织 |
| IOS ( Internetwork Operating System ) | 思科网络操作系统「华为的网络操作系统叫VRP、华三的网络操作系统叫Comware、锐捷的网络操作系统叫RGOS] |
| iOS( iPhone Operating System ) | 苹果移动操作系统「2010年获得思科名称授权」 |
常见国际标准化组织
| 中文名 | 英文名 | 说明 |
|---|---|---|
| 国际标准化组织(ISO) | (International Organization for Standardization) | 标准化领域中的一个国际组织,,定义很多领域的国际标准 |
| 电子电气工程师协会(IEEE) | (Institute of Electrical and Electronics Engineers) | 定义一些二层标准,如以太网 |
| 美国国家标准局(ANSI) | (American National Standards Institute) | |
| 电子工业协会(EIA/TIA ) | (Electronic Industries Association) | 定义一些底层东西 |
| 国际电信联盟( ITU ) | (International Telecommunication Union) | 运营商相关标准制定,如运营商级别的以太网、城域网技术标准 |
| 国际互联网工程任务组/INTERNET工程任务委员会(IETF) | (The Internet Engineering Task Force) | 网络层的很多标准由其定义,RFC文档即由此机构定义,如OSPF,RFC1918当中定义了私有地址,很多人是思科的工程师 |
OSI参考模型
高层和低层分工
上三层功能:负责主机之间的数据处理
下四层功能:负责网络数据传输

七层模型功能详解
| 层次 | 功能关键词 | 主要职责 |
|---|---|---|
| 应用层 | 用户接口、应用协议支持 | 提供网络服务与用户或应用程序的直接接口,支持如HTTP、FTP、SMTP等高层协议,实现具体应用功能,如文件传输、电子邮件、网页浏览等 即各种应用程序、协议 |
| 表示层 | 数据表示、加密/解密、压缩/解压 | 处理数据的表现形式,如数据加密、解密,数据转换,确保数据以能被对端应用程序理解的格式进行传输 即数据和信息的语法转换内码,数据压缩解压、加密解密 |
| 会话层 | 会话管理、同步 | 建立、管理、终止会话连接,同步会话过程,控制会话数据流的逻辑连接。 即为通信双方指定通信方式,并创建、注销会话 |
| 传输层 | **端到端(起点和终点)**的可靠传输 | 建立端点间的连接、错误恢复、流量控制、数据分段与重组,如TCP提供可靠服务,UDP提供无连接服务 |
| 网络层 | - 逻辑寻址 - 路由选择 |
IP寻址(逻辑寻址)、路由选择、分组转发,实现跨网络的路径选择 |
| 数据链路层 | 链路上节点到节点的可靠传输 | 成帧、错误检测与纠正、流量控制、MAC寻址、链路管理 |
| 物理层 | 机械电气规约 | 定义接口规格、传输介质特性、信号类型等,实现比特流的物理传输 |
另附表如下
| 层次 | 功能 |
|---|---|
| 应用层 | 1. 为应用软件提供接口,使应用程序能够使用网络服务 2. 常见的应用层协议∶ http(80)、ftp(20/21)、smtp(25)、pop3(110)、telnet(23)、dns(53)等 |
| 表示层 | 1. 数据的编码和解码 2. 数据的加密和解密 3. 常见的标准:ASCII、JPEG |
| 会话层 | 1. 负责建立、管理和终止表示层实体间的会话连接 2. 在设备或者节点之间提供会话控制 3. 它在系统之间协调通信过程 (了解,会话层和表示层已经使用不多,融合到应用层当中去了) |
| 传输层 | 1. 负责将来自上层应用程序的数据进行分段和重组,并将它们组合为同样的数据流形式。 2. 提供端到端的数据传输服务 3. 传输层协议:TCP、UDP |
| 网络层 | 1. 定义了逻辑地址(三层地址) 2. 分组寻址:负责将分组数据从源端传输到目的端 3. 路由选择、维护路由表 |
| 数据链路层 | 1. 在不可靠的物理链路上,提供可靠的数据传输服务,把帧从一跳(节点)移动到另一跳(节点) 2. 组帧、物理编址、流量控制、差错控制(帧校验位FCS) 3. 局域网链路层协议:以太网、令牌环、FDDI 、Apple Talk(最常用以太网) 4. 广域网链路层协议:X.25、FR、PPP、HDLC(最常用PPP、HDLC) |
| 物理层 | 1. 在提供机械和电气规约(接口、线缆) 2. 如双绞线线序、光纤接口SFP(千兆接口)、SFP+(万兆接口)、QSFP+(40G接口) 3. 物理层标准规定了信号、连接器的电缆要求 接口及连接器示例图 物理层的光纤接头 物理层——双绞线线序![]() |
OSI模型理解数据封装传输解封装过程

封装

解封装

各个层传输单元的叫法
| 层 | 封装单元叫法 |
|---|---|
| 应用层(含OSI七层模型的应用层、表示层、会话层) | 协议数据单元PDU(Protocol Data Unit) |
| 运输层 | 数据段(Segment) |
| 网络层 | 数据包(Packet) |
| 数据链路层 | 数据帧(Frame) |
| 数据链路层物理层 | 比特流(Bit) |
辅助理解
辅助理解封装

网络和交换机的发展过程(网络及网络设备演进历史)
计算机网络演进历史
1946年2月14日,冯·诺依曼研制世界第一台电子计算机ENIAC问世。
1969年11月,美国国防部建立ARPAnet网络,只有4个结点,加利福尼亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学(这三所大学都在加州,硅谷亦在加州)、犹他州大学四所大学的4台大型计算机,这是现代计算机网络的雏形。
网络设备的演进历史
| 网络发展阶段 | 说明 | 工作层次 | 存在问题 | 例图 |
|---|---|---|---|---|
| 主机直连 | 最早的计算机网络就是主机直接连接 | 物理层 | 互联距离限制 | ![]() |
| 中继器 | 直连主机的网络无法远距离传输,中继器作为物理层设备,可以将信号放大使得完成更远距离传输 | 物理层 | 中继器只有2个接口,无法接入多个设备 | ![]() |
| 集线器 | 随着越来越多设备需接入网络,出现了另一个物理层设备集线器HUB,集线器也可以放大信号 | 物理层 | - 集线器工作原理:从一个接口进入的数据,进行信号放大之后,向其它所有接口进行泛洪(广播) - 若将2个集线器连接使用,则会形成通信环路,形成广播风暴,极大影响通信效率 |
![]() |
| 交换机 | 数据交换不再使用泛洪方式,而是使用专用交换通道 | 数据链路层 | - | ![]() |
| 路由器 | - 由于有了隔离广播域的需求,交换机引入了VLAN虚拟局域网 - 划分VLAN之后的VLAN10和VLAN20默认不能进行通信,各个VLAN之间需要使用三层设备路由器来实现跨VLAN通信 |
网络层 | - | ![]() |
| 三层交换机 | 交换机内部既有交换模块,又有路由模块,相当于是路由器和交换机的组合体,在三层交换机内部即可实现VLAN之间的通信 | 网络层+数据链路层 | - | ![]() |
| 多业务交换机 | 多业务交换机(对核心交换机通过插板卡实现多种功能):FW(防火墙模块板卡)/AC(行为控制模块板卡)/LB/WS(无线模块板卡),即通过在交换机上插板卡实现传输层、应用层功能(4~7层多业务交换机)等 | 网络层及以上 | - | ![]() |
| 可编程交换机SDN | - 传统交换机:每台设备具有转发层面(数据转发)和控制层面(跑路由协议,路由协议用来生成转发表) - SDN架构:交换机只保留转发层面,只负责数据转发,其他功能通过SDN控制器来实现,不需要运行路由协议了,所有的转发表通过SDN控制器来下发。另外,SDN控制器也可以通过编程实现各种功能NFV如防火墙、负载均衡等 |
网络层及以上 | - | ![]() |
数通设备总结

注意理解:
- 网桥就是2个口的二层交换机
- 中继器就是2个口的集线器
TCP/IP四层模型
对比OSI七层模型和TCP/IP四层模型
五层架构的TCP/IP模型,标准TCP/IP将下两层(即数据链路层和物理层)统称网际接入层,即成为TCP/IP四层模型

TCP/IP协议簇——TCP/IP(传输控制协议/因特网(互联网)协议)
TCP(传输控制协议,Transmission Control Protocol)、IP(互联网协议,Internet Protocol)
传输控制协议/因特网协议(TCP/IP )簇是由美国国防部(DoD)所创建的,主要用来确保数据的完整性及在毁灭性战争中维持通信。
是由一组不同功能的协议组合在一起构成的协议簇。(TCP/IP包含很多种协议,其中最重要的就是传输层的TCP协议和网络层的IP协议,通过这2个典型的协议来代表整个协议簇)
TCP/IP是当今数据网络的基础
TCP/IP参考模型
| 层次 | 描述 |
|---|---|
| 应用层 | 对应OSI参考模型的高层,为用户提供所需要的各种服务 例如:FTP、Telnet、DNS、SMTP等 |
| 传输层 | 为应用层实体提供端到端的通信功能 |
| 网络层 | 定义逻辑地址,路由选择(路由和寻址) |
| 数据链路层 | 将分组数据封装成帧,提供节点到节点的传输 |
| 物理层 | 在媒介上传输比特流;提供机械和电气规约 |
TCP/IP参考模型对应的各种协议
| 层次 | 协议/技术 |
|---|---|
| 应用层 | Telnet, FTP, TFTP, SNMP, HTTP, SMTP, NFS, DHCP |
| 传输层 | TCP, UDP |
| 网络层 | - ICMP, Routing Protocol (静态.RIP.OSPF等), - IP(这是基础协议) |
| 数据链路层 | - Ethernet(这是局域网使用最多的数据链路层协议), - Frame-Relay(帧中继),PPP/PPPOE, HDLC(这3个都是广域网使用的数据链路层协议) |
| 物理层 | 双绞线, 光纤, 跳线/尾纤, 配线架/理线架 |
以太网基础
以太网简介
以太网属于数据链路层协议,用于局域网
局域网四大协议(与以太网同时出现)
当然,下面是这些网络协议整理成的表格形式:
| 协议名称 | 发明者 | 标准化组织 | 应用情况 | 备注 |
|---|---|---|---|---|
| 以太网 (Ethernet) | 施乐(Xerox) | IEEE 802.3 | 当前绝大多数局域网使用 | 施乐发明Ethernet,后续优化成Ethernet Ⅱ ,IEEE基于Ethernet Ⅱ推出802.3 |
| AppleTalk | 苹果公司 (Apple Inc.) | - | 苹果公司的私有网络协议 | - |
| 令牌环 (Token Ring) | IBM | IEEE 802.5 | 曾广泛使用,现较少见 | IEEE将其标准化为IEEE 802.5 |
| FDDI (Fiber Distributed Data Interface) | 美国国家标准学会 (ANSI), 基于IBM令牌环 | ANSI / IEEE 802.8 | 高速环形网络,适用于主干网 | FDDI(双环)虽然是基于IBM令牌环技术,但其标准化主要由ANSI负责,并且通常与IEEE 802.8相关联,尽管它也遵循了令牌传递的一般原则 |
CSMA/CD
如果我们使用半双工通信,则会产生冲突,因此在半双工的共享以太网中引入了CSMA/CD技术
CSMA/CD载波监听多址接入碰撞检测
CSMA/CD是一种在共享式网络上检测并避免冲突的机制。
共享式网络如总线连接的以太网,使用集线器HUB连接的以太网(使用交换机连接的以太网是一种交换式以太网,不是总线型以太网)
在共享以太网这种半双工通信的网络中,为解决冲突问题,提出了解决办法CSMA/CD(Carrier Sense Multiple Access/Collision Detection),即载波监听多址接入碰撞检测
现在,共享式网络早已经被交换式以太网淘汰,其相应的CSMA/CD技术也早已淘汰不用
CSMA/CD技术原理
- 先听后发,边听边发
- 一旦冲突,立即停止
- 等待时机,然后再发:检测到冲突会启动一个随机计时器
注意:“听”即监听、检测;“发”即发送数据
冲突域和广播域
| 概念 | 定义 | 实例 | 分割方法 |
|---|---|---|---|
| 冲突域 | 共享同一物理传输介质的网络区域,设备间数据传输可能产生信号冲突的地方。 | 家庭网络中所有设备通过集线器(HUB)连接,集线器的所有端口构成单一冲突域。若两设备同时发送数据,会发生冲突。 | 使用交换机代替集线器,每个交换机端口为独立冲突域,减少冲突。 |
| 广播域 | 在网络中,能接收到广播帧(目的地址为广播地址)的所有设备组成区域。所有设备都会处理这些广播帧,无论是否是目标接收者。 | 办公室网络中,所有设备通过同一路由器连接,形成一个广播域。打印机广播请求配置时,所有设备都将收到该信息。 | 使用路由器来分割广播域,每个路由器下形成独立的广播域,限制广播流量的扩散,提高网络性能和安全性。 |
常见冲突域和广播域
| 类别 | 描述 |
|---|---|
| 冲突域 | - 集线器的各个接口组成一个冲突域 - 交换机的每个接口自成一个冲突域 |
| 广播域 | - 交换机的一个VLAN构成一个广播域 |
以太网帧格式
数据链路层的网络通信协议
| 网络类型 | 二层通信协议 |
|---|---|
| 局域网(LAN) | - 以太网(Ethernet) - IEEE 802系列标准(包括IEEE 802.3以太网、IEEE 802.11无线局域网等) |
| 广域网(WAN) | - 帧中继(Frame Relay) - 点对点协议(PPP,Point-to-Point Protocol) - 高级数据链路控制(HDLC,High-Level Data Link Control) |
注意:虽然IEEE 802系列标准主要针对局域网和城域网设计,但某些技术如IEEE 802.11(无线局域网)也可用于更广泛的场景,而广域网的二层协议列表中提到的PPP、HDLC等,主要是为远距离数据传输设计的协议。
以太网帧格式
以太网有2种帧,一种叫以太网2,一种叫802.3,二者的帧格式大同小异
Ethernet Ⅱ
Ethernet Ⅱ:Xerox(施乐实验室)与DEC、Intel在1982年制定的以太网标准帧格式Ethernet Ⅰ,1988年改进优化为Ethernet Ⅱ
- Ethernet Ⅱ帧类型值大于等于1536(0x0600)(注意是该字段的值不是该字段长度)
- 以太网数据帧的长度在64-1518字节之间。
Ethernet Ⅱ帧字段详解

| 字段 | 大小(字节) | 描述 |
|---|---|---|
| 前导字段 (Preamble) | 7 | 56位,用于接收同步,不计入帧长 |
| 帧开始标识 (SOF) | 1 | 8位,帧起始标志,不计入帧长 |
| 目的MAC地址 (DMAC) | 6 | 接收方的物理地址 |
| 源MAC地址 (SMAC) | 6 | 发送方的物理地址 |
| 类型/长度字段 | 2 | - 指示上层协议类型或数据长度 - 作上层协议类型标识时,如0x0800表示IPv4,0x0806表示ARP |
| 数据字段 | 46-1500 | 封装的网络层数据包如IP数据包,少于46字节需填充 |
| 填充 (如果需要) | 可变 | 确保数据字段至少46字节 |
| 帧校验序列 (FCS) | 4 | CRC-32循环冗余校验,检测错误 |
| 最小帧长 | 64(6+6+2+46+4=64) | 包含所有计算在内的最小长度 |
| 最大帧长 | 1518(6+6+2+1500+4=1518) | 包含所有计算在内的最大长度 |
注释:
- 前导字段和帧开始标识虽然不计入帧长计算,但对帧的正确接收至关重要。
- 数据字段的长度必须满足最小46字节的要求,通过填充实现。
- 最大帧长限制了单个帧所能携带的数据量,以避免网络拥塞和效率降低。
- FCS提供了数据完整性检查,确保数据在传输过程中未受损。
IEEE 802.3帧格式
IEEE在1985年公布的Ethernet 802.3的SNAP版本以太网帧格式(国际电器工程师协会在以太网2基础上定义)

IEEE 802.3帧格式详解
| 字段 | 大小(字节) | 描述 |
|---|---|---|
| 前导码 | 7 | 用于接收方同步,由56位的1010101…序列组成 |
| 帧开始定界符(SFD) | 1 | 帧的起始标志,值为10101011 |
| 目的MAC地址(DMAC) | 6 | 接收端的MAC地址 |
| 源MAC地址(SMAC) | 6 | 发送端的MAC地址 |
| 长度(Length)/Type | 2 | 当作为长度字段时,指示LLC及数据字段的总长度,最大值0x05DC(1500字节)(注意是该字段的值不是该字段长度) |
| LLC(逻辑链路控制) | 可变(共3B) | 包含DSAP、SSAP和Control字段,但在许多情况下未被使用 |
| SNAP(子网接入协议) | 5 | 用于扩展识别上层协议,包括ORG Code和PID,同样常未启用 |
| Data | 38-1492 | 封装的网络层数据包,如IP数据报,长度受LLC/SNAP影响 |
| 填充 (如果需要) | 可变 | 确保数据字段至少38字节 |
| 帧校验序列(FCS) | 4 | 循环冗余校验,用于错误检测 |
| 最小帧长 | 64(6+6+2+3+5+38+4=64) | 包含所有计算在内的最小长度 |
| 最大帧长 | 1518(6+6+2+3+5+1492+4=1518) | 包含所有计算在内的最大长度 |
注意:
- 尽管IEEE 802.3标准定义了LLC和SNAP部分,但在现代网络中,这些部分往往不被使用,尤其是在那些直接采用Type字段来指定上层协议类型的情形下,这与Ethernet II帧格式更为相似。因此,实际数据包的“Data”部分长度通常直接参照Type字段定义的内容,而非Length字段。
- 实际上在真实网络环境中,90%的通信使用的是Ethernet Ⅱ数据帧,仅在极小场景如交换机之间进行通信的STP协议使用的是IEEE 802.3数据帧
数据帧的传输
局域网中数据的传输基于MAC地址进行转发传输,当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
局域网内部通信使用的是MAC地址,因此只要保证局域网内部MAC地址不重复即可正常通信;
局域网外部通信使用的就是IP地址了,即使相同MAC地址也可以正常通信
MAC地址
MAC地址共计48位(即6对十六进制数),前后24位含义如下表所示
| MAC地址结构 | 说明 |
|---|---|
| OUI(Organizationally Unique Identifier) | 前24位,全球唯一,由IEEE分配给设备制造商 |
| 序列号 | 后24位,由制造商自行分配,确保每个设备的MAC地址在全球范围内唯一 |

以太网单播/多播/组播/广播帧的目的MAC地址标识
| 传播类型 | 目的MAC地址特点 | 特性概述 | 优点 | 缺点 |
|---|---|---|---|---|
| 单播 | 目的MAC地址第8位为0,全局唯一地址 | 一对一通信,目标明确 | 流量针对性强,网络效率高 | 无法实现一对多高效传输 |
| 广播 | 目的MAC地址固定为FF:FF:FF:FF:FF:FF | 一对全体通信,网络中所有设备接收 | 传递信息迅速广泛 | 流量大,易造成网络拥塞,带宽利用率低 |
| 组播 | 目的MAC地址第8位为1,标识一组设备 | 一对多通信,但仅限于组内成员(组播转发可以理解为选择性的广播) | 在多接收者场景下效率高,节省带宽 | 需要额外的管理机制(如IGMP)来维护组成员关系 |
本节提问
网络设备如何确定以太网数据帧的上层协议?
- 以太网帧中包含一个Type字段,表示帧中的数据应该发送到上层哪个协议处理。比如,IP协议对应的Type值为0x0800,ARP协议对应的Type值为0x0806。
终端设备接收到数据帧时,会如何处理?
- 主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS )字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果检查通过,就会剥离帧头和帧尾,然后根据帧头中的Type字段来决定把数据发送到哪个上层协议进行后续处理
IP协议基础
网络层的2项功能
| 功能 | 定义 |
|---|---|
| 路由 | 确定数据包从源到目的地的转发路径,依赖路由协议实现 |
| 寻址 | 通过IP协议为网络中的每一设备分配唯一IP地址,实现设备间定位与识别 |
网络层协议简介
| 协议 | 功能概述 | 应用实例 |
|---|---|---|
| IP (Internet Protocol) | 提供数据包的寻址和路由功能,是Internet的基础协议 | 实现全球互联网上的主机间通信 |
| ICMP (Internet Control Message Protocol) | 用于报告IP数据包传输中的差错情况以及提供简单的网络诊断功能 | ping命令使用ICMP回显请求与回显应答报文来检测目的主机是否可达 |
| IGMP (Internet Group Management Protocol) | 用于管理多播组成员关系,即让网络设备知道主机想接收哪些多播流量 | 支持高效的多播服务,如IPTV直播 |
| ARP (Address Resolution Protocol) | 将IP地址解析为MAC地址,以便在局域网中进行数据包的实际传输 | 当主机需要发送数据给同一局域网内的另一主机时,会先执行ARP请求获取其MAC地址 |
| RARP (Reverse Address Resolution Protocol) | 与ARP相反,将MAC地址转换为IP地址 | 主要用于早期网络中,当设备不知道自己的IP地址时,可以通过RARP获取 |
IPv4报文格式
注意下面标识的
- IPv4基本IP头部长度为20字节
- IPv4头部的长度最大为60字节
这是因为,可选字段和填充字段的出现取决于具体的报文需求,它们的长度决定了首部长度的具体值。

IPv4报文字段详解
| 字段名称 | 位数 | 描述 |
|---|---|---|
| 版本(Version) | 4 | 标识IP协议的版本,对于IPv4固定为4。 |
| 首部长度(Internet Header Length, IHL) | 4 | 表示IP报头的长度,单位为32位(4字节)。有效值范围是5(最小值,20字节头部)到15(最大值,60字节头部)。 |
| 服务类型(Type of Service, TOS) | 8 | 用于QoS,现在多用于DSCP(Differentiated Services Code Point)或IP优先级。 |
| 总长度(Total Length) | 16 | 表示整个IP数据报的长度,包括头部和数据部分,单位为字节。 |
| 标识(Identification) | 16 | 用于分片重组,同一数据报的所有分片具有相同的标识。 |
| 标志(Flags) | 3 | 用于分片控制,其中第1位保留,第2位DF(Don’t Fragment)表示禁止分片,第3位MF(More Fragments)表示更多分片。 |
| 分片偏移(Fragment Offset) | 13 | 用于分片重组,表示该分片在原始数据报中的相对位置。单位为8字节。 |
| 生存时间(Time to Live, TTL) | 8 | 数据报在网络中的最大跳数限制,初值0~255,每经过一个路由器减1,到0则被丢弃。 |
| 协议类型(Protocol) | 8 | 指示上层协议类型,如1=ICMP, 6=TCP, 17=UDP。 |
| 首部校验和(Header Checksum) | 16 | 用于检查IP头部的完整性。 |
| 源IP地址(Source IP Address) | 32 | 发送方的IP地址。 |
| 目的IP地址(Destination IP Address) | 32 | 接收方的IP地址。 |
| 可选字段(Options) | 可变 | 如时间戳、记录路由等,不是每次必有,长度由IHL字段决定。 |
| 填充(Padding) | 可变 | 用于保持首部长度为32位的整数倍,当有可选字段时使用。 |
网关 vs 默认网关
| 特性 | 网关 | 默认网关 |
|---|---|---|
| 定义 | 网关用来转发来自不同网段之间的数据包,是指接收并处理本地网段中主机发送的报文并转发到目的网段的设备,可以是路由器、交换机、服务器等。 | 是一种特殊的网关配置,代表主机在无法直接寻址目的网络时所使用的默认中转地址。 |
| 功能 | 负责不同网络间的数据包转发,实现跨网段通信。 | 当主机发出的数据包目的地址不在直连的网络内时,自动将数据包转发给预设的网关设备。 |
| 应用范围 | 泛指任何具备网络间数据转发能力的设备或系统。 | 特指每台主机配置的、用于不确定或未知网络路径情况下的转发地址。 |
| 配置 | 可以是静态配置,也可以动态获取(如DHCP分配)。 | 通常是静态配置在主机的网络设置中,或通过网络协议自动获取。 |
| 实现设备 | 可以是路由器、三层交换机、防火墙、服务器等多种网络设备。 | 实体上可能位于路由器、三层交换机等设备上,是逻辑上的出口点。 |
| 层次 | 网关作为一个概念,涉及网络层及以上的通信处理。 | 默认网关是一个网络层的概念,体现为主机对外通信的基础配置。 |
IP地址基础
十进制与二进制的转换(记住常用幂、位关系)

| DEC | POWER | BIN | DEC | POWER | BIN |
|---|---|---|---|---|---|
| 1 | 2^0^ | 0000 0001 | 0 | 2^0^-1 | 0000 0000 |
| 2 | 2^1^ | 0000 0010 | 1 | 2^1^-1 | 0000 0001 |
| 4 | 2^2^ | 0000 0100 | 3 | 2^2^-1 | 0000 0011 |
| 8 | 2^3^ | 0000 1000 | 7 | 2^3^-1 | 0000 0111 |
| 16 | 2^4^ | 0001 0000 | 15 | 2^4^-1 | 0000 1111 |
| 32 | 2^5^ | 0010 0000 | 31 | 2^5^-1 | 0001 1111 |
| 64 | 2^6^ | 0100 0000 | 63 | 2^6^-1 | 0011 1111 |
| 128 | 2^7^ | 1000 0000 | 127 | 2^7^-1 | 0111 1111 |
| 256 | 2^8^ | 1 0000 0000 | 255 | 2^8^-1 | 1111 1111 |
分类编址的IPv4地址
| 类别 | 首字节的二进制表示 | 网络号位数 | 主机号位数 | 默认子网掩码 | 范围示例 |
|---|---|---|---|---|---|
| A | 0 | 8 | 24 | 255.0.0.0 | 1.0.0.0 - 127.255.255.254 |
| B | 10 | 16 | 16 | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 |
| C | 110 | 24 | 8 | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 |
| D | 1110 | N/A | N/A | N/A | 224.0.0.0 - 239.255.255.255(组播) |
| E | 1111 | N/A | N/A | N/A | 240.0.0.0 - 255.255.255.255(保留) |
注:
- A类地址中的127.x.x.x(即0111 1111开头的地址)被预留用于本地环回测试(Loopback)
- D类地址用于多播(Multicast)通信,不分配给单个主机,没有默认子网掩码的概念
- E类地址保留作研究使用,同样没有常规的网络号和主机号划分,也没有默认子网掩码
- 若题目不给掩码,则按分类编址IP来确定其默认的网络掩码
网络掩码
网络掩码与IP地址搭配使用,用于描述一个IP地址中的网络部分及主机部分(其本质是二进制的与运算)
网络掩码32位,与32位的IP地址一一对应:
掩码中为1的位对应IP地址中的网络位;
掩码中为0的位对应IP地址中的主机位。

IP网络的通信类型(三种通信方式对比)
| 通信方式 | 定义 | 特点 | 实例 | 广播域限制 |
|---|---|---|---|---|
| 单播 (Unicast) | 点对点通信 | 数据包从源到单一明确的目的地 | PC1直接发送数据给PC2 | 无限制 |
| 广播 (Broadcast) | 点对多通信 | 数据包发送给同一广播域内所有设备 | PC1的消息,同域内PC均接收 | 不穿透路由器,受限于广播域 |
| 组播 (Multicast) | 点对多(特定组)通信 | 数据包发送给一组有特定兴趣的接收者 | PC1发给所有加入特定组播组的用户 | 受组播成员和组播路由器管理,可跨越广播域 |
补充说明:
- 广播:在以太网中,广播帧会被同一局域网内所有设备接收,但路由器通常会阻止广播流量跨越其接口,以避免广播风暴。
- 单播:是最常见的通信方式,每个数据包都明确指向一个单独的目标地址。
- 组播:允许高效地向多个接收者传输信息,需要IGMP(Internet Group Management Protocol)等协议来管理组成员关系,并且依赖组播路由协议来构建组播分发树。通过DHCP Relay(中继代理),可以实现在不同子网间转发DHCP广播请求,将客户端的广播包转换为单播报文至DHCP服务器,再将服务器的单播应答转换为广播或单播返回给客户端。
IP地址的类型
| 类型 | 定义 | 特征 | 示例 |
|---|---|---|---|
| 网络地址 | 代表整个网络的地址 | 最小地址,主机部分全为0 | 对于网络192.168.1.0/24,网络地址为192.168.1.0 |
| 广播地址 | 向网络内所有主机发送数据的地址 | 最大地址,主机部分全为1 | 对于网络192.168.1.0/24,广播地址为192.168.1.255 |
| 主机地址 | 分配给网络中每个独立终端的地址 | 在网络地址和广播地址之间,除去网络地址和广播地址本身,可分配给设备作为唯一标识 | 192.168.1.1(假设未被网络地址或广播地址占用) |
VLSM可变长度子网划分
VLSM(可变长度子网掩码,Variable Length Subnet Mask)是一种IP地址划分技术,它允许网络管理员根据实际需要为不同的网络或子网分配不同长度的子网掩码。这种方法提供了更灵活的IP地址分配,可以更有效地利用IP地址空间,尤其是在IP地址资源紧张的情况下。
划分子网的引入
假设一个公司网络内有500台主机
- 分配一个C类网络IP地址,则可分配给主机使用的IP地址共计2^8^-2=253个,不够用
- 分配一个B类网络IP地址,则可分配给主机使用的IP地址共计2^16^-2=65534个,又会造成极大浪费
为了解决以下问题:
- 标准ABC类网络问题
- IP地址空间浪费
- 一个广播域中PC数量庞大,造成广播风暴,网络可能被广播报文消耗大量资源
因此引入划分子网
划分子网的方法
假设我们有一个172.16.0.0/16这样一个B类地址,则对于172.16.0.0这个网络,拥有2^16^=65535个IP地址

网络位向主机位借位,从而使得网络部分的位数加长
如下图所示,网络位向主机位借1位作为子网标识,就能划分出2个子网

子网数量以及每个子网的主机数量计算

公有IP和私有IP
IPv4地址空间中有一部分特殊的地址,称之为私有IP地址,私有IP地址不能直接访问公网(因特网)的IP,只能在本地使用(RFC 1918文档定义)
若需访问则需在网络出口处做NAT网络地址转换,转换为公网IP

CIDR无类域间路由
路由聚合简介
CIDR(无类域间路由,超网Classless Inter-Domain Routing),又称超网或路由聚合
路由聚合:很多个网络聚合成为一条路由,减少路由器的压力
如下图所示,A路由器的路由表中存在4条路由记录,通过路由聚合之后传递给B的则只有1条路由记录,减少了路由器的压力

从而,B路由器的路由表可以是200.200.192.0/22,而不是像A那样显示4条路由
路由聚合的方法
把几条近似路由写成二进制形式,观察哪些二进制位完全一致,则从该二进制位处进行聚合
- 如上图中4条路由记录的二进制位,前22位完全一致,则4条记录可以聚合成为1条记录
再将聚合之后的二进制位写成点分十进制形式

CIDR的作用
| 作用 | 描述 |
|---|---|
| 减小路由表项压力 | 通过路由聚合,将多个连续的网络前缀合并为一个更短的前缀,显著减少了路由器中路由表的条目数量,尤其是对于骨干路由器,减轻了路由表管理的压力。 |
| 缓解IP地址耗尽问题 | 允许更灵活的IP地址分配,通过聚合小的地址块为大的地址块,减少了地址空间的浪费。虽然CIDR本身不增加地址空间,但它优化了现有IPv4地址的分配和使用,延缓了IPv4地址完全耗尽的时间。 |
| 提升路由效率与网络性能 | 减少的路由表项意味着更快的路由查找速度,提升了数据包转发效率,进而改善了整体网络性能。同时,减少了路由更新的传播量,降低了网络带宽的占用。 |
| 增强网络可扩展性 | 灵活的子网划分机制使得网络可以根据实际需求动态调整,支持未来网络规模的增长,增强了网络架构的可扩展性。 |
| 兼容与平滑过渡 | CIDR与传统分类地址系统兼容,可在不中断现有服务的前提下逐步部署,为从IPv4向IPv6的过渡提供了平滑的升级路径。 |
VLSM和CIDR对比
| 特性 | VLSM(可变长度子网掩码) | CIDR(无类域间路由) |
|---|---|---|
| 基本概念 | 允许在同一个网络中使用多个不同大小的子网,通过调整子网掩码来适应不同规模网络的IP地址需求。 | 通过在IP地址后附加斜杠和前缀长度来表示地址块,支持路由聚合,减少路由表条目,提高路由效率。 |
| 主要目的 | 提高IP地址分配的灵活性和效率,适应不同部门或区域对地址数量的不同需求。 | 实现IP地址的有效聚合,简化路由表,减少全球互联网路由信息的复杂度。 |
| 应用层面 | 企业内部网络设计,特别是大型企业的复杂网络环境。 | 广泛应用于互联网服务提供商(ISP)和广域网路由,影响全球路由架构。 |
| 操作特点 | 子网细分:增加网络前缀长度,创建更小的子网。 | 路由聚合:通过减少网络前缀长度来合并多个连续的网络为一个路由条目。 |
| 技术关系 | VLSM是对CIDR的补充,提供了在CIDR分配的地址块内进一步细化子网的能力,二者共同优化IP地址管理和路由。 | CIDR为VLSM提供基础框架,VLSM在此基础上实现更精细化的地址分配策略。 |
ICMP协议
ICMP简介
网际控制报文协议ICMP (Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理非常熟悉。Ping命令使用的正是ICMP协议。
ICMP的功能
ICMP重定向

| 步骤 | 描述 |
|---|---|
| 1 | 初始请求:主机A尝试通过其默认网关RTB向服务器A发送报文。主机A根据配置的默认路由,将数据包发送给网关RTB。 |
| 2 | 路由器检测:网关RTB接收到报文后,检查报文的目的地,发现更优路径。RTB意识到报文实际上应该直接发往与主机A处于同一网段的另一个网关RTA,因为RTA提供了到达服务器A的更短或更高效的路径。 |
| 3 | 重定向通知:为了优化未来通信,RTB决定向主机A发送一个ICMP重定向(Redirect)消息。此消息包含了一个建议——主机A应当直接将数据包发送给网关RTA,而非继续通过RTB中转。 |
| 4 | 主机响应:主机A接收到ICMP重定向消息后,更新其路由表,将通往服务器A的路径更改为直接通过网关RTA。随后,主机A按照新路径直接向RTA发送报文。 |
| 5 | 数据转发完成:网关RTA接收到报文后,根据其路由配置,将报文正确转发至服务器A,完成通信过程。 |
ICMP网络诊断
ICMP Echo消息在网络诊断中的应用概览
| ICMP Echo消息类型 | 功能描述 | 应用实例 |
|---|---|---|
| Echo Request | 发送端向目标主机发送的探测消息,用于确认可达性 | ping命令发出的就是Echo Request,检查目标是否在线及响应时间 |
| Echo Reply | 目标主机对收到的Echo Request的响应消息 | 目标收到Echo Request后,返回该消息确认收到及响应时间信息 |
此表格概述了ICMP Echo消息在执行网络诊断时的核心功能与应用实例,展示了如何利用Echo Request和Echo Reply消息进行网络连通性测试、延迟测量、丢包率分析以及辅助进行网络路径追踪。
| 返回信息 | 说明 |
|---|---|
| 报文往返时间(RTT) | 反映数据包从发送到接收再返回的总时间,评估网络延迟情况 |
| 丢包率 | 连续发送多个Echo Request,统计未收到Reply的比例,诊断网络稳定性 |
| 网络路径跟踪 | 结合序列号和响应时间,分析数据包经过的路由节点(结合Traceroute) |
ICMP报文格式(了解)

ICMP报文格式字段
| 字段名 | 大小(比特) | 描述 |
|---|---|---|
| 类型(Type) | 8 | 指定ICMP报文的类型,如Echo Request (8), Echo Reply (0), Destination Unreachable (3)等。 |
| 代码(Code) | 8 | 针对特定类型报文的进一步分类或定义详细信息,如不同类型不可达的具体原因。 |
| 检验和(Checksum) | 16 | 用于确保ICMP报文的完整性,涵盖整个ICMP报文,包括ICMP头部和数据部分。 |
| 数据部分 | 可变 | 根据ICMP报文类型的不同,包含具体的数据负载,如Echo Request/Reply中的标识符和序列号,或者错误报文中包含的原始IP头部和数据报的前8个字节等。 |
ICMP消息类型和编码类型
(对应上述Type、Code字段)
| 类型(Type) | 代码(Code) | 描述 |
|---|---|---|
| 0 | 0 | Echo Reply |
| 3 | 0 | 网络不可达 |
| 3 | 1 | 主机不可达 |
| 3 | 2 | 协议不可达 |
| 3 | 3 | 端口不可达 |
| 5 | 0 | 重定向 |
| 8 | 0 | Echo Request |
ICMP的典型应用
Ping

在华为路由器输入ping ?其参数罗列中,常用的是-a和-c:
-a:一台路由器有许多接口,如上述RTA有绿色和黄色各个接口,若ping 10.0.0.2的RTB路由器,默认通过与之直连在同一网络的绿色接口的IP来ping;而-a参数可以指定一个源IP地址(如上图黄色标注的接口IP)去ping-c:指定ping要发送的ICMP数据包的数量为n个
华为路由器上使用ping命令成功返回结果如下:
Tracert
tracert/trace route显示数据包在网络传输过程中所经过的每一跳。

本节提问
ping使用的是哪两类ICMP消息?
ping利用ICMP **Echo Request请求消息(Type值为8)**来发起检测目的可达性。目的端收到ICMP Echo请求消息后,根据IP报文头中的源地址向源端发送ICMP Echo Reply回复消息(Type值为0)。
当网络设备收到TTL值为0的IP报文时,会如何操作?
如果IP数据包在到达目的地之前TTL值已经降为0,则收到IP数据包的网络设备会丢弃该数据包,并向源端发送ICMP的网络不可达消息通知源端TTL超时。
ARP协议
ARP的作用
ARP(Address Resolution Protocol)即地址解析协议:用于实现从IP地址到MAC地址的映射,即询问目标IP对应的MAC地址
ARP协议工作原理
ARP协议(Address Resolution Protocol,地址解析协议)的主要工作原理可以概括为以下几个步骤,并以表格形式展现如下:
| 步骤 | 描述 | 备注 |
|---|---|---|
| 1. 发起请求 | 当主机A需要向同一局域网内的主机B发送数据时,首先检查自己的ARP缓存表中是否有主机B的IP地址与其MAC地址的映射关系。如果没有找到,则主机A构造一个ARP请求报文。 | arp -a查询本地ARP缓存![]() |
| 2. 构建ARP请求包 | ARP请求报文包括: - 硬件类型:指明硬件地址类型,例如以太网。 - 协议类型:通常为IPv4。 - 硬件地址长度:硬件地址(MAC地址)的长度。 - 协议地址长度:IP地址的长度。 - 操作码:置为1,表示ARP请求。 - 发送端硬件地址:主机A的MAC地址。 - 发送端协议地址:主机A的IP地址。 - 目标硬件地址:全0,因为这就是我们要查询的信息。 - 目标协议地址:主机B的IP地址。 |
![]() |
| 3. 广播报送 | 主机A将这个ARP请求以广播的形式发送到局域网上,因为此时它还不知道主机B的具体MAC地址。所有接收到该广播的主机都会处理这个ARP请求。 | 下图为接收处理ARP响应图![]() |
| 4. 接收并响应 | 主机B识别到该ARP请求中的目标IP地址匹配自己的IP地址后,构建一个ARP响应报文,其中包含自己的MAC地址,并直接(非广播)回复给主机A。 | ARP响应![]() |
| 5. 更新ARP缓存 | 主机A收到ARP响应后,会更新其ARP缓存表,将主机B的IP地址和MAC地址的映射关系存储起来,以便后续通信直接使用,无需再次发送ARP请求。 | 更新ARP缓存![]() |
| 6. 数据传输 | 有了目标MAC地址,主机A就可以封装数据包,包含目标MAC地址,通过数据链路层发送给主机B。 | - |
ARP报文字段摘要(了解)
| 字段名 | 长度(字节) | 描述 |
|---|---|---|
| 硬件类型 | 2 | 指定链路层协议类型,如以太网为1 |
| 协议类型 | 2 | 指定高层协议类型,如IPv4为0x0800 |
| 硬件地址长度 | 1 | 硬件地址(MAC)的字节长度,通常为6 |
| 协议地址长度 | 1 | 协议地址(如IP)的字节长度,通常为4 |
| 操作码 | 2 | ARP请求为1,ARP响应为2 |
| 发送端硬件地址 | 变长 | 发送端MAC地址 |
| 发送端协议地址 | 变长 | 发送端IP地址 |
| 目标硬件地址 | 变长 | 全0(请求时),或目标MAC地址(响应时) |
| 目标协议地址 | 变长 | 目标IP地址 |
代理ARP
位于不同网络的网络设备在不配置网关的情况下,可以通过ARP代理实现相互通信。
代理ARP(Proxy ARP)工作原理概览
| 步骤 | 描述 |
|---|---|
| 1. 发起ARP请求 | 主机A需要与不在同一广播域但属于同一网段的主机B通信,但主机A只知道主机B的IP地址,不知道其MAC地址。因此,主机A发送一个ARP请求广播,询问主机B的MAC地址。 |
| 2. 路由器截获请求 | 由于两台主机位于不同的广播域,ARP请求广播会被它们之间的路由器(如路由器R)截获。 |
| 3. 代理响应准备 | 路由器R检查其路由表,发现它能够到达主机B所在的网络,因此决定代表主机B响应这个ARP请求。 |
| 4. 发送代理应答 | 路由器R构建一个ARP响应报文,其中: - 硬件类型和协议类型与标准ARP响应相同。 - 发送端硬件地址填写路由器R接口的MAC地址。 - 发送端协议地址填写主机B的IP地址(即使这不是路由器的IP地址)。 - 目标硬件地址和目标协议地址则分别是主机A的MAC地址和IP地址。 - 路由器R将此应答直接发送给主机A,而非以广播形式。 |
| 5. 主机A更新缓存 | 主机A收到这个ARP响应后,误以为是主机B的直接回复,因此它更新ARP缓存,记录下主机B的IP地址对应的MAC地址实际上是路由器R接口的MAC地址。 |
| 6. 数据转发 | 之后,当主机A向主机B发送数据时,实际上数据包的MAC目的地址是路由器R的接口MAC地址。路由器R接收到数据后,会根据其内部路由表将数据包正确地转发给主机B。 |
| 7. 返回路径 | 从主机B到主机A的数据传输则遵循正常路由规则,主机B直接回应给路由器R,路由器R再根据路由表转发回主机A,无需再次使用代理ARP。 |
| 注意事项: |
- 透明性:对于主机A而言,整个过程是透明的,它并不知道数据实际是经由路由器R转发的。
- 适用场景:代理ARP主要用于没有配置默认网关或特定路由策略的小型网络,以及需要隐藏网络结构或简化配置的情况。
- 潜在风险:代理ARP可能导致安全风险,如ARP欺骗攻击的可能性增加,以及网络监控和故障排查的复杂度提升。
免费ARP
免费ARP(Gratuitous ARP可以用来探测IP地址是否冲突。
免费ARP工作原理
| 步骤 | 描述 |
|---|---|
| 1. 发送免费ARP请求 | 主机自发地发送一个ARP请求报文到本地网络,这个请求报文中的源IP地址是主机自己的IP地址,而目标IP地址也是主机自己的IP地址。 |
| 2. 报文构造 | 免费ARP请求的其它字段类似于普通ARP请求,包括硬件类型、协议类型等,但目标硬件地址设置为全0,因为目标是自己,无需特定MAC地址。 |
| 3. 广播报送 | 免费ARP请求以广播形式在网络中传播,所有接收到该广播的主机都会处理这个请求,尽管它们不会像常规ARP请求那样响应。 |
| 4. 检测IP冲突 | 如果网络中存在另一台主机使用相同的IP地址,这台主机可能会错误地响应免费ARP请求,从而揭示IP地址冲突。 |
| 5. 更新ARP缓存 | 其他主机收到免费ARP后,会更新或确认其ARP缓存中该IP地址与MAC地址的映射关系,即使没有冲突,也起到了刷新和确认信息的作用。 |
| 6. 通告变更 | 当主机改变了自己的MAC地址(如网卡更换、虚拟机迁移等)或者IP地址被重新分配(如DHCP续租)时,发送免费ARP可以帮助迅速通知网络中的其他设备这一变更。 |
免费ARP用途总结
- IP冲突检测:帮助检测同一局域网内是否有其他设备使用了相同的IP地址。
- 快速通告:在IP或MAC地址更改后,迅速通告网络中的其他设备,避免通信中断。
- ARP缓存刷新:定期发送以刷新其他主机的ARP缓存,确保ARP条目是最新的。
- 网络服务恢复:如高可用性配置(如HSRP、VRRP)中,用于通告新的活动网关。
免费ARP的发送是非强制性的,但它是维护网络稳定性和提高故障恢复速度的有效机制之一。
本节提问
网络设备在什么情况下会发送ARPRequest?
- 源设备在发送数据给目的设备前,会首先查看自身的ARP缓存,查找ARP缓存中是否存在目的
设备的IP地址和MAC地址的映射。如果存在则直接使用,如果不存在则会发送ARP Request。
- 源设备在发送数据给目的设备前,会首先查看自身的ARP缓存,查找ARP缓存中是否存在目的
网络设备什么时候会产生免费ARP?
- 当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查IP地址是
否冲突。
- 当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查IP地址是
传输层协议TCP/UDP
TCP和UDP对比
TCP(Transmission Control Protocol,传输控制协议)
UDP(User Datagram Protocol,用户数据报协议)
| 特性 | TCP (传输控制协议) | UDP (用户数据报协议) |
|---|---|---|
| 可靠性 | 高,提供数据确认、重传机制,确保数据完整且无错序到达 | 低,不保证数据的到达、顺序或重复,应用程序需自行处理 |
| 连接性 | 面向连接,通信前需通过三次握手建立连接,通信后四次挥手断开 | 无连接,数据可直接发送,无需预先建立或维护连接 |
| 传输模式 | 面向字节流,将数据看作无边界的数据流,按需分割或合并数据 | 面向报文,保留每个数据报的界限,作为独立单元传输 |
| 传输效率 | 相对较低,因包含流量控制、拥塞控制等机制 | 高,头部开销小,无须确认机制,适用于高效传输 |
| 流量控制 | 有,使用滑动窗口机制防止数据溢出接收方缓冲区 | 无,发送方不会因接收方状态调整发送速率 |
| 拥塞控制 | 有,能根据网络拥塞情况动态调整发送速率 | 无,不会减少数据发送速率以应对网络拥塞 |
| 应用场景 | 适用于对数据完整性要求高的场景,如文件传输、HTTP、HTTPS、FTP、SMTP等 | 适用于实时性要求高、能容忍一定丢包的场景,如在线视频、音频、游戏、DNS查询、IP语音(VoIP)等 |
| 通信模型 | 全双工,双方可同时发送和接收数据 | 支持全双工,但每一条数据报都是单独处理的 |
TCP/UDP报文格式
TCP报文格式(了解)
了解即可,重点是源目端口号

UDP报文格式(了解)
了解即可,重点是源目端口号
与TCP相比,UDP报文做了很大精简,省略诸多控制字段

端口号
- 源端口随机分配,目标端口使用知名端口
- 应用客户端使用的源端口一般为系统中未使用的且大于1024
- 目的端口号为服务器端应用服务器的进程,如telnet为23
下面我们给出 TCP/IP 体系的应用层常用协议所使用的运输层熟知端口号
以下是一些TCP/IP体系中应用层常用协议及其对应传输层熟知端口号的表格概览:
| 应用层协议 | 传输层协议 | 端口号 | 功能描述 |
|---|---|---|---|
| HTTP | TCP | 80 | 超文本传输协议,用于网页浏览 |
| HTTPS | TCP | 443 | 安全的超文本传输协议,加密的网页浏览 |
| FTP | TCP | 21 | 文件传输协议,用于文件上传下载 |
| SSH | TCP | 22 | 安全外壳协议,提供安全的远程登录 |
| Telnet | TCP | 23 | 远程登录协议 |
| SMTP | TCP | 25 | 简单邮件传输协议,用于发送电子邮件 |
| POP3 | TCP | 110 | 邮局协议第3版,用于接收电子邮件 |
| IMAP | TCP | 143 | 因特网邮件访问协议,另一种接收邮件的协议 |
| DNS | UDP/TCP | 53 | 域名系统,用于域名解析 |
| DHCP | UDP | 67/68 | 动态主机配置协议,自动分配IP地址及其他网络参数(服务器使用67,客户端使用68) |
| SNMP | UDP | 161 | 简单网络管理协议,用于网络设备管理 |
| TFTP | UDP | 69 | 简单文件传输协议,用于小文件传输 |
请注意,这些端口号是IANA(互联网编号分配管理局)分配的熟知端口,用于标识特定的服务。实际应用中,服务也可以配置使用其他非熟知端口。
TCP的控制机制
TCP序列号及确认号
确认号用来确认收到上一个数据包,以及表示期望收到下一个编号为ack的数据包
PC1的seq和PC2的ack有关,反之亦然
TCP报文的标志位简介
TCP(传输控制协议)报文中的标志位是用来控制TCP连接的建立、数据传输以及连接的终止等过程的。以下是TCP报文头中常见的六个标志位及其含义:
| 全写 | 含义 | 详细 | |
|---|---|---|---|
| SYN | Synchronize | 同步序列编号 | 当SYN=1时,表示这是一个连接请求或连接接受报文。在TCP三次握手过程中,首先由客户端发送一个SYN=1的报文给服务器,请求建立连接。如果服务器同意建立连接,它会响应一个SYN=1且ACK=1的报文,表示确认客户端的序列号并同意连接。 |
| ACK | Acknowledgment | 确认号有效标志 | ACK=1时,确认号字段有效,用来确认接收到的数据。在连接建立后的所有数据传输中,ACK几乎总是被设置为1,以确保数据的可靠传输。 |
| PSH | Push | 强制推送 | 当PSH=1时,它是一个建议性的标志,告诉接收端应该立即将数据推送给应用程序,而不是等待缓冲区填满再交付。但这并不保证立即推送,实际行为取决于接收端的实现。 |
| FIN | Finish | 结束标志 | 当FIN=1时,表明发送方的数据已经发送完毕,希望释放连接。这是TCP四次挥手过程中的第一步,用来结束一个方向上的数据传输。 |
| RST | Reset | 复位标志 | RST=1时,表示TCP连接出现严重错误或者一方不期望的连接请求,需要立即终止连接,不进行正常的连接关闭流程。 |
| URG | Urgent | 紧急标志 | URG=1时,表示报文中包含紧急数据,需要接收端优先处理。通常伴随有紧急指针字段,指出本报文中紧急数据的结束位置。 |
这些标志位的组合使用能够实现TCP的连接管理、流量控制、拥塞控制等功能,确保数据的可靠、有序传输以及连接的高效管理。
TCP三次握手建立连接
| 步骤 | 描述 | 报文详细 | 注释 |
|---|---|---|---|
| 1. 第一次握手 | A请求向B发起连接 | A向B发送seq = ISN_A(A的初始序列号)、标志位为SYN的数据包 | A启动连接过程,表明其发送能力正常 (注:实际序列号ISN为随机生成,非固定值0,以防止重放攻击) |
| 2. 第二次握手 | B收到请求并发送请求确认 | B收到上述报文,向A发送: - seq = ISN_B(B的初始序列号) - ack = ISN_A + 1 - 标志位为SYN和ACK 的数据包 |
B确认收到A的SYN,同时发起自己的连接请求, 表明B的接收与发送功能正常 |
| 3. 第三次握手 | A收到并发送确认 | A收到上述报文,向B发送: - seq = ISN_A + 1 - ack = ISN_B + 1 - 标志位为ACK 的数据包 |
A确认B的SYN,连接建立完成, 表明A的接收功能正常,且确认了B的发送功能 |
注意:
- ISN (Initial Sequence Number): 初始序列号,每次新建连接时由发送方随机生成,用于防止旧的连接数据被误用在新的连接上,增强安全性。
- 在第一次握手时,A设置SYN标志,其序列号seq为A的ISN_A,而不是固定的0,以确保连接的唯一性和安全性。
- 第二次握手中,B不仅确认了A的SYN,还发送了自己的SYN,同时设置ack为ISN_A + 1,表示确认了A的序列号。
- 第三次握手,A回复的ack设置为ISN_B + 1,确认了B的SYN,至此,双方都确认了对方的发送和接收能力,TCP连接完全建立。

TCP四次挥手断开连接
| 步骤 | 描述 | 报文详细 | 注释 |
|---|---|---|---|
| 1. 第一次挥手 | A请求关闭连接 | A向B发送报文: 标志位FIN=1、ACK=1 seq=seq_A(A的当前序列号) ack=ack_B(B的预期确认号) |
A告知B已无数据发送,可以释放A到B的连接方向。 |
| 2. 第二次挥手 | B确认A的关闭请求 | B向A发送报文: 标志位ACK=1 seq=seq_B(B的当前序列号) ack=seq_A + 1 |
B确认收到A的FIN报文,同意关闭从A到B的连接,等待关闭B到A的连接 |
| 3. 第三次挥手 | B请求关闭连接 | B向A发送报文: 标志位FIN=1,ACK=1 seq=seq_B + 1 ack=seq_A + 1 |
B也无数据发送,请求关闭B到A的连接方向。 |
| 4. 第四次挥手 | A确认B的关闭请求,完成连接关闭 | A向B发送报文: 标志位ACK=1 seq=seq_A + 1 ack=seq_B + 2 |
A确认收到B的FIN报文,双方连接完全关闭。 |
注意:
- 在挥手过程中,
seq表示发送方当前的序列号,随着数据或控制报文的发送而递增。 ack表示期望收到的下一个序列号,即确认了对方发送的最后一个字节的序列号加一。- 四次挥手的目的是确保两个方向的连接都被正确且有序地关闭,每个方向的关闭都需要一个FIN和对应的ACK确认。

TCP滑动窗口机制
接收方存在一个缓冲区即窗口,窗口大小决定了在收到确认前可以发送的数据量
缓冲的窗口保证了接收方不会因为处理不过来而导致直接丢弃数据

物理层的光纤接头
物理层——双绞线线序












