[TOC]
第一章 计算机网络体系结构
I.计算机网络概述
概念
- 计算机网络是互连的、自治的计算机集合。
- 由节点(Node)和连接这些节点的链路(Link)组成。
组成
- 组成部分:硬件、软件、协议
- 工作方式:
- 边缘部分:用户直接使用的主机
- 核心部分:网络的基础设施,如路由器、交换机等
- 功能组成:
- 通信子网:负责数据传输
- 资源子网:负责资源管理
功能
- 数据通信
- 资源共享
- 分布式处理
- 提高可靠性
- 负载均衡
交换技术
种类
交换技术 | 特点 | 优点 | 缺点 |
---|---|---|---|
电路交换 | 1.需要建立物理连接通道 2.传输过程中通道被==独占== |
1.通信时延 2.适用于实时通信 3.能够完全有序传输 |
1.建立连接时间长 2.线路利用率低灵活性差 3.难以实现差错控制 |
报文交换 | 1.报文封装全部信息 2.==全部存储==后再转发 3.无需建立连接 |
1.适用于短报文传输 2.适用==不确定==通信量 3.线路可靠 4.动态分配线路 |
1.转发时延长 2.缓存开销大 3.难以实现差错控制 |
分组交换 | 1.报文分割成==固定长度==的分组 2.==存储转发== 3.无需建立连接 |
1.减少出错概率 2.简化缓存 3.流水线加速 |
1.存在存储转发时延 2.需要额外信息量 3.可能出现乱序、丢失、重复分组 |
[!Important]
- 报文转发和分组转发存在处理延迟,即上图中的空隙
- 分组转发花费时间和中间节点数量有关系,一些情况下可以简便运算
区别
-
计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率很低。报文交换和分组交换不需要建立连接(即预先分配通信资源),在传送计算机的突发数据时可以提高通信线路的利用率
- 将报文构造成若干个更小的分组进行分组交换,比将整个报文进行报文交换的时延要小,并且还可以避免太长的报文长时间占用链路,有利于差错控制,同时具有更好的灵活性。
分类
分布范围
- 广域网(WAN)
- 城域网(MAN)
- 局域网(LAN)
- 个人区域网(PAN)
传输技术
- 广播式网络
- 点对点网络
拓扑结构
- 总线型
- 星型
- 环型
- 网状型
关于差别,在通信效率、可靠性、扩展性、成本等方面出题
网络性能指标
[!Important]
速率中的K、M、G表示的是十进制,分别为
10^3 、10^6 、10^9
-
速率
-
带宽
- 模拟信号:频率范围(Hz)
- 计算机网络:最高数据传输速率
-
吞吐量:单位时间通过网络的实际数据量
-
时延
- 发送时延
t_s = 数据块长度/发送速率 - 传播时延
t_c = 信道长度/传播速率 - 处理时延
- 排队时延
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
- 发送时延
-
时延带宽积: 传播时延 * 带宽
-
往返时延
RTT=|发送报文时间 - 接收确认ack时间| -
!信道利用率
U - 空闲时延
D_0 、当前时延D D = \frac{D_0}{1-U} ,U 越大,当前时延D 越大
- 空闲时延
II.计算机网络体系结构
分层结构
分层基本原则
- 每层实现特定功能
- 各层间由可以互相通信的接口
- 下层独立于上层,即没有上层也能工作
- 上层==单向==使用下层服务
结构元素
- 实体
- 实体:在通信过程中能够发送或接收信息的硬件或软件模块
- 对等实体:在通信过程中能够相互通信的实体
-
协议数据单元(PDU):对等层水平传递的数据单元,分为数据和控制信息
-
服务数据单元(SDU):对等层垂直传递的数据单元,服务上层
- 协议控制信息(PCI):对等层水平传递的控制信息
[!Note] 第n层收到的PDUs称为n-1层的SDUs,加上第n层的PCI就构成了n层的PDUs
!协议、接口、服务
-
协议(水平关系)
协议 含义 作用 举例 语法 数据格式 数据的结构和编码 TCP 报文的格式由语法决定 语义 具体操作流程 何时发何种控制信息、如何应答 TCP 三次握手具体操作 同步(时序) 操作条件、时序 明确数据交互的顺序流程 TCP 连接的建立、关闭报文时序 -
接口 服务访问点 SAP(Service Access Point):同一节点内相邻层之间的接口,提供服务访问点
-
服务(垂直关系)
- 服务原语:服务提供者和服务用户之间的通信操作
- 请求:服务用户向服务提供者发出的请求,请求服务提供者执行某种操作
- 指示:服务提供者向服务用户发出的指示,要求服务用户执行某种操作
- 响应:服务用户向服务提供者发出的响应,表示对指示的响应
- 证实:服务提供者向服务用户发出的证实,表示对请求的证实
- 服务分类
- 面向连接服务和无连接服务:是否建立连接
- 可靠服务和不可靠服务:是否保证数据传输的可靠性
- 有应答服务和无应答服务:是否需要对数据传输进行应答
OSI参考模型
低三层为通信子网,高三层为资源子网
层次 | 名称 | 传输单位 | 功能 | 协议 | |
---|---|---|---|---|---|
1 | 物理层 | 比特 | 1.规定物理接口参数 2.规定信号意义和电气特征 |
IEEE802.3 | |
2 | 数据链路层 | 帧 | 1.速率协调 2.差错检测(==只能丢弃==) 3.流量控制 |
SDLC、HDLC、STP、PPP、 | |
3 | 网络层 | 数据包 | 点到点 | 1.差错、拥塞控制 2.路由选择 3.分组交换 4.流量控制 |
IP、ICMP、IGMP、ARP、RIP、OSPF |
4 | 传输层 | 段 | 端到端 | 1.差错控制 2.流量控制 3.拥塞控制 |
TCP、UDP |
5 | 会话层 | 数据 | 1.建立、==同步==、释放会话 2.建立恢复点 |
||
6 | 表示层 | 数据 | 1.数据格式转换 2.数据==加密、压缩== |
||
7 | 应用层 | 数据 | 1.提供用户接口 2.文件传输 3.电子邮件 4.远程登录 |
HTTP、FTP、SMTP、POP3 |
[!Tip]
流量控制:
数据链路:相邻节点之间的流量控制
网络层:==整个网络==中的流量控制
- 传输层:端到端的流量控制
TCP/IP参考模型
-
网络接口层
-
与OSI的物理层和数据链路层对应
-
功能:定义网络接口标准
- 以太网、令牌环、FDDI、ATM、PPP、SLIP
-
-
网际层
-
与OSI的网络层对应
-
功能:IP寻址、路由选择、分片、差错检测
- 协议:IP、ICMP、ARP、RARP
-
-
传输层
-
与OSI的传输层对应
-
功能:差错控制、流量控制、拥塞控制
- 协议:TCP、UDP
-
-
应用层
-
与OSI的应用层、表示层、会话层对应
-
功能:提供用户接口、文件传输、电子邮件、远程登录
- 协议:HTTP、FTP、SMTP、POP3
-
!OSI与TCP/IP对比
- OSI 是理论模型,TCP/IP 是实际模型
- OSI 七层,TCP/IP 四层
- OSI 在网络层支持面向连接和无连接服务,而 TCP/IP 只支持无连接服务
- OSI 的传输层只提供端到端可靠传输,而 TCP/IP 的传输层提供不可靠传输 UPD 和可靠传输 TCP
第二章 物理层
实现功能:
“透明”传输比特流;
- 物理接口特性
- 机械特性:形状尺寸、引脚设计
- 电气特性:信号电压、阻抗、传输速率、距离限制
- 功能特性:规定接口各电缆作用(网线八根作用)、电压波形含义
- 过程特性:信号时序关系
I.通信原理
基本名词
-
数据、信号和码元
- 数据:传送信息的实体
- 信号:数据的电气和电磁表现
- 码元:不同离散数字的基本波形
模拟数据(信号)是连续的
数字数据(信号)是离散的
-
信源、信道和信宿
- 信源:产生和发送数据的源头
- 信宿:接收数据的终点
- 信道:
- 基带信号是数字0/1;宽带信号是模拟波形
- 数字信道传输数字信号;模拟信道传输模拟信号
-
速率、波特和带宽
- 码元传输速率(波特率Baud/s)
- 信息传输速率(比特率b/s)
- 带宽
- 模拟信号通信:频率范围Hz
- 计算机网络:最高数据传输速率b/s
传输方式
-
串行并行
- 局域网:串行
- 计算机内部:并行
- 同步异步
- 同步传输
- 外同步:外加时钟
- 内同步:信号编码同步
- ==异步传输==:字节间异步,字节内同步
- 单工双工
- 单向:广播
- 半双工:对讲机
- 全双工:互联网
编码与调制
数字数据->数字信号
- 归零(RZ)编码
- 0:前低后零
- 1:前高后零
- 不归零(NRZ)编码(==无自同步==)
- 0:低电平
- 1:高电平
- 曼彻斯特编码:以太网
- 设定初始信号形式
- 码元必定在中间跳变
- 码元==中间==电平变化表示信号0/1
- 差分曼彻斯特编码
- 码元==开始==无跳变表示1,有跳变表示0
模拟数据->数字信号
奈奎斯特定理:
f_{采样}≥2*f ,才能完整保留信号信息
数字数据->模拟信号
- 调幅(AM):载波振幅变化表示0、1
- 调频(FM):载波频率变化表示0、1
- 调相(PM):载波相位变化表示0、1
- 正交幅度调制(QAM):
R = B*log_{2}(mn)
信道容量
奈奎斯特定理(无干扰)
W :信道频率带宽范围(Hz)
V :码元离散电平数量
香农定理(有噪声)
W :信道频率带宽范围(Hz)
\frac{S}{N} :信噪比[!Note]
- 计算时注意“二进制”、“十六进制”等字眼,是波特值的含义,则要在v和C中选出最小的
- 分贝值的大小为
d=10log_{10}(\frac{S}{N}) ,注意转换
信道复用
- 频分复用 FDM:不同用户用不同频率的信道,限于模拟信号
- 时分复用 TDM:分时服务用户
- 波分复用 WDM:(光的)波长
- !码分复用 CDM
- 码片
m_i :分给每个站码片m_i ,码片之间正交 - 码片向量:码片
m_i 的1为1,0为-1 - 站点发送:比特1为码片向量,比特0为码片销量负值
- 站点接收:与自身码片向量相乘,除以码片长度
- 码片
II.传输介质
- 双绞线
- 同轴线缆
- 光纤:==外低(反射率)内高(反射率)==
- 多模:光的全反射;光源为发光二极管
- 单模:直径小于光的波长,光沿直线;光源为半导体激光
- 无线传输:
- 无线电波
- 激光、红外线、微波
III.物理层设备
-
中继器
-
功能:整形、放大并转发数字信号
-
“5-4-3”原则:5段通信介质由4个中继器连接,最多挂载3个计算机
[!Tip]
放大器放大的是模拟信号
两端可以是不同介质,如无线有线,则两端可以是不同的链路层协议
-
-
集线器(Hub)
- 功能:多端口中继器;整形、放大信号,扩大网络范围
- ==半双工==
第三章 数据链路层
实现功能:
- 封装成帧
- 透明传输
- 差错检测
I.数据链路层概述
相关名词
- 链路:从一个节点到相邻节点的通信信道,中间==无交换节点==
- 数据链路:链路+链路层协议
- 帧:数据链路层传输的数据单元 PDU
!服务
- 无确认的无连接服务:不需要建立连接,不需要确认,如以太网
- 有确认的无连接服务:不需要建立连接,需要确认,如无线局域网
- 有确认的面向连接服务:需要建立连接,需要确认,如PPP
设备
交换机(多接口网桥)
-
工作流程
-
自学习:收到帧,发现转发表中没有此帧的源MAC和目的MAC,记录MAC和对应接口,并广播到==其他==所有接口
- 转发:收到帧,转发表中有目的MAC表项,转发到对应接口
-
-
工作模式
- 直通交换:只检查帧首目的MAC地址,直接转发
- 存储转发:存储到内存中进行检错,错则丢,无损则转发
- 特点
- 隔离冲突域:星型一对一
- 不隔离广播域:广播帧都会被转发
!功能
封装成帧
在数据前后加上帧首部和帧尾部
-
帧首部和帧尾部
- 帧首部:帧起始标志、地址、控制、协议
-
帧尾部:校验和
- 以太网V2的MAC帧格式(左尾右首)
FCS 数据载荷 类型 源地址 目的地址 4B 46-1500B 2B 6B 6B - PPP的帧格式(左尾右首)
标志 FCS 数据载荷 协议 控制 地址 标志 1B 2B 最大1500B 2B 1B 1B 1B -
帧定界
- 帧同步
透明传输
传输的数据不受特殊字符的影响
- 字符填充:在数据中插入转义字符,如HDLC的ESC(11111101)
- 字符计数:在帧首部加入帧长度
流量控制
控制==发送方==发送速率,防止接收方缓存溢出
- OSI体系中,数据链路层有流量控制的功能
- TCP/IP体系中,流量控制由==传输层==负责
差错检测
通过确认重传、CRC检测帧中的错误
-
CRC:检测帧内位错,将帧看成多项式,除以生成多项式,余数作为校验码
- 确认重传:帧丢失,超时重传
- 通信质量好的线路,仅进行CRC检测,重传由上层协议处理
- 通信质量差的线路,进行确认重传
II.组帧
功能:将网络层递交的分组封装成帧
问题:帧定界、帧同步、透明传输
-
字符计数法:帧首部添加==计数字段==记录该帧的字节数
-
字节填充法:
- 添加SOH、EOT标识帧头帧尾
- 数据段中存在”SOH、EOT、ESC“字符,前面添加ESC进行转义
-
(==HDLC==)零比特填充法:
- 使用01111110标志帧开始和结束
- 数据字段中每连续5个”1“后自动添加一个”0“
- 违规编码法:使用数据传输方式中不用的编码标识首尾
III.差错控制
检错编码
-
奇偶检验码:数据中”1“的个数
- 循环冗余码CRC
- 约定
G(x) = x^{n_k}+x^{n_{k-1}}+···+x^{n_1} - 冗余码计算:在源数据后加
G(x) 中Max(x_{n_k}、x_{n_{k-1}}···x_{1}) 位,进行除法计算
- 约定
纠错编码
-
海明码距
d_{min} - 检错数量
r = d_{min}-1 - 校正错误数量
r = (d_{min}-1)/2
- 检错数量
- 海明码:见车爹PPT
IV.流量控制和可靠传输
流量控制
流量控制指由==接收方控制发送方==的发送速率。
数据链路层控制的相邻结点之间的流量;传输层控制端到端流量
- 数据链路层控制方法:接收方是否返回ACK控制;传输层控制方法:接收方在ACK设置窗口值调整发送方的发送窗口
可靠传输
可靠传输是指发送方数据能被接收方正确接收
- 有线网络数据链路层不负责可靠运输
- 无线网络数据链路层负责可靠运输
-
停止等待协议(S-W)
-
一次只发送一帧
- 超时重传
- 一位比特编号
- 设置帧缓冲区用于重传
-
-
后退N帧协议(GBN)
-
发送方在发送窗口内连续发送
-
接收方发现丢失一帧,后面全无效
-
接收方可累计确认,只确认最新连续的一位
- 发送方接收到ACK后,可直接将窗口后滑
-
- 选择重传(SR)
- 发送方在发送窗口内连续发送
- 接收方必须每帧都发送确认
- 接收方检测到错误帧就发送NAK,要求==立即重传==要求的帧
[!Tip]
注意题目中的帧数和帧序号比特数区别
帧序号比特数k:
2^k - 1 >= n
V.介质访问控制
随机访问控制
ALOHA协议
-
纯ALOHA协议
发送方:随机发送数据帧,发送成功则等待下一帧,发送失败则等待随机时间后重传,直到发送成功
-
时隙ALOHA协议
发送方:等待下一个时隙发送数据帧,发送成功则等待下一帧,发送失败则等待下一个时隙后重传,直到发送成功
CSMA协议
-
1-坚持CSMA协议
发送方:要发送信号时,持续监听信道,信道空闲则发送数据帧,直到发送成功
-
非坚持CSMA协议
发送方:要发送信号时,若信道忙则等待随机时间后再次监听信道,信道空闲则发送数据帧,直到发送成功
-
p-坚持CSMA协议
发送方:要发送信号时,若信道忙则等待随机时间后再次监听信道,信道空闲则以概率p发送数据帧,以概率1-p继续等待
CSMA/CD协议
总线型有线网络
半双工通信

