漫游计算机网络之协议篇
其实也是期末复习罢了,只不过取了一个花里胡哨的标题。
本文将自顶向下的梳理计算机网络中每层的协议。
应用层
应用层专注为用户提供特定的功能,一般一类服务就对应了一个协议,所以协议繁多。同时,应用层驱动下层工作,但不关心数据是如何传输的,工作在操作系统的用户态。
1. 有什么协议?
DNS 、FTP 、HTTP 、SMTP 、DHCP 、Telnet 、BGP 、RIP 等。
提醒自己用:DHCP 、 BGP 、 RIP 协议我在网络层中已经讲了,但是它们都是工作在应用层的协议!
补充:协议工作在哪一层其实并不太重要,有关说法也众说纷纭,把 BGP 和 RIP 划分到应用层的依据是他们分别使用了 TCP 和 UDP 协议,既然协议是为上一层提供服务的,那么他俩就应该是应用层协议。我这边也只是梳理一下方便记忆,还需要自行建立理解。
2. 注意点
- DNS:域名解析协议;
- 作用是提供域名和 IP 之间的映射关系;
- 传输层使用 UDP ;
- 采用 C/S 方式;
- SMTP:简单邮件传输协议;
- 作用是将邮件从发送方客户端发送到邮件服务器,或由一个邮件服务器发送到另一个邮件服务器;是异步传输,收发并不同步;
- 传输层使用 TCP ;
- POP3:邮局协议;
- 用于从邮件服务器上接收(拉取)邮件到客户端。只负责接收邮件;与 SMTP 协议一起工作,实现异步的邮件传输;
- 传输层同样使用 TCP ;
- IMAP:互联网邮件访问协议;
- 比 POP 3 更强,支持多设备的同步管理;
- 传输层同样使用 TCP ;
- HTTP:超文本传输协议;
- 传输层使用 TCP ;
- 采用 C/S 方式;
- DHCP:动态主机配置协议;
- 用于在主机没有被分配 IP 地址时,向 DHCP Server 请求 IP 地址等网络配置信息;
- 传输层使用 UDP ;
- 采用 C/S 方式;
- RIP:路由信息选路协议;
- 采用距离矢量选路 DVR 构建路由表;
- 传输层使用 UDP ;
- BGP:边界网关协议;
- 采用路径矢量选路 PVR 构建路由表;
- 传输层使用 TCP ,可靠传输;
3. 应用场景
电子邮件系统:
- 邮件服务器和邮件服务器之间一定使用 SMTP ;
- 客户端发送邮件至邮件服务器,使用 SMTP / HTTP ;
- 客户端从邮件服务器接收(拉取)邮件,使用 POP3 / IMAP / HTTP ;
访问网站的一个典型过程:
- 浏览器分析 URL ;
- 浏览器通过 DNS 获得 IP 地址;
- 浏览器根据 IP 地址,和服务器建立 TCP 连接;
- 浏览器发送 HTTP Request 请求;
- 服务器发送一个响应的 Web Page 给浏览器;
- 释放 TCP 连接;
- 浏览器呈现前端页面;
用到了 TCP + DNS + UDP(DNS 协议的传输层用到了 UDP 协议) + HTTP 协议;
传输层
传输层提供的是端到端的可靠、高效、节省开销的服务,事实上提供的是进程(Process)到进程的通信。
1. 有什么协议?
TCP、UDP 协议;
其中:
- TCP 协议为上层的 STMP 、IMAP 、POP3 、HTTP 、BGP 协议服务;
- UDP 协议为上层的 DNS 、 DHCP 、RIP 协议服务;
2. TCP 协议
TCP 协议提供端到端的、面向连接的、面向字节流的可靠传输服务;
- 什么是面向连接?
TCP 是面向连接的,这就意味着它只能“一对一”连接,两个主机之间通过 Socket ,即四元组(源地址,源端口,目的地址,目的端口)唯一确定连接。
- 什么是面向字节流?
应用层的消息可能会被 TCP 分成多个 TCP 报文,即 TCP 不保留消息的边界!
2.1 TCP 报文格式
- TCP Header:20 Bytes + Option 字段!!!
- MSS:Maximum Segment Size,最大报文段长度,只包含 TCP Payload ,即数据部分,不包括 TCP Header ;
- 伪头部:共 12 Bytes ,包括源 IP 地址、目的 IP 地址等;并不参与实际的传输,仅用于 TCP Checksum 的计算;
2.2 TCP 的连接建立
连接建立即 3 次握手:
- 客户端向服务器发送 SYN 包,其中 Seq = x ;
- 服务器向客户端发送 SYN + ACK 包,其中 Seq = y ,ACK = x + 1 ;
- 客户端向服务器发送 ACK 包,其中 Seq = x + 1 , ACK = y + 1 ;
需要注意的是,单独的 ACK 包并不占用 Seq 的字节,即对于下一个要发送的 TCP 报文,其 Seq 还是等于 x + 1 ;而 SYN 和 FIN 包虽然不携带数据,但需要占用 1 个字节;
2.3 TCP 的连接释放
连接释放即 4 次挥手 or 3 次挥手:
- 客户端向服务器发送的 FIN 包,其中 Seq = x ;
- 服务器向客户端发送 ACK 包,其中 Seq = y ,ACK = x + 1 ;
- 服务器向客户端发送 FIN 包,其中 Seq = y ,ACK = x + 1 ;
- 客户端向服务端发送 ACK 包,其中 Seq = x + 1 ,ACK = y + 1 ;
第 2 次和第 3 次事实上可以合并为 1 次握手,具体取决于服务器上层是否还有数据需要发送。
2.4 TCP 协议的功能
- 重传;
- 滑动窗口;
- 流量控制;
- 拥塞控制;
3. UDP 协议
UDP 无 ACK 、无差错控制(这个是可选的)、无流量控制、无拥塞控制,无连接、不可靠。为 IP 协议提供了一个接口,并加上端口号,实现复用。
3.1 和 TCP 有什么区别?
比较项 | TCP | UDP |
---|---|---|
是否面向连接 | ✅ 是(需三次握手建立连接) | ❌ 否(无连接,直接发送) |
可靠性 | ✅ 可靠(有确认 ACK、重传、顺序控制) | ❌ 不可靠(不确认、不重传、不保证顺序) |
是否保留消息边界 | 不保留 | 保留 |
是否支持一对多 | 不支持,一对一,面向连接 | 支持广播和组播,可以实现一对多 |
传输顺序 | ✅ 保证顺序 | ❌ 不保证顺序 |
拥塞控制 | ✅ 有(慢启动、拥塞避免等) | ❌ 没有 |
流量控制 | ✅ 有(滑动窗口) | ❌ 没有 |
首部开销 | 📦 大(20 字节起) | 📦 小(8 字节) |
速度 | 🐢 较慢(因为各种控制) | ⚡ 较快(无握手/控制) |
适用场景 | 文件传输、网页浏览、邮件(需要可靠性) | 音视频、语音通话、DNS 查询(需要实时性) |
3.2 报文格式
- UDP Header:8 Bytes !!!
- Src Port Number :16 bits ;
- Dest Port Number : 16 bits ;
- Total Length : 16 bits ;
- Checksum : 16 bits ;
- UDP Data:应用层有多少传多少,不会对数据进行分片,如果超出最大可发送的长度就不会发送;
- 伪报头:和 TCP 类似,UDP 同样会在差错检测计算校验和时添加一个伪报头,包括源 IP 地址、目的 IP 地址等,共 12 Bytes ;
网络层
网络层是处理端到端通信的最底层。
1. 有什么协议?
- IP 协议(真王朝了),以及 IPv4 和 IPv6 ,可以说统治了整个网络层。
- 在 IP 协议之下,有 ARP 和 RARP 协议;
- 在 IP 协议之上,有 OSPF 、ICMP 和 IS-IS 协议;
关于 RIP 和 BGP 协议的问题已经在前文中阐述,并且按照前文的理解,IP 协议既然也为 OSPF 协议提供服务,那么 OSPF 协议应该属于传输层协议。不过说白了,由于 TCP/IP 的统治力,界限未必一定要搞得很分明。
简单来说:
- RIP 、BGP 、OSPF 协议是 Routing Protocol ,即路由协议,用来计算最优路径并更新路由表;
- 而 IP 协议 严格来说是 Routed Protocol ,即可被路由协议,或者称其为路由的载体,将上层上层打包为 IP 包,根据路由表进行转发;
2. 有什么功能?
- Internetworking 网络互联;
- Addressing 编址;
- Routing 路由;
- Packeting 组包;
- Fragmenting 分片;
3. 提供的服务?
3.1 无连接的服务 —— 数据报 Datagram
- 无连接;
- 每个包需要携带完整的目的地 IP 地址;
- 包可能乱序到达;
3.2 面向连接的服务 —— 虚电路 Virtual Circuit
- 面向连接的;
- 在正式传输数据前,先建立一条从源路由器到目的路由器之间的路径;
3. IPv4 协议
3.1 IPv4 报文格式
考试会提供报文格式,这里再复习一遍几个比较重要的字段:
- IHL(IP Header Length):报文头长度,实际的头长度是 IHL 4 ,即这 4 bits 表示的范围是 5 ~ 15 ,实际头长度范围是 20 Bytes ~ 60 Bytes ;
- Type of Service:知道这里的后 2 bits 是显式拥塞控制位即可;
- Total Length:注意包括头长度 + 数据长度;
- DF:不分片标志,DF = 1 则表示不分片,一般为 0 ;
- MF:更多段标志,同一个 IP 包,除最后一个分片外,MF = 1 ;
- Fragment Offset:分片后的数据在原始数据中的位置,即偏移量,注意实际偏移量必须是 8 的整数倍,这 13 bits 的内容 8 = 实际偏移量;
- Checksum:只对 IP Header 进行校验;
3.2 IPv4 地址
IPv4 地址共 32 bits ;
3.2.1 分类 IP 地址
网络号 + 主机号。
3.2.2 特殊的 IP 地址
主要在计算 IP 地址块数时,减去网络号和网络等广播地址;
3.2.3 私有 IP 地址
用于 NAT 中。
3.2.4 子网与子网掩码
简单来说,就是向主机号借若干位,作为子网号,将 1 个较大的网分为若干个子网。对外界是不可见的。
子网掩码:一般为 255.255.224.0
这种形式,不过写成前缀长度的形式 /19
似乎也没问题。
路由时,如何得到子网地址?
将目的 IP 与子网掩码进行按位与的操作即可。
3.2.5 无类别地址 CIDR
形如 a.b.c.d/x
;
3.2.6 路由聚合
使用 CIDR 除了可以用来表示一个子网,也可以将多个子网聚合为一个超网;不过,将多个地址数较少的网合并为一个大网,会使地址空间被放大。
对于路由时,一个目的 IP 地址与多个不同前缀长度网络匹配时,选择前缀最长的那个网络进行转发,这就是最长匹配原则。
4. IPv6 协议
大概了解即可:
- IPv6 的地址长度为 128 bits ;
- IPv6 Header 头长度固定为 40 Bytes ;
- IPv6 的扩展头位于 Payload ,即数据部分;
5. ARP 地址解析协议
用于解决从网络层的 IP 地址到数据链路层的 MAC 地址的映射关系问题。即已知 IP 地址,需要获得 MAC 地址。
6. RARP 协议
上述的逆向,即已知 MAC 地址,需要获得 IP 地址,已经被淘汰了。
7. ICMP 因特网控制报文协议
包括差错报告报文、控制报文和查询报文。
8. IS-IS 协议
IS-IS 协议,全称 Intermediate System-Intermediate System ,为 IGP(内部网关协议)之一,属于链路状态协议,使用 LSP 链路状态选路工作。
8.1 IS-IS 协议 vs. OSPF 协议
比较项 | IS-IS | OSPF |
---|---|---|
起源 | OSI 协议(CLNP),更早 | IP 协议(IETF) |
网络层协议 | 原生支持 CLNP,后支持 IPv4/IPv6 等多种协议 | 只支持 IP 协议 |
封装方式 | 使用 OSI 网络层直接封装,不依赖 IP | 运行在 IP 层,使用协议号 89 |
灵活性 | 更易扩展,适合大规模网络 | 设计固定,结构清晰 |
应用领域 | 常用于运营商、ISP、MPLS 网络 | 企业网、数据中心常见 |
介质访问控制子层
1. 有什么协议?
- IEEE 802.3(经典以太网,CSMA/CD);
- IEEE 802.11(Wifi,CSMA/CA);
- IEEE 802.1g(VLAN);
2. 有什么功能?
解决广播式链路(即共享通信介质)的通信环境下介质访问控制问题,共享介 质的通信环境包括有线通信环境和无线通信环境。
3. Ethernet 以太网
3.1 10M 经典以太网
- 传输介质:Coaxial Cable 或 Twisted Pair(一般使用的是 UTP5),常见的有
10Base5-Thick
和10Base-T
; - 拓扑结构与设备:
- 同轴电缆采用 Bus 总线型;
- 到双绞线后引入集线器 Hub ;
- 由于电缆长度有限,所以引入中继器 Repeater;
- 编码方式:Manchester 编码;
- 共享信道协议:使用 1 - 坚持的 CSMA/CD 技术;
- 注意,经典以太网中,认定信道空闲的方式有说区别:需要监听到信道在 IFG(Inter Frame Gap, 帧间隙)时间内均空闲,才认为空闲;
- 最大最小帧长:
- 数据部分长度范围为 46 Bytes ~ 1500 Bytes ;
- 加上 18 Bytes 的控制字段,所以总长度为 64 Bytes ~ 1518 Bytes ;
- 如果不满足最小长度,则需要用 Pad 字段补齐;
3.2 百兆以太网/快速以太网
- 传输介质:双绞线或光纤,常见的有
100Base-T4
和100Base-TX
; - 工作方式:
100Base-T4
:使用 4 对 UTP3 双绞线,半双工;100Base-TX
:使用 2 对 UTP 5 双绞线,全双工;
- 编码方式:不再使用 Manchester 编码,而是使用 8B/6T(三电平)或 4B/5B + MLT-3 ;
- 共享信道协议:如果采用 Hub 连接,则为半双工模式,且仍需要 CSMA/CD 技术;
3.3 G 比特以太网
- 传输介质:双绞线或光纤;
- 工作方式和设备:Hub 或 Switch ,对应半双工或全双工的工作方式;
- 共享信道协议:如果采用 Hub 连接,仍需 CSMA/CD 技术,但存在问题,由于速度更快,电缆的最大长度相应减少;
- 流量控制:发送 Pause 帧;
3.3.1 解决电缆长度限制的方法
- Carrier Extension 载波扩展:在原来帧的尾部再添加一个 Extension 字段,将帧长度扩展至 512 Bytes ;
- Frame Burst 帧突发:如果对于有大量需要连续发送的帧的情况,帧的发送往往用队列存储,发送方可以将需要连续发送的帧拼成一个帧进行发送;
3.4 10G 比特以太网
- 传输介质:电缆较短的一般用的是双绞线(6a UDP),长距离一般使用光纤;
- 应用环境:高速的本地骨干网、高性能企业网络、数据中心等;
- 工作方式和设备:彻底抛弃了 Hub ,只有全双工工作模式,不再需要 CSMA/CD 技术;
3.5 以太网一图流
4. Wireless 无线通信 IEEE 802.11
4.1 共享信道协议
CD ,即冲突检测已经不再适用!
- Point coordination function(PCF, 点协调):
- 基站控制,进行轮询 Polling ;
- Distributed coordination function(DCF, 分布式协调):
- 没有中心控制,实行 CSMA/CA ;
4.2 CSMA/CA
4.3 监听方式
- 物理监听;
- 虚拟监听:
- 每个站点都记录一个 NAV(Network Allocation Vector, 网络分配向量);
- 每个帧都携带一个 NAV;
- NAV 表示这个数据帧将预计占用信道多长时间,通过 NAV 来确定退避时间,减少冲突;
4.4 可靠性 —— 段突发
短帧出错概率小,所以采用 Fragment burst 段突发 的方式,将较长的帧分为小的 Fragment进行发送,来提高可靠性;
4.5 节省电量
一直监听信道会造成电量浪费。
4.5.1 省电模式
- 客户端进入省电模式:
- 终端设备(如笔记本、手机)告诉 AP(无线接入点)自己要进入省电状态。
- 然后设备会关闭无线网卡部分模块,不再一直监听信道。
- AP 缓存数据(buffer traffic):
- 当有数据要发给该客户端时,AP 会暂时缓存这些数据。
- Beacon 帧广播:
- AP 会周期性发送 Beacon 帧(例如每 100ms),
- 其中包含一个 Traffic Indication Map(TIM),指示哪些客户端有待接收的数据。
- 客户端唤醒并检查 Beacon:
- 客户端周期性唤醒接收 Beacon 帧,看看 TIM 中是否有自己的标识。
- 发送 PS-Poll 帧:
- 如果 TIM 表示有数据,客户端就发送一个 PS-Poll(Power Save Poll)帧 请求接收数据。
- AP 发送缓存数据:
- AP 收到 PS-Poll 后立即发送缓存数据给客户端。
4.5.2 APSD 增强型省电机制
- 客户端进入 APSD 模式(也处于省电状态);
- 客户端主动发送数据帧(比如语音包);
- AP 在接收到数据帧后,立即发送之前缓存的数据(无需 PS-Poll);
- 客户端周期性发送语音包(如每 20ms),正好触发 AP 同步传送下行数据;
4.6 QoS —— 帧间隔 and TXOP
5. VLAN 虚拟局域网
5.1 为什么需要 VLAN ?
目的 | 好处 |
---|---|
隔离广播 | 将单一的大广播域拆分成多个小广播域,减少网络风暴与 CPU 占用 |
提高安全性 | 不同部门/业务放在不同 VLAN,相互默认不可直接访问 |
灵活部署 | 逻辑分段代替物理布线;用户搬工位只要改端口 VLAN 设置即可 |
简化管理 | 基于功能或安全策略(而非地理位置)来组织网络 |
5.2 IEEE 802.1Q 协议
在以太网帧头插入 4 字节字段,携带 12 位 VLAN ID ;
第一个遇到的支持 VLAN 的网桥/交换机给帧加上 VLAN 字段,最后一个去掉 VLAN 字段。
注:
- 终端设备对 VLAN Tag 无感知,即只需要网桥/交换机支持 VLAN ;
- 集线器 Hub 由于工作在物理层,因此无法识别 VLAN 的标记。
数据链路层
1. 有什么协议?
- 面向局域网 LAN 的:
- IEEE 802.3(Ethernet);
- IEEE 802.11(Wifi);
- 面向广域网 WAN 的:
- PPP 协议;
- HDLC 协议;
2. 有什么功能?
- 差错控制;
- 流量控制;
- 编址(MAC 地址)和介质访问控制(应用于共享信道);
- 成帧 Framing ;
2.1 Framing 成帧
- 字符计数法;
- 字节填充法;
- 比特填充法;
- 物理层编码违例;
字节填充法如下图所示:
比特填充法如下图所示:
只需要知道:
- PPP 协议使用字节填充法;
- HDLC 协议使用比特填充法,HDLC等协议差错校验和成帧的顺序是:
- 发送方处理步骤:
- 计算并添加校验码 -> 0比特填充 -> 添加收尾标记01111110
- 接受方处理步骤:
- 收到物理层的01比特串 -> 首先根据首尾标记位提出帧 -> 删除发送方添加的零比特,就是进行比特删除 -> 最后,进行差错校验
- 发送方处理步骤:
- 如果物理层采用 Manchester 编码,则可以使用物理层编码违例方式;
2.2 差错控制
2.3 流量控制
3. 提供的服务?
- Connectionless services 无连接的服务;
- Unacknowledged connectionless services:大多数局域网LAN使用无确认;
- Acknowledged connectionless services:无线通信;
- Acknowledged connection-oriented services 面向连接的服务;
4. HDLC 协议
HDLC 协议,即 High-level Datalink Control ,高级数据链路控制协议;
4.1 特点
- 可靠,面向连接;
- 包含流量控制(GBN ARQ or SR ARQ)和差错控制功能(CRC);
- 同步串行链路传输;
- 不支持链路和网络参数协商;
- 不支持认证;
4.2 帧格式
从上图也可见,HDLC 采用零比特填充;
注:监督帧就是单独的 ACK 或 NAK ;
5. PPP 协议
PPP 协议,即 Point-to-Point Protocol ,点对点协议;
5.1 特点
- 只支持点到点;
- 无连接,无确认;
- 采用字节填充法;
- 适配多种网络层协议;
- 支持身份认证;
- 物理层可以采用异步和同步传输;
5.2 帧格式
注:
- 其中用红线❌掉的都是可以省略的部分;
- Checksum 使用 CRC 校验来检错;
6. HDLC vs. PPP 协议
物理层
物理层涉及的主要是一些标准,包括对速率、传输介质、编码方式和调制方式的规定。
1. 基本概念
1.1 带宽 Bandwidth
带宽最早用来指模拟信号具有的频段宽度,即信道能够有效传输信号的频率范围,对应的单位就是 ,e.g. 语音电话线 300 ~ 3400 Hz ,对应带宽 3.1 KHz ;
现在这个概念被扩展到数字信号上,带宽指的事实上就是最大数据率。
1.2 数据率/比特率/传输速率
指的就是数据的传送速率,单位 ,e.g. 百兆以太网数据率为 100 Mbps ;
1.3 吞吐量 Throughput
在单位时间内通过某个网络的数据量,或者说网络可以传送的数据位数。单位:(其实就是 );
其与数据率是不同的,数据率是可用带宽,而吞吐量是一个实际链路工作过程中的测试指标,往往数据率。
1.4 负载 Load
单位时间内注入网络的数据位数,单位: 。
1.5 码元速率/调制速率/波特率 and 采样速率
每秒钟传输的码元数,单位 ,和比特率有以下转换关系:
一个例外是 Manchester 编码,其用 2 个码元代表 1 个 bit ,所以 Bit Rate = Baud Rate 。
关于采样速率是否与前者相同的问题,理论上来说,采样速率应该指的是对模拟信号的采样过程,而波特率已经是数字信号了。不过似乎题目中有时也会把两者混为一谈,比如:
1.6 带宽时延积 bandwidth-delay product
表示充满整个网络的比特数。带宽时延积 = ;
1.7 单工/半双工/全双工
- 单工 Simplex:信息只进行单向的传输,e.g. 收音机;
- 半双工 Half-Duplex:同一节点,在同一时刻只能作为发送方或接收方,e.g. 对讲机;
- 全双工 Full-duplex:同一节点在同一时刻可以既发又收,e.g. 打电话;
1.8 同步/异步传输
2. 信道最大传输速率计算
;
3. 计算采样率
Nyquist 指出,对于一个带宽为 的基带信号,需要 sample/s 的采样率才能够完全重构。
4. 传输介质
- 有线传输介质:
- 双绞线 Twisted Pair:既能传模拟信号(电话线),又能传数字信号(以太网);
- 同轴电缆 Coaxial Cable:和双绞线相比,屏蔽性能和带宽更好;
- 光纤 Fiber Optics:带宽大,抗干扰能力好;
- 无线传输介质:
- 无线电:一句话,频率越高,波长越短,传播距离越短,超高频需要在视线范围内传播;
- 微波:直线传输,适合长距离,需要地面中继站 Repeater 进行整形和放大;
- 红外线和可见光通信:略;
- 卫星通信:通信卫星相当于微波通信中中继站 Repeater 的作用,只不过在大气层以外;
5. 数字调制技术
ASK ,FSK ,PSK ,QAM ,QPSK 等。
6. 物理层协议
参数包括:
- Mechanical Features 机械特性:接口形状和尺寸、引线数目和排列、固定和锁定装置等;
- Electrical Features 电气特性:电缆线上的电压范围;
- Functional Features 功能特性:某条线上出现的某一电平的电压保持何种意义;
- Procedure Features 过程特性:对于不同功能的各种可能事件的出现顺序;
e.g. RS-232 协议。