02 网络参考模型
OSI参考模型的层次结构、各层功能及数据封装过程
网络参考模型与标准协议
OSI参考模型
| OSI层 | 作用 |
|---|---|
| 7.应用层 | OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。 |
| 6.表示层 | 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。 |
| 5.会话层 | 负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 |
| 4.传输层 | 建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等。 |
| 3.网络层 | 定义逻辑地址,供路由器等三层设备确定路径,负责将数据从源网络传输到目的网络。 |
| 2.数据链路层 | 将比特组合成字节,再将字节组合成数据帧,在数据链路上实现数据的点到点或点到多点方式的直接通信,差错检测。 |
| 1.物理层 | 在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性。 |
TCP/IP参考模型
| 层级 | 功能 |
|---|---|
| 应用层 | 定义了直接为用户提供服务的用户协议(如FTP、Telnet)和通用系统功能的支持协议(如DNS)。 |
| 传输层 | 为应用层提供了端到端的通信服务,主要有两种传输层协议TCP和UDP。 |
| 网络层 | 实现跨网络的主机到主机的数据转发,主要的互联网协议是IP。 |
| 网络接口层(数据链路层+物理层) | 负责在单一物理网络上,相邻网络节点之间的原始数据帧传输。 |
TCP/IP协议栈
TCP/IP协议栈是互联网的基础协议栈,它将网络通信分为四个层次:
应用层 :Telnet、FTP、TFTP、SNMP、HTTP、SMTP、DNS、DHCP等
- Telnet(远程登录协议):远程登录应用于远程终端连接,通过它用户能像使用本地系统一样登录远程系统、使用资源。
- FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
- TFTP(Trivial File Transfer Protocol,简单文件传输协议):文件传输协议FTP的另一种小型简单协议形式,用于客户端和服务器之间不需要复杂交互的应用上,它把业务限制在简单的文件传输上,不需要进行验证。
- SNMP(Simple Network Management Protocol,简单网络管理协议):允许远程用户查看和修改网元的管理信息,其目的是保证管理信息在任意两点间传送。
- HTTP(HyperText Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用于在计算机之间传输电子邮件的协议。
- DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换。
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):DHCP服务器针对DHCP客户端的请求提供对应的配置参数,这些参数通常是客户端主机连接Internet时需要的信息。DHCP同时提供为主机分配IP地址的功能。
传输层:TCP、UDP
- TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠 的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
- UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不 对传送数据包进行可靠性的保证。
网络层:ICMP、IGMP、IP
- IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
- ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的解决措施。
- IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
数据链路层:PPPoE、Ethernet、PPP
- Ethernet(以太网协议):一种多路访问广播型数据链路层协议,是当前应用最 为广泛的局域网技术。
- PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层 协议,多用于广域网。
- PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。
数据通信过程
- 浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中Data还应包括HTTP头部,此处省略)。
- HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。
- TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。
- IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。
- Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS(Frame Check Sequence,帧检验序列)帧尾,此时的PDU被称为Frame(帧)。在Ethernet模块封装完毕之后,会将数据传递到物理层。
- 根据物理介质的不同,物理层负责将数字信号转换成电信号、光信号、电磁波(无线)信号等,转换完成的信号通过传输介质在网络中开始传递。
一般情况下:
- 网络中的二层设备(如交换机)只会解封装到数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
- 网络中的三层设备(如路由器)只会解封装到数据的三层头部,根据三层头部的信息进行相应的“路由”操作。
简答
(简答题)分层模型的概念有什么好处?
降低复杂度:把复杂网络通信拆成若干层,每层只关注自己的职责,便于理解与实现。
模块化与可维护性:各层相对独立,某一层的实现可以替换/升级而尽量不影响其他层(如更换链路层介质、改进传输层算法)。
标准化与互操作:为接口与协议定义边界,不同厂商/系统只要遵循标准就能互通。
促进复用与扩展:上层应用可复用下层能力;新增协议或功能通常只需在某一层扩展。
便于排错与性能分析:问题可以按层定位(物理/链路/网络/传输/应用),抓包与诊断更有条理。
应用层
应用层概述:
- TCP/IP 模型的最高层
- 直接为用户的应用程序提供网络服务
常用的应用层协议:
- DNS(Domain Name System)
- HTTP/HTTPS(HyperText Transfer Protocol/Secure)
- FTP(File Transfer Protocol)
- SMTP(Simple Mail Transfer Protocol)
- SSH(Secure Shell)
- Telnet(Teletype Network)
DNS
Domain Name System(域名解析系统)
- 建立 IP 地址与域名之间的映射关系
- 将域名转换为IP地址
- 将IP地址转换为域名
相关命令:
- nslookup (查询域名对应的IP地址)
- ipconfig / displaydns (显示DNS缓存)
- ipconfig / flushdns (清除DNS缓存)
HTTP/HTTPS
HyperText Transfer Protocol(超文本传输协议)
- 用于Web浏览器和服务器之间的通信
- HTTP是无状态的协议
- HTTPS是HTTP的安全版本,使用SSL/TLS加密
邮件服务
| 协议 | 备注 |
|---|---|
| SMTP | Simple Mail Transfer Protocol(简单邮件传输协议),用于邮件的发送 |
| POP3 | Post Office Protocol version 3(邮局协议版本3),用于邮件的接收 |
| IMAP | Internet Message Access Protocol(互联网邮件访问协议),类似POP3,功能更丰富 |
| 项目 | POP3 | IMAP |
|---|---|---|
| 邮件存储 | 下载到本地(通常服务器会删) | 一直保存在服务器 |
| 多设备同步 | ❌ 不支持(各设备各自一份) | ✅ 完全同步(手机/电脑一致) |
| 是否支持文件夹 | ❌ 基本不支持 | ✅ 支持(收件箱、标签等) |
| 是否支持已读/未读同步 | ❌ 不同步 | ✅ 同步 |
| 使用场景 | 单设备、离线优先 | 多设备、实时同步 |
Telnet
Telnet(Terminal Network)
- 用于远程管理的主要协议(网络设备、服务器、数据库等)
- 默认端口:23
- 不安全,建议使用SSH替代
FTP/TFTP
FTP(File Transfer Protocol)
- 提供可靠的文件传输协议
- 默认端口:21
- 具有认证 权限功能(传输过程中明文传输用户名和密码)
- 不安全,建议使用SFTP替代
TFTP(Trivial File Transfer Protocol)
- 提供不可靠的文件传输服务
- 默认端口:69
- 不安全,常用于网络设备的配置文件和固件升级
传输层
传输层定义了主机应用程序之间端到端的连通性。传输层中最常见的两个协议分别是传输控制协议 TCP (Transmission Control Protocol)和用户数据报协议 UDP (User Datagram Protocol)。
传输层端口:Port
| 端口范围 | 端口号类比别 |
|---|---|
| 0-1023 | 公认端口 |
| 1024-49151 | 注册端口 |
| 49152-65535 | 私有或动态端口 |
TCP 和 UDP 数据包结构对比:
TCP
TCP 的三次握手:
TCP 会话的确认:
TCP 会话的拥塞和流量控制:
窗口大小(win) 决定了收到确认前可发送的字节数
TCP 会话的终止-四次挥手:
UDP
- UDP 不提供重传机制,占用资源小,处理效率高
- 一些时延敏感的流量,比如视频、语音等,通常使用UDP作为传输层协议
数据链路层
以太网的分类
以太网的帧结构
| 字段 | 解析 |
|---|---|
| 协议类型 | 代表上层的协议 |
| 帧大小范围 | 64-1518字节 |
| MTU | 最大传输单元,默认1500字节,每次发送的数据的最大值 |
| 帧校验 | 通过一定的计算公式对数据包进行计算 |
| MAC地址 | 代表一个网络接口的物理地址,唯一 |
MAC 地址
MAC 地址的分类
MAC地址可以分为3种类型:
- 单播MAC地址:也称物理MAC地址,这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
- 单播MAC地址用于标识链路上的一个单一节点。
- 目的MAC地址为单播MAC地址的帧发往一个单一的节点。
- 单播MAC地址可以作为源或目的地址。
- 注意:单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题。
- 广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备。
- 广播MAC地址可以理解为一种特殊的组播MAC地址。
- 其具体格式为:FFFF-FFFF-FFFF。
- 目的MAC地址为广播MAC地址的帧发往链路上的所有节点。
- 组播MAC地址:除广播地址外,第7 bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表局域网上的一组终端。
- 组播MAC地址用于标识链路上的一组节点。
- 目的MAC地址为组播MAC地址的帧发往一组节点。
- 组播MAC地址不能作为源地址,只能作为目的地址。
网络层
ARP
Address Resolution Protocol,地址解析协议
当设备需要和其他设备通信时,需要知道对方的MAC地址,ARP协议就是用来将IP地址转换为MAC地址的协议。
ARP 请求和相应:
当主机需要根据 IP 地址获取目标主机的 MAC 地址时,会使用 ARP 协议,过程如下:
- 主机首先在本地 ARP 缓存表中查找目标 IP 对应的 MAC 地址。
- 若未找到,则构造 ARP 请求报文。
- ARP 请求以广播方式发送(目的 MAC 为 FF-FF-FF-FF-FF-FF)。
- 同一网段内所有主机接收该请求,并检查目标 IP:
- 若不是自身 IP,则丢弃;
- 若是自身 IP,则生成 ARP 应答。
- 目标主机以单播方式发送 ARP 应答报文,告知自己的 MAC 地址。
- 源主机接收应答后,将 IP 与 MAC 的对应关系写入 ARP 缓存表。
- 此后通信即可使用该 MAC 地址进行数据传输。
免费 ARP(Gratuitous ARP)
免费 ARP 是指设备主动发送 ARP 请求,但目的 IP 地址是自己的 IP 地址。这种行为通常用于:
- 检测网络中是否存在 IP 地址冲突
- 更新其他设备的 ARP 缓存表
- 在设备重启或网络拓扑变化后重新同步 ARP 表项
当设备发送免费 ARP 时,其他设备会更新自己的 ARP 缓存表,确保其维护的 IP 到 MAC 的映射是最新的。
ARP 数据包格式
ARP 报文不能穿越路由器,不能被转发到其他广播域
ICMP
Internet Control Message Protocol,互联网控制报文协议,用来在网络设备间各种差错和控制信息,它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。
ICMP 数据包格式
Type 表示 ICMP 消息类型,Code 表示同一消息类型中的不同信息。
| 类型 | 编码 | 描述 |
|---|---|---|
| 0 | 0 | Echo Reply |
| 3 | 0 | Destination Network Unreachable |
| 3 | 1 | Destination Host Unreachable |
| 3 | 2 | Destination Protocol Unreachable |
| 3 | 3 | Destination Port Unreachable |
| 5 | 0 | Redirect Datagram for the Network |
| 8 | 0 | Echo Request |
IP
IP报文结构
分片
当数据包比链路 MTU(默认1500字节) 大时,就可以被分解为很多的足够小的数据包的过程叫做分片。
- 什么是 IP 分片
当数据报长度超过链路的最大传输单元(MTU)时, 网络层会对数据报进行分割,这个过程称为 IP 分片(Fragmentation)。
分片可以在发送端或中间路由器完成, 最终由接收端进行重组。
- 分片相关字段(IPv4 首部)
在 IPv4 首部中,与分片有关的字段有:
1️⃣ Identification(标识)
- 用于标识同一个原始数据报的所有分片
- 所有分片该字段值相同
2️⃣ Flags(标志位)
共 3 位:
| 位 | 名称 | 含义 |
|---|---|---|
| 第1位 | Reserved(保留位) | 必须为 0,否则报文无效(或被丢弃) |
| 第2位 | DF(Don't Fragment) | 1=不允许分片,0=允许分片 |
| 第3位 | MF(More Fragments) | 1=后面还有分片,0=最后一片 |
3️⃣ Fragment Offset(片偏移)
- 表示该分片在原始数据中的位置
- 单位:8 字节(8 Byte)
- 一句话总结
👉 IP 分片通过 Identification、Flags、Fragment Offset 来实现分片与重组。
示例: Wireshark 抓的分片包是最后一个分片:
TTL
Time To Live,生存时间,用于限制数据包在网络中的存活时间或跳数,防止数据包在网络中无限循环。每经过一个路由器,TTL值减1,当TTL值为0时,数据包被丢弃。
利用 TTL 的特性,可以实现路由跟踪(traceroute)技术,排错的重要方式之一.
相关命令:
- Linux:
traceroute - Windows:
tracert - Cisco:
traceroute或ping命令配合 TTL 设置
协议号
Protocol Number,用于标识IP数据包中承载的上层协议类型,常见的协议号如下:
| 协议号 | 协议名称 | 说明 |
|---|---|---|
| 1 | ICMP | Internet Control Message Protocol,互联网控制报文协议 |
| 6 | TCP | Transmission Control Protocol,传输控制协议 |
| 17 | UDP | User Datagram Protocol,用户数据报协议 |
IP 地址
在 IP 网络中,通信节点需要通过 IP 地址来标识自己和对方。
以点分十进制表示,由32位二进制组成。
分为网络位和主机位两部分:
- 网络位,代表 IP 地址所属网段
- 主机位,代表网段上的某个节点
- 子网掩码用于划分网络位和主机位
IP 地址的分类
根据第一组八位二进制的取值范围,IP 地址可以分为 A、B、C、D、E 五类:
私有地址
| 私有 IP 地址空间 | 地址范围 |
|---|---|
| 10.0.0.0/8 | 10.0.0.0 - 10.255.255.255 |
| 172.16.0.0/12 | 172.16.0.0 - 172.31.255.255 |
| 192.168.0.0/16 | 192.168.0.0 - 192.168.255.255 |
子网掩码
- 用于区分网络部分和主机部分
- 1 表示网络部分,0 表示主机部分(连续的1 和 0)
网络地址和广播地址
- 网络地址:主机位全为0(二进制)的IP地址,比如 192.168.1.0
- 广播地址:主机位全为1(二进制)的IP地址,比如 192.168.1.255
子网划分
- 满足不同网络对 IP 地址的需求
- 实现网络的层次性
- 节省 IP 地址资源
- 默认子网掩码可以进一步划分,成为变长子网掩码(VLSM)
- 即网络位向主机位“借位”