-
发送阶段:检测冲突
-
争用期 t=2τ :代表信号在端到端往返的最大时间,若在此时间内没有检测到冲突,则发送成功 最小帧长L_{min} = 2τ*v :保证在发生冲突时,发送方能检测到冲突; 10Mbps以太网:t= 51.2μs ,L_{min} = 512bit =64B
-
-
!冲突阶段:截断二进制
- 二进制指数退避算法:
R = rand(0,1,···,2^k-1) ,k=min(n,10) ,n 为冲突次数 重传推迟时间t_{backoff} = R*2τ - 发送失败:当
n >= 16 时,发送失败
- 二进制指数退避算法:
!CSMA/CA协议
无线局域网
- 发送阶段
- 源站检测信道空闲,等待==DIFS==长度的时间准备发送
- 源站检测信道空闲,使用==随机避让算法==延迟
- [可无此阶段]信道预约阶段
- 源站广播发送==RTS==报文
- 目的站等待==SIFS==后,发出==CTS==,通信范围接收到此帧的其他站保持静默(处理隐蔽站问题)
- 数据传输阶段
- 源站接收到CTS,等待SIFS后开始发送
- 目的站接收完数据后,等待SIFS后发送ACK帧回应直到源站接收
- 此阶段对于其他站为NAV(信道忙)时间
IFS(InterFrame Space):帧间间隔
DIFS:分布式协调IFS,只在源站侦测到空闲后触发
SIFS:短IFS,在任意类型帧间触发
RTS(Request To Send):请求发送控制帧
源地址 + 目的地址
- 本次通信所需时间:SIFS + CTS + SIFS + 数据帧 + SIFS + ACK
即对面接收完RTS开始,到己方接收完ACK结束
CTS(Clear To Send):允许发送控制帧
给源站明确的发送指令
指示其他站在预约期内保持静默
- 预约期:SIFS + 数据帧 + SIFS +ACK
即对面接收完CTS开始,到对面接收到ACK结束
NAV(Network Allocation Vector)
预约时间/信道被分配时间
- 在CTS中标明,NAV = SIFS + 数据帧 + SIFS + ACK
随机避让算法
- 基本退避时间
2τ - 退避计时器在第k次:
R=rand(0,1,···,2^{k+2}-1),k<=6 - 退避时间
2τ*R
轮询访问
令牌传递协议
- 源站按环路连接,令牌轮流传递;
-
一个站点拥有令牌后
-
无数据发送,则立即传给下一站
- 有数据发送,将令牌中插入数据发送,每次只能发送一帧;
-
- 数据帧在环路循环转发,目的站收到后复制再继续转发;
- 源站收到后检验帧,出错则重发,否则生成新令牌并传递给下一站。
VI.局域网
概览
-
介质访问控制方法:CSMA/CD、令牌总线、令牌环
-
局域网拓扑:以太网、令牌环、FDDI
- IEEE802定义:
- 逻辑链路控制(LLC):无确认无连接、带确认无连接(帧加序号)、面向连接、高速传送、寻址、竞争处理
- 介质访问控制(MAC):组帧、差错控制、透明传输
以太网V2/802.3
结构:逻辑总线型、物理星型(一交换机连多终端)
CSMA/CD协议
无连接、无确认、不可靠
曼彻斯特编码
-
网卡(网络适配器):数据==串并联转换==、直接丢弃差错帧、正确帧触发中断
-
MAC地址:6B = 48b
-
以太网V2 MAC帧
[!TIP]
以太网==没有帧停止定界==,由于使用曼彻斯特编码,发送完一帧后出现电平不变现象,接收方视其为帧结束(类似违规编码思想)
-
高速以太网
速率 帧间间隔 通信方式 介质访问控制协议 100Mbps 9.6μs 全双工+半双工 CSMA/CD==(半双工)== 1Gbps 0.96μs(缩短信道长度到100M) 全双工+半双工 10Gbps 全双工 全双工不需要访问控制
无线网802.11
802.11帧有==4个地址==
-
有固定基础设施
- 基本服务集(BSS):一个AP + 几个移动站
- AP接入点基站:
- 服务及标识符SSID(WIFI名)
- 信道Channl
- 扩展服务集(ESS):一个分配系统DS + 几个基本服务集BSS
- DS连接各BSS的基站AP
-
自组织网络:节点平等,所有节点都有路由功能
-
802.11帧
方向 地址1(接) 地址2(发) 地址3(末) 地址4 发送给AP设备 AP地址 源地址 目的地址 — 发送给终端设备 目的地址 AP地址 源地址 —
VLAN服务802.1Q
-
划分方式
- 基于物理接口
- 基于MAC地址
- 基于IP地址
-
!802.1Q帧
[!TIP]
比普通V2帧长度多4B,最大帧长1522B
添加后,需要重新计算FSC
- 结构:
- TPID:0X8100
- PRI:优先级
- VID:标识符,==12位==
VII.广域网
PPP协议
用户与ISP的通信协议
数据层面:不可靠、无序号和确认
控制层面:面向连接
只保证CRC检错实现无差错接收
面向==字节==、全双工
-
组成部分
- 链路控制协议LCP:配置测试链路连接,协商参数
- 网络控制协议NCP:对接兼容多种网络层协议
- 组帧方法(规范)
-
!PPP帧
-
连接过程
flowchart TD A[链路静止] --> |物理层链路建立| B[链路建立] B --> |LCP协商失败|A B --> |LCP配置协商|C[鉴别] C --> |鉴别失败|D[链路终止] D --> |LCP链路终止|A C --> |鉴别成功|E[网络层协议] E --> |NCP配置协商|F[链路打开] F --> |链路故障或终止|D
无连接 -> 物理链路 -> LCP链路(控制)-> NCP链路(数据)
第四章 网络层
I.网络层功能
屏蔽了各种局域网的异构细节,如链路层协议、网络层协议(IPv4和IPv6)
路由转发
- 路由选择
- 分组转发
服务方式
虚电路
面向连接
保证可靠性
设虚电路号码VCID
建立连接时:分组首部使用完整地址
- 后续:只使用VCID
-
工作流程
-
虚电路建立
- A:呼叫请求 -> B
- B:呼叫应答 -> A
-
数据传输
- A:数据 -> B
- B:ACK -> A
-
虚电路拆除
-
A:释放请求 -> B
- B:释放应答 -> A
-
-
-
分类
- 永久性虚电路(PVC)
- 交换型虚电路(SVC):临时
数据报
无连接、不可靠
SDN网络
- 架构
- 数据平面:终端设备 + 路由器(感觉已经算是交换机了)
- 控制平面:远程控制服务器计算路由
- 接口
- 南向接口:转发设备(路由器)与控制服务器建立连接的接口,如Overflow协议
- 北向接口:给上层开发者设计应用
- 东西接口:SDN控制服务器之间的接口
拥塞控制
-
判断方式:负载增加,吞吐量降低
-
开环控制
静态,设计时预计所有情况
-
闭环控制
动态,运行时对反馈的拥塞情况进行调整
闭环:即运行时有反馈环
II.IPv4
IPv4地址
4B = 32bit
分类编址

划分子网编址
分类编址 + 子网掩码,使部分主机号作为网络号,划分出多个子网
- 范围:主机号全0、全1无法使用
- 路由表变化:目的网络地址 + 子网掩码 + 下一跳地址
无分类编址CIDR
去除ABC分类编址的思想,只使用掩码标识网络号长度
从ISP分到网络号后,仍然能自定义掩码长度来划分子网
V4首部格式

段名 | 长度 | 作用 |
---|---|---|
版本 | 4b | 协议版本为4 |
首部长度 | 4b | 单位为4B,长度范围20B~60B,数值范围0101~1111 |
区分服务 | 8b | 区分类别和优先级,很少使用 |
总长度 | 16b | 单位为1B,首部长度 + 数据载荷长度 |
标识 | 16b | 分片后通过同一标识合并 |
标志 | 3b | MF:1表示后面还有分片,0表示没有; DF:1表示允许分片,0表示不允许 |
片偏移 | 13b | 单位为8B,数值×8代表本段第一个字节在原数据载荷中的位置 |
生存时间 | 8b | TTL,每转发一次跳数减1 |
协议 | 6b | 表示数据载荷协议类型(如TCP、UDP等) |
首部校验和 | 16b | 用于检测首部差错 |
- 计算分片
- 片偏移计算(8B整数)
- 生存时间判断
优化技术
-
NAT:路由器构建NAT表,将外网地址+端口和内网地址+端口进行映射
- NAT路由要看到传输层的端口号
- 转发时会改变源或者目的IP地址
-
路由聚合:路由器对需要聚合的网络寻找最长前缀,并和变长掩码一起存入路由表
-
特殊路由:
- 特定主机路由:*.*.*.*/32,定位到单个主机
- 默认路由:0.0.0.0/0,路由表无其他项则走默认路由
ARP 地址解析协议
- 网络层/数据链路层,自生成报文
- 每个主机、路由都有ARP表
- 已知IP地址,需要询问MAC地址
- 动态维护,一般2min更新
-
ARP请求报文
- 主机A发送广播,目的MAC地址为全1
- 目的主机B收到后,自身ARP表记录A的源IP和源MAC
- ARP响应报文
- 主机B单播回应
- 内容为自身MAC地址
- 主机A更新ARP表
DHCP 协议
ICMP 网际控制协议
- IP报文
- 网络层数据报转发时状态信息交互
-
ICMP差错报告报文
- 终点不可达:路由器/主机==不能交付报文==时向源发送
- 源点抑制:路由器/主机因为==拥塞==丢弃报文时向源发送
- 超时:路由器收到TTL==为0==的报文时向源发送,若收不到全部分片则全部丢弃
- 参数问题:路由器/主机收到==首部字段校验和错误==时丢弃报文,并向源发送
- 改变路由(重定向):路由器向源发送,告知源有更好的路由
不发送ICMP差错报告的情况
- ICMP差错报告报文,不发送ICMP差错报告
- 特殊地址不发(广播、回环)
- 多分片报文只发送一次,后续分片不发
-
ICMP询问报文
- 回送请求和应答:PING(应用层)
- 时间戳请求和应答:Traceroute(网络层)
- 地址掩码请求和应答
- 路由器请求和通告
III.IPv6
128b = 16B
基本首部长度固定,选项通过扩展首部实现,扩展首部算在有效载荷内
不能分片,只能由源端分片,目的端合并
中间路由接收到太长的数据报会丢弃报文,并发送ICMP差错报告
V6首部格式

段名 | 长度 | 作用 |
---|---|---|
版本 | 4 | 内容6 |
通信量类 | 8 | 区分类别和优先级 |
流标号 | 20 | 类似于v4首部标识,同一个“流”内流标号相同 |
有效载荷长度 | 16 | 单位1B,除基础首部的字段长度(包含扩展首部),最大65535 |
下一个部首 | 8 | 无扩展首部时:数据载荷协议类型(TCP/UDP) 有扩展首部时:第一个扩展首部类型 |
跳数限制 | 8 | TTL,路由器转发-1,0则丢弃 |
V6地址
-
表示方法
-
冒号十六进制:每4个十六进制数(2Byte)之间用冒号隔开
-
左侧0省略:两个冒号间的十六进制数中最前面的一串0可以省略不写;冒号间全为0,可省略只写一个
- 连续0压缩:多个连续0,可只填俩个冒号,==只能出现一次==,多个则无法定位
-
-
地址类型
-
未指明地址:0:0:0:0:0:0:0:0,::/128,只能作为源地址
-
回环地址:0:0:0:0:0:0:0:1,::1/128,只有一个
-
多播地址:FF00::/8,用于多播通信
-
本地链路地址:FE80::/10,私有地址,只能在本地链路使用
- 全球单播地址:除了以上,其他都是
全球路由前缀 子网标识 接口标识 48b 16b 64b [!TIP]
由于接口标识可对MAC地址进行编码,所以可以通过IPv6地址直接找到MAC地址,==省去ARP协议==
-
-
V4和V6地址转换
- 双栈:同时支持V4和V6
- 隧道:V4数据报封装在V6数据报中
- NAT64:V6数据报封装在V4数据报中
IV.路由协议
RIP协议
- 应用层,UDP封装
- 基于距离向量
- 路由器到直连网络的距离定义为1
- 只和==相邻==路由器交换自己的路由表
- 周期30s交换更新路由表,180秒无报文则此路由失效
-
收敛:每个路由器都知道到达本自治系统AS内各网络的最短距离和下一跳路由器
-
计算流程:
-
A向相邻的B发送路由表a
-
B将a中所有距离条目加上与A的距离,下一跳改为A
- 和自身路由表进行比较,选最短的
-
- 存在问题:网络N1突然失效,相邻路由器更新成16不可达之后,被相邻其他无法获取到N1状态的路由器路由表影响,16不可达被覆盖为可达。直到多次后才能确认不可达。
OSPF协议
网络层,IP数据报
- 基于链路状态(量化为代价)
- 支持CIDR
- 有鉴别,保证安全
- 链路状态有32位序号,越大越新
-
代价计算
cost = 100Mbps/链路带宽 cost大于1则保留整数,小于1则记为1
-
链路状态表:相邻路由 + 代价
-
区域划分:为适配大规模网络,OSPF将一个自治系统AS再划分为多个==区域==,限制洪泛范围,减少通信量,但OSPF更复杂了
- ==主干==区域连接若干区域
- 主干路由器:主干区域内的路由器,包含边缘
- 区域内路由器:只在区域内,不连接主干路由器
- 区域边界路由器:属于主干路由器,与其他区域连接
链路建立和维护
-
问候(hello)
- 建立邻居表
- 发送周期10s,若40s未收到某方hello则视为其已经不可达
-
链路状态更新分组(LSU)
-
链路状态通告(LSA):直连网络 + 邻居路由器的链路状态信息
-
==可靠==的洪泛发送
可靠:需要收到的路由器发送==链路状态确认==报文
洪泛:向所有相邻路由器发送,它们收到后继续转发给相邻
-
-
链路状态数据库(LSDB)
- 每一个路由器都存储,记录链路状态通告(LSA)
- 通过洪泛使得网络中所有LSDB一致
报文类型

基本工作流程

BGP协议
EGP:与RIP、OSPF内部网关协议(IGP)相对的外部网关协议
- 连接多个AS的协议
- 非选择最佳,只求能比较好的到达

V.IP多播
基本概念

- 一对多
- 多端口转发
- IPv4中使用D类多播地址:1110****.*.*.*
- ==224==.0.0.0 ~ ==239==.255.255.255
- 一个D类地址代表一个多播组
!局域网硬件多播
解决本地局域网内多播数据包分发问题
- IPv4地址映射多播MAC地址
因特网多播
解决多播组设备寻址问题
IGMP
多播路由器运行IGMP,监视本局域网内多播组成员变化
- 路由器不知道多播组成员数量和网络分布情况
- IGMP报文类型
- 成员报告报文:设备->多播路由器,加入
- 成员查询报文:多播路由器->设备,是否存活
- 离开组报文:设备->多播路由器,直接退出
多播路由选择协议
- 目标:为每个多播组建立多播转发树,使报文只转发一次
- IP多播组沿多播转发树洪泛,能传到所有拥有多播成员的多播路由器
- 多播路由器再进行硬件多播
VI.移动IP
-
原因:移动设备在某个网络下获得了IP地址
-
设备在移动状态下需要在不同网域下使用网络
- 正在提供服务的服务器也需要定位到此设备,移动设备IP不能改变
-
-
解决方法:代理
- 设备在归属地获得永久(归属)地址,上级路由称为归属代理
- 设备移动到其他网络下
- 设备使用代理发现协议,在外地网络注册,并提供永久地址和归属代理地址
- 外地代理通过以上信息与归属地代理建立IP隧道
- 归属地代理==接收==到数据后,转发给外地代理,外地代理转发给移动设备
- 移动主机==发送==数据时,交给外地代理直接转发,不需要送给归属代理
第五章 传输层
I.概述
物理层+数据链路层+网络层 -> 主机到主机通信
传输层 -> 进程到进程通信
端口号
区分计算机类进程的数据报文
同设备内一个端口只能建立一个连接
- 长度:2B
- 范围:0 ~ 65535(
2^{16}-1 ) - 分类
- 熟知端口:0~1023
- 登记端口:1024~49151
- 临时端口:49152~65535
复用分用
-
复用
- TCP/UDP 复用:理解为应用报文打包
- IP复用:传输层报文打包为IP报文
- 分用:理解为解包并分流到各自应用进程

II.UDP
无连接不可靠,不使用流量控制和拥塞控制
检查到错包就丢弃
支持广播、多播、单播
伪首部序号为17
UDP首部
源端口 | 目的端口 | 长度 | 校验和 |
---|---|---|---|
2B | 2B | 2B | 2B |
- 源端口:可选,不需要时全0
- 目的端口:
- 长度:首部+数据,最小8(首部长度)
- 校验和:需要加上12B伪首部
III.TCP
面向连接 可靠
对==报文段==进行确认
面向字节流
伪首部中序号为6
TCP首部

- 序号:32b,代表本报文段第一个字节序号
- 确认号:32b,指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号
- 数据偏移:4b,数据报长度,单位4B
- 保留:6b,无用置0
- 短状态:1有效
- URG:紧急报文,首先传送
- ACK:为1则确认字段有效
- PSH:尽快交付,不保留在缓冲区
- RST:复位,释放连接再重新连接
- SYN
- 连接请求报文:SYN=1,ACK=0
- 连接确认报文:SYN=1,ACK=1
- FIN:终止位,代表要求释放连接
- 窗口:16b,代表接收方所允许的对方发送的数据量(rnwd)
- 校验和:12b,伪首部+首部+数据载荷计算反码算数运算求和
- 紧急指针:16b,URG=1时才有效,指明紧急数据的长度,单位1B
建立连接
三次挥手

- 第一次:SYN=1,ACK=0,==SYN占用一个序号==
- 第二次:SYN=1,ACK=1,==SYN占用一个序号==
- 第三次:ACK=1,可带可不带数据,不带数据则不占用序号
[!TIP]
- 采用“三报文握手”而不是“两报文握手”来建立TCP连接,是为了防止已失效的TCP连接请求报文段突然又传送到了TCP服务器进程,因而导致错误。
- 左边:
- CLOSED
- SYN-SENT
- ESTABLISHED
- 右边:
- CLOSED
- LISTEN
- SYN-RCVD
- ESTABLISHED
四次挥手
- 第一次:FIN=1,ACK=1,==FIN占用一个序号==
- 第二次:ACK=1,继续传送数据
- 第三次:FIN=1,ACK=1,数据传送完,使用FIN表示准备断开
- 第四次:ACK=1,对方收到后断开,己方等待2MSL
[!TIP]
- 等待2MSL是防止第四次丢失,导致对面无法关闭
- 左边:
- ESTABLISHED
- FIN-WAIT1
- FIN-WAIT2
- TIME-WAIT
- CLOSED
- 右边:
- ESTABLISHED
- CLOSE-WAIT
- LAST-ACK
- CLOSED
流量控制
- 接收窗口(rwnd):发送方维持,代表缓冲区能接受的容量
- 实现端到端的流量控制(两个进程直接),数据链路层是节点之间的流量控制
滑动窗口+持续计时器
拥塞控制
种类
开环控制:初始即设计好一切情况
- 闭环控制:引入反馈,边监测边调整
拥塞窗口(cwnd):发送方的窗口大小
- 发送上限 = min[cwnd, rwnd]
慢开始
-
拥塞窗口cwnd从1开始,每经过一次确认(时隔1TTL)后乘2
- 慢开始门限(ssthresh):到达限制后cwnd进入拥塞避免
拥塞避免
- cwnd到达ssthresh后,每次加一
- 直到发生超时(拥塞)或者收到三次确认报文,进入下一种调整模式
快重传
- 报文丢失(非拥塞状态)
- 接受方发送三次确认报文冗余ACK
- 发送方立即重传对方所需报文段
快恢复
收到==三次确认报文==后进行
- ssthresh调为当前cwnd一半
- cwnd调为当前一半
- 进入拥塞避免
第六章 应用层
I.网络应用模型
C/S模型
- 服务器:总是打开,提供服务,面向任务
- 客户机:请求服务,面向用户
- 特点:
- 体系内计算机地位不平等
- 客户机间不直接通信
- 可扩展性不佳
P2P模型
- 对等方(Peer):任意一对计算机,直接相互通信
- 可扩展性好
- 网络健壮性好
II.动态主机配置协议(DHCP)
动态分配地址
基于UDP,主机端口68,服务器67
!工作流程
- 客户端加入:客户端广播DHCP发现,源地址全0,目的地址全1
- 服务器接手:DHCP服务器收到后,广播DHCP提供,源地址服务器地址,目的地址全1
- 客户端接受此服务器,广播DHCP请求,源地址全0,目的地址全1
- 服务器广播DHCP确认,分配IP地址,源地址服务器地址,目的地址全1
报文
种类 | 目的 | 源IP | 目的IP |
---|---|---|---|
DHCP发现 | 客户端寻找DHCP服务器 | 0.0.0.0 | 255.255.255.255 |
DHCP提供 | DHCP服务器确认给此客户端提供服务 | 服务器地址 | 255.255.255.255 |
DHCP请求 | 客户端要求分配IP | 0.0.0.0 | 255.255.255.255 |
DHCP确认 | 服务器分配IP | 服务器地址 | 255.255.255.255 |
III.域名系统(DNS)
命名系统,方便记忆
基于UDP协议,53号端口
域名服务器
- 根域名服务器:被所有本地域名服务器所知
- 顶级域名服务器:com、cn、site等
- 权限域名服务器
- 本地域名服务器
解析过程
-
递归查询
- 本地主机向本地域名服务器查询
- 本地域名服务器向根域名服务器查询
- 根域名服务器向顶级域名服务器查询
- ···
- 主机->本地->==根域名==->顶级域名->权限域名
- 根域名负载大 ,基本不用
- 主机和本地域名服务器之间只使用递归查询
-
迭代查询
- 本地主机向本地域名服务器查询
- 本地域名服务器:
- 向根域名服务器查询
- 向顶级域名服务器查询
- 向权限域名服务器查询
- 本地域名服务器向主机返回结果
IV.文件传输系统(FTP)
交互式访问,允许用户指明==文件类型和格式==
控制连接:端口21,TCP
数据连接:端口20,TCP
会话过程,服务器保留用户状态信息,追踪用户在远程目录树位置
控制连接
- 传输控制信息
- 会话期间保持打开
数据连接
- 接收到文件传输请求后,创建数据传送进程和数据连接
- 传送完毕后关闭
- 模式
- 主动模式PORT:客户端发送PORT命令和==客户端随机开放端口号
x ==,服务器通过20与x 连接 - 被动模式PASV:客户端发送PASV命令,==服务器在本地开放随机端口
y ==,告知客户端 - 选择权都在客户端上
- 主动模式PORT:客户端发送PORT命令和==客户端随机开放端口号
网络文件系统NFS
- FTP:修改服务器上文件,先==全部==下载到本地,修改完再传回
- NFS:远程打开文件,在文件特定位置读写修改
V.电子邮件(Email)
组成结构
- 用户代理UA:程序,如QQ邮箱、Outlook软件
- 邮件服务器:用于发送、接收邮件
- 邮件发送和读取协议:存取协议

- 现状:用户通过浏览器使用HTTP协议发送邮件,SMTP只在服务器之间
邮件格式和MIME
格式
-
信封:从内容自动提取目的人和标题
- 内容
- 首部
- FROM
- To
- Subject
- 主体内容
MIME
由于SMTP只能传输7位ASCII码文件,需要MIME进行内容扩展,可以讲图片音视频等转换为7位ASCII,并读取恢复
!发送协议IMAP
SMTP==服务器==端口号:25
-
连接建立
- 发送方SMTP服务器(客户端)与接收方SMTP服务器建立TCP连接
- 接收方服务器发出220服务就绪
- 客户端发送HELLO+客户端主机名
- 接收方发送250 OK
-
邮件发送
- 客户端发送MAIL FROM+主机名
- 接收方服务器准备好则发送250 OK
- 客户端发送RCPT TO+收件人地址
- 接收方服务器准备好则发送250 OK
- 客户端发送DATA命令
- 接收方服务器准备好则发送250 OK
- 客户端发邮件内容,
. 代表结束 - 接收方服务器准备好则发送250 OK
- 客户端发送QUIT
- 接受方服务器发送221,==主动断开==
接收协议POP3和IMAP
- POP3
- TCP,端口110
- 工作方式
- 下载并保留:主机下载完邮件保留在SMTP服务器上
- 下载并删除:主机下载完邮件删除SMTP服务器的文件
- IMAP
- 允许用户创建文件夹,并移动位置
- 允许用户只获取邮件部分报文
VI.万维网WWW
URL
-
统一资源定位符
-
<协议>://<域名(或IP)>:<端口>/<路径>
[!TIP]
当浏览器输入URL开始访问(无缓存):
- 主机向本地域名服务器发出DNS查询
- 本地域名服务器
- 向根域名服务器查询
- 向顶级域名服务器查询
- 向权限域名服务器查询
- 本地域名服务器将结果IP返回主机
- 主机发起TCP连接请求,三次握手后建立连接
- 主机发出HTTP请求
- 服务器处理请求,返回HTTP报文
- 主机收到报文后进行处理
- 传输结束,四次挥手结束TCP连接
HTTP
无连接,TCP确保可靠连接
无状态,引入Cookie后实现了有状态
-
Cookie
- 网站服务器为用户生成Cookie识别码,在服务器中存储用户信息
- 网站服务器发送给用户的响应报文中有"Set cookie: ****"
- 用户在自己的Cookie文件中存储此信息
- 用户下次访问时,在请求报文中添加Cookie值
- 服务器识别后提供个性化服务
-
非持续连接 HTTP1.0:==每个元素==传输都建立一次TCP连接,*2TTL开销**
-
持续连接 HTTP1.1:建立一次TCP连接后保持,主机发出请求,服务器发送文件
-
非流水线:一次请求,一个文件
- 流水线:可连续发送请求(可视为一次),服务器连续发送多个文件
[!WARNING]
!发送大文件时,需要注意TCP窗口大小(遵循慢启动)
-
-
报文结构
Comments | NOTHING