admin 管理员组

文章数量: 887629

1 概论

1.1 网络拓扑结构

总线形: 所有主机用单根总线连接; 建网容易, 增减节点方便, 节省线路; 重负载时通信效率不高, 任意一处对故障敏感.
星形: 每个主机单独线路与中央设备相连; 中央设备一般为交换机或路由器; 便于集中控制和管理; 成本高, 中央设备对故障敏感.
环形: 所有主机接口连接成环, 环中信号单向传输; 令牌环局域网.
网状: 每个结点至少有两条路径与其他结点相连; 可靠性高; 控制复杂, 线路成本高; 多用于广域网.

1.2 数据交换方式

电路交换: 进行数据传输前两个结点间必须建立一条双方独占的物理通信路径; 连接建立 → \to 数据传输 → \to 连接释放.
优点: 通信时延小, 线路专用, 数据直达; 有序传输; 没有冲突; 适用范围广; 实时性强; 控制简单.
缺点: 建立连接时间长; 线路利用率低; 灵活性差; 难以规格化; 难以实现差错控制.

报文交换: 用户数据加上源地址和目的地址后封装成报文; 到达节点时全部存储后查找转发表转发到下一个结点.
优点: 无须建立连接, 更适合突发传输; 动态分配线路; 线路可靠性高; 线路利用率高; 提供多目标服务.
缺点: 转发时延高; 缓存开销大; 出错时全部丢弃重传, 差错处理低效.

分组交换: 源节点发送前将较长报文划分为若干较小等长数据段, 添加必要控制信息组成首部, 构成分组; 存储转发.
优点: 无须建立连接; 线路利用率高; 简化了存储管理; 加速传输, 流水线式; 减小出错概率和重发数据量.
缺点: 存在转发时延; 需要传输额外的信息量; 提供不可靠服务, 可靠性由上层保障.

1.3 网络服务

无连接服务: 不建立连接直接传输.
面向连接服务: 传输前建立连接; 连接建立 → \to 数据传输 → \to 连接释放.

不可靠服务: 尽力而为, 有差错, 有丢失, 有重复, 乱序.
可靠服务: 无差错, 不丢失, 不重复, 有序.

无应答服务: 接收方收到数据后不自动给出应答.
有应答服务: 接收方收到数据后给出肯定应答或否定应答.

数据报服务: 提供无连接不可靠服务.
虚电路服务: 提供面向连接可靠服务; 流量控制, 发送方不会淹没接收方; 拥塞控制, 网络拥塞时发送方降低发送速率.

1.4 网络应用模型

C/S(客户/服务器): 服务器处于接收请求状态 → \to 客户端发出服务请求 → \to 服务器收到请求进行处理, 将结果回送客户端.
特点: 网络中计算机低位不平等, 客户端是服务请求方, 服务器是服务提供方; 客户端之间不直接通信, 需要经过服务器; 可扩展性不佳, 受到服务器硬件和网络带宽限制.

P2P(对等方): 任意一对计算机间可直接相互通信; 每个结点既可以访问其他结点资源, 又提供资源给其他结点.
特点: 减轻服务器压力, 消除对特定服务器依赖, 提高系统利用效率和资源利用率; 多主机间可直接共享文件; 可扩展性好; 网络健壮性强; 在获取服务时还需提供服务, 占用较多内存, 影响主机性能.

1.5 网络性能指标

速率: 数据传输速率, 比特率 (bps); k = 1 0 3 =10^3 =103, M = 1 0 6 =10^6 =106, G= 1 0 9 10^9 109.
带宽: 信道允许通过的信号频率范围 (Hz); 最高数据传输速率 (bps).
吞吐量: 通过信道的实际数据量 (bps); 信道利用率 × \times × 带宽 = = = 周期内实际传输数据量 / / / 传输周期.

发送时延: 传输时延, 结点讲分组推向链路所需的时间; 分组长度 / / /发送速率.
传播时延: 电磁波在传输介质中传播所需的时间; 物理距离 / / /电磁波速度.
处理时延: 数据在交换结点为存储转发进行处理所需的时间(分析首部, 提取数据, 差错检验, 查路由表).
排队时延: 路由器输入队列中排队等待处理, 确定转发端口后再输出队列中排队等待转发.
总时延: 发送时延 + + +传播时延 + + +处理时延 + + +排队时延.
时延带宽积: 发送端第一个比特到达终点时已经发出的比特数, 以比特为单位的链路长度; 传播时延 × \times ×信道带宽.
信道利用率: 有数据通过时间 / / /总时间; D = D 0 1 − U D=\frac{D_0}{1-U} D=1UD0, D 0 D_0 D0 为信道空闲时总时延, D D D 为信道利用率为 U U U 时的总时延; 信道利用率接近于 1 1 1 时总时延趋于无穷大.

RTT(往返时间): 发送端发出短分组, 到发送端接收到来自接收端的确认总经历时间.

1.6 网络分层与网络协议

网络分层: 每层通过接口利用下层提供的服务向上层提供更高级的服务; 即第 n − 1 n-1 n1 层实体实现的服务为第 n n n 层用于向第 n − 1 n-1 n1 层提供服务.
分层原则: 每层实现相对独立功能, 降低系统复杂度; 层间接口自然清晰, 易于理解, 交互内容尽可能少; 各层功能精确定义独立于具体实现, 可采用最合适的技术实现; 应能促进标准化工作.

对等层实体: 同一层的任何可以发送或接收信息的软硬件进程.
协议: 对等层实体间进行通信规则的集合, 水平的; 语法(数据与控制信息格式), 语义(发出何种控制信息, 完成何种动作, 做出何种应答), 同步(操作条件, 时序关系).
n n n-PCI(协议控制信息; Header 首部) + n +n +n-SDU(服务数据单元) = n =n =n-PDU(协议数据单元) = ( n − 1 ) =(n-1) =(n1)-SDU.

SAP(服务访问点): 同一结点内相邻两层实体交换信息的逻辑接口.
服务原语: 上层使用下层提供的服务时的命令集合, 垂直的; 请求(Request), 指示(Indication), 响应(Response), 证实(Confirmation).
n n n-ICI(接口控制信息) + n +n +n-SDU = ( n + 1 ) =(n+1) =(n+1)-IDU(接口数据单元).

1.7 网络参考模型

OSI功能传输单位协议
物理层数据终端设备(DTE)和数据通信设备(DCE)的
物理与逻辑连接方法
比特
(bit)
EIA-232C,EIA/TIA RS-449,
CCITT, X.21
链路层逻辑上可靠(无差错)的链路; 介质访问子层,
广播网络控制对共享信道的访问

(frame)
SDLC, HDLC, PPP, STP,
帧中继
网络层通信子网的运行控制, 路由选择; 点到点的
流量控制, 拥塞控制, 差错控制, 网际互连
分组/数据报
(packet)
IP, IPX, ICMP, IGMP, ARP,
PARP, OSPF
运输层端到端的可靠传输服务, 流量控制, 差错控制,
服务质量, 数据传输, 复用分用
报文段
(segment)
TCP, UDP, RIP
会话层为实体建立连接实现有序传输, 建立同步(SYN);
建立, 管理, 终止进程间会话; 检查点机制维持
可靠对话
报文
(message)
-
表示层处理交换信息的表示方式, 标准编码形式;
数据压缩, 加密解密
报文
(message)
-
应用层为特定类型网络应用提供网络访问手段报文
(message)
DHCP, BGP, DNS, HTTP,
FTP, SMTP, POP3

TCP/IP: 网络接口层(物理层 + + + 链路层); 网际层(网络层); 传输层(运输层); 应用层(会话层 + + + 表示层 + + + 应用层).
IP 是核心协议: everything over IP; IP over everything.

相似: ①均采用分层结构, 分层功能存在对应关系; ②均基于独立的协议栈概念; ③均可解决异构网络互连.
区别: ①OSI 定义了服务, 协议, 接口; ②OSI 7层, TCP/IP 4层; ③OSI 先有模型后有协议规范, 通用性良好; TCP/IP 先有协议栈后建立模型, 不适合非 TCP/IP 网络; ④ OSI 网际层支持无连接和面向连接服务, 运输层仅支持面向连接服务; TCP/IP 网际层不提供可靠服务, 可靠性是端到端的问题, 传输层支持无连接和面向连接服务.

1.8 网络设备

冲突域: 连接到同一物理介质上所有结点的集合, 结点间存在介质争用现象.
广播域: 接收到同样广播消息的结点的集合.

中继器: 物理层扩展网络; 整形放大并转发信号, 以消除信号经过长段电缆后产生的失真和衰减, 信号再生而非简单放大; 两端为网段而非子网, 仍属于同一局域网; 不能连接速率不同的局域网; 不隔离冲突域和广播域.
5-4-3 原则: 互相串联的中继器不能超过 4 个, 串联的 5 段通信介质中只有 3 段可以挂接主机.
集线器(Hub): 多端口中继器, 一个时钟周期内只能传输一组信息, 否则会导致冲突; 信息传输方向固定, 标准的共享式设备; 组网灵活, 将所有结点的通信集中在以其为中心的结点上; 组成网络为共享式网络, 但逻辑上仍为总线网; 每个端口连接同一网络的不同网段; 仅支持半双工, 网络吞吐率受限; 不隔离冲突域和广播域.

网桥: 链路层扩展以太网; 识别帧并转发或丢弃帧, 各个网段相对独立; 隔离冲突域, 不隔离广播域.
二层交换机: 多接口网桥, 将网络分成小的冲突域, 为每个用户提供更大的带宽; 即插即用, 帧转发表自学习形成; 交换速率较高; 独占传输介质带宽; 隔离冲突域, 不隔离广播域.
连接主机或其他交换机: 全双工, 同时连通多对接口, 每对相互通信的主机可独占带宽, 无冲突传输.
连接集线器: 只能使用 CSMA/CD, 半双工.
直接交换: 只检查帧的目的 MAC 地址直接转发; 交换时延很小, 但有差错.
存储转发交换: 先将帧缓存检查, 发现错误时丢弃; 可靠性高, 但时延较大.
交换表: <MAC 地址: 物理端口>; 过滤, 即决定丢弃或转发.
自学习: 记录传入帧的 MAC 地址和物理端口, 交换表中不存在目的 MAC 地址时广播.

路由器: 物理层, 链路层, 网络层扩展网络; 连接异构网络完成分组转发; 控制平面实现路由选择, 数据平面实现分组转发(交换结构/组织, 输入端口, 输出端口); 隔离广播域.
三层交换机: 加快大型局域网内数据交换, 局域网内不同网段互通; 没有路由表, 只有转发表; ASIC 芯片硬件转发, 一次路由, 多次转发; 隔离冲突域, 不隔离广播域.

2 物理层

2.1 传输介质

导向传播介质: 电磁波被导向为沿着固体介质传播; 有线.
非导向传播介质: 电磁波在自由空间中传播; 无线.

有线对称电缆(双绞线)同轴电缆光纤
组成每对铜线呈纽绞状, 以减小线对相互干扰同轴的两个导体, 内芯为金属导线,
外导体为金属编织网
纤芯和包层
优点便宜抗电磁干扰能力强, 带宽更宽, 速率更高带宽大, 容量大; 衰减小, 距离远; 抗电磁干扰, 质量好,
防窃听, 耐腐蚀; 体积小, 重量轻, 环保
缺点传输衰减大, 传输距离短; 邻道间有串话干扰成本较高易碎, 接口昂贵, 安装维护成本
分类UTP (非屏蔽), STP(屏蔽; 外层金属丝);
模拟(放大器), 数字(中继器)
基带 (50 Ω \Omega Ω 数字);
带宽 (75 Ω \Omega Ω 模拟)
阶跃型, 梯度型;
单模(直径小; 远距离), 多模(发光二极管; 近距离)
应用电话网, 局域网局域网主干线路

无线电波: 较强穿透能力, 所有方向散播, 传输距离远; 无线手机通信, WLAN.
红外线和激光: 沿直线传播, 需要将传输信号分别转换为各自信号格式.
微波: 很强方向性, 沿直线传播; 地面传播距离有限, 需要中继站接力; 频率较高, 频段范围较宽 2-40GHz, 信道容量大.
卫星: 可作为中继转发微波; 信道容量大, 距离远, 覆盖广; 保密性差, 端到端传播时延长.

2.2 接口特性

机械特性: 接口所用的接线器的形状和尺寸, 引脚数目和排列, 固定和锁定装置.
电气特性: 接口电缆的各条线上的电压范围, 传输速率, 距离限制.
功能特性: 某条线上出现某一电平的电压意义, 每条线的功能.
过程特性(规程特性): 对不同功能的各种可能事件的出现顺序.

2.3 数字通信

信息量: I ( x ) = − log ⁡ p ( x ) I(x)=-\log p(x) I(x)=logp(x); 底 2 2 2 为比特(bit), e e e 为奈特(nat), 10 10 10 为哈特莱(Hartley).
信息熵(平均信息量): H ( X ) = − ∫ − ∞ + ∞ f ( x ) log ⁡ f ( x ) d x H(X)=-\int_{-\infty}^{+\infty}f(x)\log f(x)\mathrm{d}x H(X)=+f(x)logf(x)dx.
传输速率: 波特率(码元) R B = 1 T B R_B=\frac{1}{T_B} RB=TB1 (Baud); 比特率(信息) R b = R B H R_b=R_BH Rb=RBH ( M M M 进制等概率时) = R B log ⁡ M =R_B\log M =RBlogM (bps).

数字通信: 信源 → \to 信源编码(压缩+数字化) → \to 加密 → \to 信道编码(差错控制+信道复用) → \to 数字调制(低频到高频) → \to 信道(噪声+干扰) → \to 数字解调(高频到低频) → \to 信道译码(最佳接收) → \to 解密 → \to 信源译码 → \to 信宿; 同步.
交互方式: 单向; 半双工; 双工.
基带传输: 数字信号不经过调制直接在信道上传输; 用于相邻设备和近距离传输, 局域网.
频带传输: 用数字信号对特定频率载波调制后变为适合传送的信号后传输; 远距离传输.
宽带传输: 借助频带传输将链路分为多个信道, 每个信道可携带不同的信号.

数字化: 模拟信号转换为数字信号.
采样定理(奈奎斯特): 数字化是, 采样率必须大于等于原始信号频率的 2 2 2 倍, 才能保证采样后完整保留原模拟信号的信息.
采样: 对模拟信号周期性扫描, 将时间上连续的信号变为时间上离散的信号.
量化: 将采样后电平幅度值按照一定分级标度转化为对应的数值并取整, 将连续的电平幅值转换为离散的数字量.
编码: 将量化后离散整数转换为对应的二进制编码.

调制: 将信号搭载到载波参数上.
调幅(AM)/幅移键控(ASK): 改变载波幅度; 容易实现, 但抗干扰能力差.
调频(FM)/频移键控(FSK): 改变载波频率; 容易实现, 抗干扰能力强.
调相(PM)/相移键控(PSK): 改变载波相位; 绝对调相.
正交幅度调制(QAM): 频率相同情况下结合 AM 与 PM 形成叠加信号; 数据传输速率 R = B log ⁡ 2 m n R=B\log_2{mn} R=Blog2mn, B B B 为波特率, m m m 个相位, 每个相位 n n n 个振幅.

2.4 通信定理

奈奎斯特定理: 理想低通信道下极限码元传输速率为 2 W 2W 2W (Boud, 波特); 极限数据传输速率为 2 W log ⁡ 2 V 2W\log_2 V 2Wlog2V (bps), W W W 为带宽 (Hz), V V V 为离散码元电平数 (种数).
传输速率超过上限会导致码间串扰; 频带越宽速率越高.

香农定理: 带高斯噪声信道的极限数据传输速率 (信道容量) 为 W log ⁡ 2 ( 1 + S / N ) W\log_2(1+S/N) Wlog2(1+S/N), S S S 为信息平均功率, N N N 为噪声平均功率, 信噪比 10 log ⁡ 10 ( S / N ) 10\log_{10}(S/N) 10log10(S/N) (dB).
信噪比越大, 带宽越大, 信道容量越大; 给定信噪比和带宽, 信道容量一定; 信息传输速率低于信道容量, 则一定存在无差错传输方法; 信息传输速率超过信道容量, 则无法实现无损传输.

2.5 数字编码

不归零(NRZ): 高电平表示 “1”, 低电平表示 “0”; 编码效率高, 但存在同步问题.
归零(RZ): 高电平表示 “1”, 低电平表示 “0”, 码间跳变到零电平; 自同步, 但归零占用带宽.
反向不归零(NRZI): 电平跳变表示 “1”, 电平不变表示 “0”; 传输时钟信号, 尽量不损失带宽.
曼彻斯特编码: 码间电平跳变同时作为时钟信号和数据信号, 码内向上跳表表示 “1”, 向下跳变表示 “0”; 编码速率是码元速率 2 2 2 倍, 频带宽度为基带宽度 2 2 2 倍.
差分曼彻斯特编码: 码内电平跳变仅表示时钟信号, 码间无跳变表示 “1”, 有跳变表示 “0”.

2.6 信道划分

频分复用(FDM): 将信道总频带划分为多个子频带; 为防止子信道互相干扰, 相邻信道间加入隔离频带.
时分复用(TDM): 信道传输时间划分为等长时间片, 每个用户占用固定序号的时隙.
统计时分复用(STDM): 按需动态分配时隙.
波分复用(WDM): 光的频分复用, 波长不同的光信号; 光波频谱频段较高, 带宽较大.

码分复用(CDM): 采用不同编码区分各路原始信号; 既共享频率, 也共享时间; 频谱利用率高, 抗干扰能力强, 保密性强, 成本低.
发送比特 “1” 时发送正码片序列, 发送比特 “0” 时发送反码片序列, 码片中 0 0 0 写为 − 1 -1 1; 不同站码片相互正交(规格化内积 1 n ∑ i = 1 n s i t i \frac{1}{n}\sum_{i=1}^ns_it_i n1i=1nsiti=0), 同站正码片规格化内积为 1 1 1, 同站正反码片规格化内积为 − 1 -1 1.
编码: 线性相加.
解码: 与本站码片做规格化内积; − 1 -1 1 表示比特 0, 1 1 1 表示比特 1.

3 链路层

3.1 差错控制

ARQ(自动重传请求): 接收方检测到差错时通知发送方重发.
FEC(前向纠错): 接收方能够发现差错并确定差错位置加以纠正.

奇偶校验: n − 1 n-1 n1 位数据位和 1 1 1 位检验位; n n n 位中 “1” 的个数为奇数(偶数)时为 1 1 1; 只能检测奇数位翻转情况.

CRC(循环冗余校验码): 待发送数据可视为 G F ( 2 ) [ x ] GF(2)[x] GF(2)[x] n n n 阶多项式 F ( x ) F(x) F(x); 双方约定 r ( < n ) r(<n) r(<n) 阶生成多项式 G ( x ) G(x) G(x).
编码: x r F ( x ) + [ x r F ( x )   ( m o d ) G ( x ) ] x^rF(x)+[x^rF(x)\ ({\rm mod}) G(x)] xrF(x)+[xrF(x) (mod)G(x)]; 即尾部添加 r r r 位 FCS(帧检验序列).
检验: G ( x )   ∣   M ( x ) G(x)\ | \ M(x) G(x)  M(x) 时可认为无差错, M ( x ) M(x) M(x) 为接收的 n + r n+r n+r 位多项式.

码距: 两个码字异或后 “1” 的个数.
海明码: 纠错 1 1 1 位翻转, 检验 2 2 2 位翻转, 码距为 3 3 3.
编码: n n n 位信息 D i D_i Di, k k k 位检验 P i P_i Pi, n + k ≤ 2 k − 1 n+k\leq 2^k-1 n+k2k1; 检验位位于编码后低位开始的 2 i − 1 2^{i-1} 2i1 位上; P i = ⨁ H j P_i=\bigoplus H_j Pi=Hj, j ≠ 2 i − 1 j\ne 2^{i-1} j=2i1 j j j 二进制中 i i i 位上为 “1”.
纠错: S i = P i ⊕ ( ⨁ H j ) S_i=P_i\oplus(\bigoplus H_j) Si=Pi(Hj); 翻转位为 ∑ 2 i − 1 S i \sum 2^{i-1}S_i 2i1Si, 取 0 0 0 时可认为无差错.

3.2 流量控制

可靠传输(ARQ实现): 确保发送方发送的数据都被接收放正确接收; 接收方正确收到数据帧时发回确认帧; 发送方发送数据帧后启动计时器, 规定时间内没有收到确认帧就则重发数据帧, 直至收到确认帧.

流量控制: 由接收方控制发送方的发送速率, 防止发送方发送过快淹没接收方.
超时计时器: 通常为加权平均的 RTT.
滑动窗口: 发送方维护一组连续的允许发送帧窗口即发送窗口 W T W_T WT, 接收方维护接收窗口 W R W_R WR, 发送方收到接收方确认帧时窗口才向前滑动; 采用 n n n 比特编号, W T + W A ≤ 2 n W_T+W_A\leq 2^n WT+WA2n, 否则接收方无法区分新旧数据帧.
信道利用率: U = max ⁡ { W T T D T D + R T T + T A , 1 } U=\max\{\frac{W_TT_D}{T_D+{\rm RTT}+T_A},1\} U=max{TD+RTT+TAWTTD,1}, T D T_D TD 为发送方数据帧发送时延, T A T_A TA 为接收方确认帧发送时延.

S-W(停止等待): W T = W R = 1 W_T=W_R=1 WT=WR=1; 确认帧交替使用 ACK0 和 ACK1; 双方为超时重传和判定重复帧均设置帧缓冲区; 发送方收到确认帧时清除缓冲区; 接收方收到下一帧时清楚缓冲区; RTT 大于 T D T_D TD 时信道利用率很低.

GBN(后退N帧): 1 < W T ≤ 2 n − 1 1<W_T\leq 2^n-1 1<WT2n1, W R = 1 W_R=1 WR=1; 接收方累积确认, ACKi 表示 i 号帧及之前均确认收到, 期待收到 i+1(可能为 0)号帧, 接收方需要重传 i 号帧后的所有帧; 信道误差率较高时不一定优于 S-W.

SR(选择重传): 1 < W R ≤ W T 1<W_R\leq W_T 1<WRWT, 通常 W R = W T W_R=W_T WR=WT; 接收方逐一确认, 确认收到 i 号帧时发送 ACKi, 缺失时发送否定帧 NAKi, 发送方只重传否定帧; 接收方加大缓冲区, 所缺数据帧收齐后一并送交上层.

3.3 随机介质访问控制

随机介质访问控制: 总线形网络中多个用户同时发送信息会产生帧冲突(碰撞), 竞争胜利者获得信道(暂时独占信道); 即将广播信道转换为临时的点到点信道.

ALOHA: 所有用户不进行任何检测就发送数据, 超过设定时间未收到确认即认为发生冲突并一段时间后重传, 直至收到确认; 吞吐量很低.
SALOHA: 同步用户时间并将时间划分为等长的时隙(Slot), 规定只有在每个时隙开始时才能发送帧, 发送一帧时间必须小于时隙; 避免随意性发送, 降低冲突可能性, 提高信道利用.

CSMA/CD: 冲突检测; 仅支持半双工.
争用期: 2 τ 2\tau 2τ, τ \tau τ 为传播时延; 每个站在发送数据后的一小段时间内存在发生冲突的可能性, 经过争用期后还未检测到冲突则才能确定继续发送不会发生冲突.
最短帧长: 争用期内可发送的数据长度; 时延带宽积 × 2 \times 2 ×2; 争用期内检测到冲突则停止发送, 已发送数据必然小于最短帧长, 故所有小于最短帧长的数据帧一定是因冲突而异常中止的无效帧; 若发送数据帧小于最短帧长则填充至最短帧长.
BEB(二进制指数回退): 争用期检测到冲突发送失败重传时; ①确定基本退避时间(时隙)为 2 τ 2\tau 2τ; ②第 i ≤ 16 i\leq 16 i16 次重传时, k = min ⁡ { i , 10 } k=\min\{i,10\} k=min{i,10}, 随机选取 r ∈ { 0 , 1 , . . . , 2 k − 1 − 1 } r\in\{0,1,...,2^{k-1}-1\} r{0,1,...,2k11}, 确定退避时间为 2 r τ 2r\tau 2rτ; ③重传 16 次时仍不成功说明网络太拥挤, 向上层报错.
1-坚持: 信道空闲时立即发送数据; 信道忙时坚持监听.
非坚持: 信道空闲时立即发送数据; 信道忙时放弃监听, 等待随机时间后再监听.
p-坚持: 信道空闲时 p p p 概率发送数据; 信道忙时坚持监听.

CSMA/CA: 接收信号强度远小于发送信号强度, 无线信号强度动态变化范围大, 冲突检测实现困难; 冲突避免; 采用 ARQ 中的 S-W.
屏蔽站问题: 站 A 和站 B 都在 AP 覆盖范围内, 但站 A 和站 B 彼此听不见对方, 同时检测到信道空闲向 AP 发送数据导致冲突发生.
帧间间隔(IFS): 完成发送后必须等待一段时间才能发送下一帧.
SIFS: 最短; 用来分隔属于一次对话的帧; ACK 帧, CTS 帧, 分片后数据帧, 回答 AP 探询的帧.
PIFS: 中等; 用于 PCF(点协调).
DIFS: 最长; 用于 DCF(分布式协调); 异步帧竞争访问时延.
虚拟载波监听: 将发送站占用信道时间广播给其他站; 其他站由此设置 NAV(网络分配向量), 即信道忙的持续时间.
暴露站问题: 站 A 向站 B 发送, 站 C 向站 D 发送, 但站 C 在站 B 广播范围内, 站 B 广播占用信道时让站 C 误以为向站 D 的信道忙而停止发送.
信道预约: ①发送站监听到信道空闲时等待 DIFS 后广播 RTS(请求发送)帧 (源地址, 目标地址, 持续时间 = = =SIFS + + +CTS 帧时延 + + +SIFS + + +数据帧时延 + + +SIFC + + +ACK 帧时延); ②AP 正确收到 RTS 帧后监听到信道空闲时等待 SIFS 后回发 CTS(允许发送)帧 (持续时间 = = =SIFS + + +数据帧时延 + + +SIFC + + +ACK 帧时延); ③发送站正确收到 CTS 帧后等待 SIFS 后发送数据帧; ④AP 站正确收到数据帧后等待 SIFS 后发回 ACK 帧.
BEB: 发送第一帧检测到信道忙时, 成功发送后发送下一帧时, 超时重传时; ①确定基本退避时间 t t t, 即其他站能检测到信道忙的最短时间; ②第 i i i 次退避时, k = min ⁡ { i , 6 } k=\min\{i,6\} k=min{i,6}, 随机选取 r ∈ { 0 , 1 , . . . , 2 k + 2 − 1 } r\in\{0,1,...,2^{k+2}-1\} r{0,1,...,2k+21}, 设置退避计时器为 r t rt rt; ③检测到信道忙时冻结计时器, 检测到信道空闲时经过 DIFS 后继续倒计时, 计时器减小到 0 0 0 立即发送数据帧.

3.4 以太网

以太网: 局域网; DIX Etherrnet V2(IEEE 802.3); 无连接工作方式(最大努力交付, 提供不可靠服务); 数据采用曼彻斯特编码.
网络适配器/网络接口卡(Adapter/NIC): 主机上实现与局域网传输介质间的物理连接和电信号匹配, 帧发送与接收, 帧封装与拆封, 介质访问控制, 数据编码与解码, 数据串并转换, 数据缓存.
MAC 地址: 48 位全球物理地址, 高 24 位为厂商代码, 低 24 为厂商自行分配的序列号; 路由器每个接口对应一个 MAC 地址.
发往本站帧: 单播帧(帧目的地址与本站 MAC 地址相同); 广播帧(全1地址, 发送给本局域网上所有站点); 多播帧(发送给本局域网上一部分站点).
帧定界: 各帧存在间隙, 接收方找到帧开始定界符, 其后比特流均属于同一帧; 曼彻斯特编码下码元间电压跳变, 违规编码下帧结束处电压不再跳变.
争用期 51.2μs, 标准带宽 10Mbps, 即最短帧长为 512bit.

标准以太网10BASE510BASE210BASE-T10BASE-F
传输介质同轴电缆(粗)同轴电缆(细)非屏蔽双绞线光纤对(850mm)
拓扑结构总线形总线形星形点对点
最大段长500m185m100m2000m
最多结点数目1003022
高速以太网100Base-TGb10Gb
传输介质双绞线双绞线或光纤双绞线或光纤
传输速率100Mbps1Gbps10Gbps
通信方式半双工或全双工半双工或全双工仅全双工

VLAN: 基于接口/MAC 地址/IP 地址将大局域网划分为逻辑上的虚拟局域网.
802.1Q 帧: VLAN 交换机间交互的帧; 在以太网 MAC 帧源地址和类型间插入 VLAN 标签 (2B 标签(固定为 0x8100) || 1B 空 || 3B VID 标识); 主机与交换机间交互仍为标准以太帧, 主机并不知道 VID 值; 交换机接口间链路成为汇聚链路/干线链路.

3.5 WiFi

BSS(基本服务集): 一个接入点(AP)/基站和若干移动站; 安装 AP 时分配不超过 32B 的 SSID(服务集标识符)和一个信道; 覆盖范围成为 BSA(基本服务器), 直径一般不超过 100m.
BSS 孤立时, 可通过 AP 连接到 DS(分配系统), 然后连接到另一个 BSS, 构成 ESS(扩展服务集); ESS 可通过 Portal(门户)对无线用户提供有线连接的以太网接入.

去往 AP来自 AP接收地址发送地址暂存地址
10AP MAC 地址源 MAC 地址目标 MAC 地址
01目标 MAC 地址AP MAC 地址源 MAC 地址

3.6 PPP

LAN(局域网): 同个区域内; 广播信道; 强调数据传输.
WAN(广域网): 跨区域; 点对点连接; 强调资源共享.

封装成帧(组帧): 将网络层递交的分组封装(添加首部和尾部), 解决帧界定, 帧同步, 传输透明(传输对上层透明, 任何数据均可传)问题.
字符计数法: 帧首部使用计数字段记录该帧所含字节数; 计数字段出错时会失去边界划分依据, 导致收发双发失去同步.
字节填充法: 使用特定字节界定一帧开始与结束, “SOH” 表示帧开始, “EOT” 表示帧结束, 帧内出现特定字符时使用转义字符 “ESC”; 提交上层前去掉转义字符.
零比特填充法: 使用特定比特串 “011111110” (中间 6 6 6 个连续的 “1”) 标志帧开始和结束; 数据字段中每遇到 5 5 5 个连续的 “1” 时即在其后插入 “0” 以避免误判; 使用硬件容易实现, 性能优于字节填充法, HDLC(高级数据链路控制) 采用.
违规编码法: 如曼彻斯特编码中, "高-低"电平对表示 “1”, "低-高"表示 “0”, "低-低"和"高-高"为违规编码即可用来界定帧边界.

PPP(点对点协议): 用户与 ISP 通信时所用的链路层协议; 广泛用于 WAN 路由器间专用线路.
特点: 不可靠服务, 只保证无差错(CRC检验); 只支持全双工点对点链路, 不支持多点线路; 对网络层协议透明; 面向字节流, 帧长度以 B 为单位; 将数据报封装到串行链路.
LCP(链路控制协议): 用来建立, 配置, 测试数据链路连接.
NCP(网络控制协议): 不同网络层协议需要响应的 NCP 配置.
字节填充法: 定界符(F)为 “0x7E”(即 “01111110”), 转义字符为 “0x7D”(即 “01111101”).

协议: “0x0021” 表示信息部分为 IP 数据报; “0xC021” 表示为 LCP.

4 网络层

4.1 IPv4

虚拟/逻辑网络互联: 通过 IP 协议使得物理上异构的网络在网络层上看起来像一个统一的网络; 主机进行通信时好像在单个网络上通信一样, 互联的网络具体异构细节对主机透明.

SDN(软件定义网络): 将数据平面(实现转发)和控制平面(实现路由选择)分离, 对路由器进行集中式控制; 远程控制器掌握主机和网络状态, 计算出最佳路由, 通过 Openflow 协议将流标(即转发表)下发给路由器, 路由器仅负责查表转发收到的分组.
接口: 对上层应用开发者提供北向接口; 与下层路由器双向对话通过南向接口; 控制器进群内通信通过东西向接口.
流标: 匹配字段; 动作(转发; 丢弃); 计数器.
优点: 全局集中控制, 分布高速转发, 可编程与性能平衡, 降低成本.
缺点: 集中管理易受到攻击; 网络规模扩大后控制器可能成为性能瓶颈.

MPLS(多协议标签交换): 网络核心采用标签索引转发无需解析首部, 提升转发性能.
LSR(标签交换路由器): 进行标签交换和转发的 MPLS 域内部的网络设备; 转发时将入标记更换为出标记(标记对换).
LER(标签边缘路由): MPLS 域边缘路由器; MPLS 域入口处给数据报打上固定长度的标签(分类), 出口处去除标签.
LDR(标记分配协议): 找出标记交换路径的交换报文, LSR 以此构造 IFIB(标签转发表).
FEC(转发等价类): 相同特征的报文归为同类, 同类数据报转发过程中被 LSR 以相同方式处理.
LSP(标签交换路径): 相当于路由, 与数据流方向一致的单向路径.

VPN(虚拟专用网): 建立虚拟加密的通道, 将主机间通信隔离起来, 以保证数据传输的机密性, 完整性, 可用性.

版本(4b): IP 版本; 此处为 “4”.
首部长度(4b): 以 4B 为单位; 常用值为 5 5 5(即 20B 无可选字段); 最大值为 15 15 15(即 60B).
总长度(16b): 以 1B 为单位; 理论最大值为 2 16 − 1 = 2^{16}-1= 2161= 65535B; 总长度不能超过链路层 MTU(最大传送单元), 超过则需要分片; 以太帧 MTU 为 1500B.
标识(16b): 产生一个数据报时计数器加 1 1 1; 同一组不同分片的数据报标识相同.
标志(3b): MF = 1 =1 =1 时表示后面还有分片 (More Fragment); DF = 0 =0 =0 时允许分片 (Don’t Fragment).
片偏移(13b): 以 8B 为单位; 允许分片时, 表示当前片在原数据报中相对位置, 以太帧无可选自段时片偏移值为 i × 185 ( i = 0 , 1 , . . . ) i\times 185 (i=0,1,...) i×185(i=0,1,...) ( 185 = 1500 − 20 8 185=\frac{1500-20}{8} 185=8150020).
生存时间/TTL(8b): 可通过路由器数的最大值; 转发前减 1 1 1, 为 0 0 0 时丢弃.
协议(8b): 6 6 6 表示 TCP, 17 17 17 表示 UDP.
首部校验和(16b): 首部以 2B 为单位分组相加, 首部检验和初始设为 0 0 0, 溢出时再加上溢出位, 而后取反; 检验时首部分组相加后全 “1” (即 0xffff) 即认为无差错.

网络划分: IP 地址 = = = 网络号 || 主机号.
子网划分: IP 地址 = = = 网络号 || 子网号 || 主机号; 即从主机号中借用一定位数作为子网号.
子网掩码: 和 IP 地址按位与可得前 n n n 位为网路号及子网号; 同一子网下设置相同的子网掩码.
A 类: 2 7 − 2 = 126 2^7-2=126 272=126 个网络, 每个网络 2 24 − 2 2^{24}-2 2242 个主机; 即网络号 1~126
B 类: 2 1 4 = 16384 2^14=16384 214=16384 个网络, 每个网络 2 1 6 − 2 = 65534 2^16-2=65534 2162=65534 个主机; 即网络号 128.0~191.255
C 类: 2 2 1 2^21 221 个网络, 每个网络 2 8 − 2 = 254 2^8-2=254 282=254; 即网络号 192.0.0~223.255.255

特殊 IP 地址: 不用作主机 IP 地址.
主机号全 “0”: 本网络本身.
主机号全 “1”: 本网络广播地址(直接广播).
127.x.x.x: 环路自检(Loopback Test), 任意主机本身; 以此为地址的数据报不会出现在任何网路上.
全 “0”(即 0.0.0.0): 本网络本主机.
全 “1”(即 255.255.255.255): 等效为本网络广播地址(受限广播).

NAT(网络地址转换): 将专用网络地址(Intranet)转换为公用网络(Internet)地址, 从而对外隐藏内部管理的 IP 地址.
转换表: “本地 IP 地址: 端口” - “全球 IP 地址: 端口”; 可将多个私有 IP 地址映射到一个全球 IP 地址.
内网穿透: 外网无法直接访问内网设备; 将内网设备映射到有公网 IP 的中转服务器.
私有 IP 地址: 仅用于 LAN; 需要通过网关利用 NAT 转换后连接 WAN.
A 类: 1 个网段, 每个网段 2 24 − 2 2^{24}-2 2242 个主机; 即 10.0.0.0~10.255.255.255
B 类: 16 个网段, 每个网段 2 16 − 2 = 65534 2^{16}-2=65534 2162=65534 个主机; 即 172.16.0.0~172.31.255.255
C 类: 256 个网段, 每个网段 2 8 − 2 = 254 2^8-2=254 282=254 个主机; 即 192.168.0.0~192.168.255.255

CIDR(无分类编址): “IP 地址/网络前缀位数”; 网络前缀位数等效于子网掩码中 “1” 的个数; 实际可指派地址数为 2 32 − n − 2 2^{32-n}-2 232n2.
前缀段(子网掩码段)可能的十进制值: 128, 192, 224, 240, 248, 252, 254, 255.
路由聚合: 路由表中利用 CIDR 查找目的网络, 可减少路由器间信息交换.
最长前缀匹配(最佳匹配): 路由表各项由目的网络前缀取代目的 IP 地址, 从匹配结果中选择具有最长前缀的路由; 网络前缀越长, 地址块越小, 路由越具体.

转发表: (目的网络地址/目的网络前缀, 下一跳地址); 可按前缀长度降序排列.
特定主机路由: “/32” 表示子网掩码无意义指向特定主机, 以方便网络管理员控制和测试.
默认路由: “0.0.0.0/0” 目的网络不在转发表中选择默认路由; 通常用于路由器连接到互联网.
转发: ①提取目的主机 IP 地址; ②查找特定主机路由; ③本行子网掩码与目的地址按位与, 检查是否与本行前缀匹配; ④传给默认路由, 否则报告出错.

ARP(地址解析协议): 路由器隔离导致无法广播 MAC 地址完成跨网络寻址; 同一局域网内转发时完成 IP 地址到 MAC 地址的转换, 并封装成 MAC 帧; 工作在网络层.
ARP 表(高速缓存): 存放本局域网上各主机和路由器的 IP 地址到 MAC 地址映射关系; 不存在映射关系时, MAC 地址填为 “FF-FF-FF-FF-FF-FF” 以广播 ARP 请求分组, 目标主机收到后单播回送响应分组, 以此更新缓存表.

RARP(反向地址解析协议): 设备知道自己的 MAC 地址但不知道 IP 地址, 广播查询报文, RARP 广播回送预先静态配置好的 IP 地址.

DHCP(动态主机配置协议): 服务器给主机动态分配 IP 地址, 提供了即插即用的联网机制; 基于 UDP 的应用层协议(C/S 模型).
发现报文: ①主机广播发现消息(0.0.0.0 → \to 255.255.255.255); ②服务器广播提供消息, 包括分配给主机的 IP 地址(服务器地址 → \to 255.255.255.255); ③主机接受 IP 地址, 广播请求消息(0.0.0.0 → \to 255.255.255.255); ④服务器广播确认消息, 完成 IP 地址分配 (服务器地址 → \to 255.255.255.255).
租用期: 分配的 IP 地址是临时的; 其值由服务决定或主机提出请求.

ICMP(网络控制报文协议): 主机或路由器报告差错和异常情况; 封装在 IP 数据报中; 网络层协议.
差错报告报文: 终点不可达(目的地不能交付数据报时); 源点抑制(目的地因拥塞而丢弃数据报); 超时(TTL 为零丢弃数据报); 参数问题(收到的数据报首部中字段值错误而丢弃数据报); 改变路由(重定向).
不发送差错报告报文情况: 差错报告报文; 第一个分片的后续数据报片; 多播地址数据报; 特殊地址(127.0.0.0 或 0.0.0.0)数据报.
询问报文: 回送请求和回答; 时间戳请求和回答; 地址掩码请求和回答; 路由器询问和通告.
PING: 分组网间探测, 测试两台主机连通性; 回送请求和回答报文.
Traceroute(Tracert): 跟踪分组经过路由; 超时报文.

IGMP(网际组管理协议): 让局域网上多播路由器知道是否有主机加入或离开某个多播组.
IP 多播地址(D 类私有): 224.0.0.0~239.255.255.255; 每个 IP 地址标志一个多播组, 主机可随时加入或离开一个多播组.
MAC 多播地址: 01-00-5E-00-00-00~01-00-5E-7F-FF-FF; 前 25 位固定, 后 23 位为 IP 多播地址后 23 位直接映射.
新主机加入: ①主机多播发送报文, 声明成为多播组成员; ②多播路由器利用多播路由选择协议将组成员关系转发给其他多播路由器.
探询组成员关系: ①多播路由器周期性探询多播组; ②多播组中有一个主机响应则认为活跃, 其他主机监听响应, 有主机响应时即不再发送响应; ③多次探询后无主机响应, 则认为所有主机都已离开该多播组, 不再将该组成员关系转发给其他多播路由器.

4.2 IPv6

IPv6 特点: 更大的地址空间(32bit → \to 128 bit); 扩展的地址层次结构(无需使用单独的 ARP); 灵活的首部格式(路由器对扩展首部不进行处理); 首部长度固定为 40B; 改进的选项(选项在有效荷载中); 允许协议扩充; 支持即插即用(自动配置 IP 地址); 支持资源预分配(支持流媒体等要求保证一定带宽和时延的应用); 只有源主机才能分片, 端到端; 增大安全性(扩展首部中有身份认证和保密选项).
ICMPv6: 差错报告报文; 信息报文; 邻站发现报文(ND/邻站发现协议); 组成员关系报文(MLD/多播听众交付协议).

版本(4b): IP 版本; 此处为 “4”.
通信量类(8b): 区分不同 IPv5 数据报类别或优先级.
流标号(20b): "流"是点到点的一系列数据报, "流"路径上路由器应保证指明的服务质量, 属于同一个"流"的数据有相同的标号.
有效载荷长度(16b): 以 1B 为单位; 扩展首部及数据; 理论最大值为 65535B.
下一个首部(8b): 无扩展首部时指明上层协议; 有扩展首部时指明第一个扩展首部类型.
跳数限制(8b): 等同于 TTL; 可设定的最大值为 255.

IPv6 地址: 十六进制表示, 冒号分隔 16 位为一域; 域中开头有 “0” 时可省略但保证每个域至少一个数字(即 “x:0000:x” 时记 “x:0:x”); 相继 0 域时可进一步缩写为双冒号(即 “x:0:0:0:x” 时记 “x::x”)但至多出现一次.
单播: 传统点对点通信.
多播: 一点对多点通信, 数据报发送到一组主机中的全部.
任播: 终点是一组主机, 但数据报只交付其中一个, 通常是距离最近的.
未指明地址: 只能用于未配置 IPv6 地址主机的源地址; 记 ::/128
环回地址: 即环路自检, 但 IPv6 下仅此一个; 记 ::1/128
多播地址: 占地址空间的 1 / 256 1/256 1/256; 记 FF00::/8
本地链路单播地址: 即私有地址; 记 FE90::/10
全球单播地址: 全球路由选择前缀(48b) || 子网标识符 (16b) || 接口标识符(64b)

IPv4 向 IPv6 过渡: IPv6 向后兼容 IPv4, 即能够接收和转发 IPv4 分组和选择路由.
双协议栈: 设备上同时装有 IPv4 和 IPv6 两个协议栈, 分别配置两类 IP 地址; 通信时使用 DNS 获知目标主机采用的协议栈类型.
隧道技术: IPv6 数据报进入 IPv4 网络时, 将整个 IPv6 数据报封装成 IPv4 数据报的数据荷载.

4.3 路由选择

静态路由: 网络管理员手动配置每一条路由.
动态路由: 根据网络流量负载和拓扑结构变化动态调整自身路由表.
收敛: 路由器间经过若干次信息交换和更新后, 所有路由器都可以计算出转发表(<目的地址, 下一跳地址>)时.
IGP(内部网关协议): 自洽系统(AS)内使用的路由选择协议.
EGP(外部网关协议): 自洽系统间(域间)使用的路由协议.

距离-向量路由: Bellman-Ford, 单源最短路径; 两点间最短路径也包含了路径上其他顶点间的最短路径.
d ( x , y ) = min ⁡ { c ( x , v i ) + d ( v , y ) } i = 1 m x d(x,y)=\min\{c(x,v_i)+d(v,y)\}_{i=1}^{m_x} d(x,y)=min{c(x,vi)+d(v,y)}i=1mx, v i v_i vi x x x 的邻居, c ( ⋅ , ⋅ ) c(\cdot,\cdot) c(,) 为邻居间距离, d ( ⋅ , ⋅ ) d(\cdot,\cdot) d(,) 为两点间最短距离.
路由信息: x x x 到所有邻居的距离, x x x 到其他所有结点的最短距离(距离向量).
更新: 每个结点与所有邻居定期交换路由信息.
优点: 实现简单, 开销较小(路由器存储和计算), 收敛速度快(“好消息传的快”).
缺点: 结点计算路径依赖于其他结点, 故障更新较慢(“坏消息传的慢”); 网络规模较大时, 更新报文非常大.
路由中毒: 距离信息在路由表失效时赋值为无穷大发出, 相邻结点得知路由无效后再删除路由信息.
毒性反转: 收到中毒消息的路由器不遵守水平分割原则将中毒消息转发给所有相邻节点, 通告路由失效.

链路状态路由: Dijkstra, 每个结点都具有全网拓扑结构图.
更新: 主动测试相邻结点状态; 定期广播(洪泛)自身与邻居间的距离(链路状态).
优点: 每个结点独立计算路径, 故障更新较快; 链路状态报文与网络中结点总数无关.
缺点: 实现复杂, 开销较大.

RIP(路由信息协议): IGP, 距离-向量算法, 使用跳数(Hop Count)衡量距离; 路径最多包含 15 个路由器, 距离为 16 时(180s 没有收到相邻路由器信息, 默认超时时间)意味不可达(无穷大), 以避免分组在环路上循环导致网络拥塞; 传输层协议, UDP 端口 520.
路由表项: <目的网络 N N N, 距离 d d d, 下一跳地址 X X X>.
更新: 仅和相邻路由器间隔 30s 交换路由表直至收敛; 收到地址 X X X 的报文时, 将报文距离全部 + 1 +1 +1, 并将下一跳地址改为 X X X; 与原路由表比较: ① N N N 不存在时新增路由表项; ② N N N 存在且为 X X X 时更新路由表距离, 以更新消息为准; ③ N N N 存在且不为 X X X 时比较距离, 报文距离更小时更新路由表距离和下一跳网络.

OSPF(开放最短路径优先): IGP, 链路状态算法, 允许每条路由设置不同的代价作为距离; 网络层协议, IP 首部协议字段为 89.
区域: 将 AS 划分为若干更小的范围, 洪泛局限在这个范围内, 从而减少整个网络上的通信量.
主干区域: 即区域 0 和网络核心, 负责分发路由信息, 所有区域都直接或间接与主干区域相连.
分组: 问候, 发现和维持邻站可达性; 数据库描述, 向邻站发出链路状态项目摘要信息; 链路状态请求, 向对方请求发送某些项目的详细信息; 链路状态更新, 洪泛对全网更新链路状态; 链路状态确认.
更新: 相邻路由器每隔 10s 交换问候分组, 超过 40s 没有收到则认为不可达; 每隔 30 分钟刷新一次数据库中链路状态; 只有链路状态更新时才洪泛.
特点: 到同一个目的网络有多条相同代价的路径时, 可将通信量分配给这几条路径; 分组具有鉴别功能, 从而保证仅在可信赖的路由器间交换链路状态信息; 支持可变长子网划分和 CIDR; 每个链路状态有 32 位序号, 序号越大则状态越新.

BGP(边界网关协议): EGP, 互联网规模过大, 力求寻找一条能够到达目的且比较好的路由; 应用层协议, 基于 TCP.
发言人: AS 边界路由器, 同时运行 AS 的IGP; 与邻站建立连接, 彼此成为对等站.
报文: 打开(Open), 与邻站发言人建立关系, 通信初始化; 更新(Update), 通知邻站撤销或新增路由; 保活(Keepalive), 周期性(30s)证实邻站连通性; 通知(Notification), 发送检测到的差错.
特点: 以 AS 为单位; 寻找较好路径取决于找对发言人; 支持 CIDR; 首次运行时交换整个路由表, 此后只交换变化部分.

5 传输层

端口: 标识主机中的应用进程; 长度 16b, 范围 0-65535.
知名端口 0-1023; 登记端口 1024-49151, IANA 分配; 动态端口 49152-65535.
套接字(Socket): 用整数唯一标识某个主机(IP 地址)上某个应用进程(端口号).

传输层协议应用层协议提供服务默认端口
TCPHTTPWeb80
HTTPS安全Web443
Telnet远程访问23
POP3E-mail拉取和管理110
SMTPE-mail发送25
IMAPE-mail拉取和管理143
FTP文件传输20(传输), 21(控制)
DNS域名区域传送53
UDPNTP网络时间123
DNS域名解析53
SNMP网络管理161
DHCPIP地址动态管理67
TFTP简单文件传输69
Ipsec安全连接500

5.1 UDP

UDP(用户数据报协议): 无连接, 支持一对多, 多对多; 不可靠交付, 有差错, 有丢失, 乱序, 但不允许过大时延; 首部开销较小(8B).
报文长度: 应用程序决定; 一次发送一个完整报文, 不合并, 不拆分.

首部(8B): 源端口(2B) || 目的端口(2B) || 报文长度(以 B 为单位; 2B) || 报文校验和(2B).
报文校验和(16b): 报文以 2B 为单位分组相加, 校验和初始设置为全 0 0 0, 添加伪首部, 不为 2B 整数倍时末尾填充 0 0 0(填充部分不发送), 而后取反; 检验时添加伪首部和末尾填充, 相加后全 “1” (即 0xffff) 即认为无差错.
伪首部(12B): 源 IP 地址(4B) || 4B 目的 IP 地址(4B) || 协议(2B; UDP 为 17 17 17) || 报文长度(以 B 为单位, 不计伪首部和末尾填充; 2B).
错误处理: 直接丢弃; 或附上错误报告交付上层.

5.2 TCP

TCP(传输控制协议): 面向连接; 两个端点一对一; 可靠交付, 无差错, 不丢失, 不重复, 有序; 全双工, 捎带确认; 面向字节流.
缓冲区: 应用程序准备发送; 已发送但尚未确认; 按序到达但尚未被应用程序读取; 不按序到达.
报文段: 运载数据; 建立连接; 释放连接; 应答.
报文长度: 由接收窗口值和网络拥塞程度决定.

源端口(16b); 目的端口(16b).
序号(32b): 范围为 0 0 0- 2 32 − 1 2^{32}-1 2321; 表示字节流中字节编号, 而非报文编号.
确认号(32b): 期望收到对方下一个报文段第一个字节的序号; 确认号为 N N N 时, 即前 N − 1 N-1 N1 字节均正确收到.
数据偏移(4b): 即以 4B 为单位的首部长度; 最大值为 15, 即首部长度最大为 60B.
保留(6b): 目前全 0 0 0.
URG(紧急位): 设置为 1 1 1 时表示应尽快传送, 即高优先级数据; 配合紧急指针使用.
ACK(确认位): 建立连接时设置为 1 1 1.
PSH(推送位): 交互式通信时, 希望键入命令后立即收到对方响应; 收到设置为 1 1 1 的报文时, 不等缓存填满立即向上交付.
RST(复位位): 设置为 1 1 1 时表示当前连接出现严重差错, 必须释放连接并重新建立; 还可用于拒绝非法报文段.
SYN(同步位): 连接请求或连接接收时设置为 1 1 1.
FIN(终止位): 发送方数据发送完毕要求释放连接时设置为 1 1 1.
窗口(16b): 范围为 0 0 0- 2 32 − 1 2^{32}-1 2321; 表示从本报文段确认号起以 B 为单位允许对方发送的数据量, 即当前接收窗口大小.
校验和(16b): 同 UDP; 伪首部中协议改为 6 6 6.
紧急指针(16b): URG = 1 =1 =1时启用, 指出本报文段中紧急数据结束位置, 紧急数据在报文段数据最前面, 即以 B 为单位的所占长度.
选项: 长度可变, 最长为 40B; MSS(最大报文段长度), 即以 B 为单位的报文段中数据段的最大长度.
填充: 末尾填充 0 0 0 使首部长度为 4B 整数倍.

连接管理: C/S 模式, 主动发起连接的是客户端, 被动等待连接的是服务器; 连接建立 → \to 数据传输 → \to 连接释放.
连接建立: 三次握手.
S: 处于 LISTEN(监听).
C: 发送 SYN = 1 =1 =1, seq = x =x =x; 不能携带数据但消耗序号, 进入 SYN-SENT(同步发送).
S: 发送 SYN = 1 =1 =1, ACK = 1 =1 =1, seq = y =y =y, ack = x + 1 =x+1 =x+1; 不能携带输入但消耗序号, 进入 SYN-RCVD(同步收到).
C: 发送 ACK = 1 =1 =1, seq = x + 1 =x+1 =x+1, ack = y + 1 =y+1 =y+1; 可携带数据否则不消耗序号, 进入 ESTABLISHED(连接建立).
S: 进入 ESTABLISHED.
连接释放: 四次挥手.
C: 发送 FIN = 1 =1 =1, seq = u =u =u; 即使不携带数据也消耗序号, 进入 FIN-WAIT-1(终止等待1).
S: 发送 ACK = 1 =1 =1, seq = v =v =v, ack = u + 1 =u+1 =u+1; 进入 CLOSE-WAIT(关闭等待).
C: 进入 FIN-WAIT-2(终止等待2).
S: 发送 FIN = 1 =1 =1, ACK = 1 =1 =1, seq = w =w =w, ack = u + 1 =u+1 =u+1; 进入 LAST-ACK(最后确认).
C: 发送 ACK = 1 =1 =1, seq = u + 1 =u+1 =u+1, ack = w + 1 =w+1 =w+1; 进入 TIME-WAIT, 经过 2 2 2 个 MSL(最长报文段寿命)后进入 CLOSE.
S: 进入 CLOSE.
保活计时器: 防止客户端出现故障无法发送报文时, 服务器白白等下去.
客户端发送 FIN 报文时刻起, 服务器不再发送数据则, 客户端释放连接最短时间为 1 1 1RRT + 2 +2 +2MSL, 服务器释放连接最短时间为 1.5 1.5 1.5RRT.

可靠传输: 累积确认.
序号: 建立在传送字节流上, 不建立在报文段上.
超时重传: 将 RTO(超时重传时间) 设置为略大于 RTTS(平滑 RTT); 太小会导致拥塞, 太大会导致传输时延大.
快速重传: 受到三个冗余 ACK 时认为后续报文段已经丢失, 立即进行重传.

R T O = R T T S + 4 R T T D {\rm RTO}={\rm RTTS}+4{\rm RTTD} RTO=RTTS+4RTTD.
R T T S n e w = ( 1 − α ) R T T S o l d + α R T T n e w {\rm RTTS_{new}}=(1-\alpha){\rm RTTS_{old}}+\alpha {\rm RTT_{new}} RTTSnew=(1α)RTTSold+αRTTnew, 0 ≤ α < 1 0\leq\alpha<1 0α<1; 推荐 α = 1 8 \alpha=\frac{1}{8} α=81.
R T T D n e w = ( 1 − β ) R T T D o l d + β ∣ R T T S − R T T n e w ∣ {\rm RTTD_{new}}=(1-\beta){\rm RTTD_{old}}+\beta|{\rm RTTS}-{\rm RTT_{new}}| RTTDnew=(1β)RTTDold+βRTTSRTTnew, 0 ≤ β < 1 0\leq\beta<1 0β<1; 推荐 β = 1 4 \beta=\frac{1}{4} β=41.

流量控制: 动态调整发送窗口和接收窗口, 发送窗口不超过接收窗口.
持续计时器: 收到零窗口通知时, 启动持续计时器; 超时时发送零窗口探测报文段, 收到零窗口通知时重置持续计时器, 直到收到不为零的窗口值.

5.3 拥塞控制

拥塞控制: 防止过多数据注入网络, 保证网络中路由器或链路不过载; 对于端点拥塞往往表现为通信时延增加.
开环控制: 设计网络时事先将可能导致拥塞的因素考虑周到, 力求网络在工作时不产生拥塞; 静态预防.
闭环控制: 事先不考虑拥塞, 基于反馈环路, 监测网络系统进行调整; 动态调整.
基本假设: 数据单向传输, 接收方只回送确认报文; 接收方总是拥有足够大的缓存空间, 即发送窗口大小(cwnd)完全由网络拥塞程度决定.
拥塞判断: 超时, 即超过设定时间没有收到接收方确认报文.
慢开始: cwnd 初始值不超过 ssthresh, 每经过一个 RTT, cwnd 倍增(指数增长); 直至门限 ssthresh(阈值) 时改用拥塞避免.
拥塞避免: 每经过一个 RTT, cwnd 和 ssthresh 同时加 1 1 1; 出现拥塞时, ssthresh 减小为一半, cwnd 设为 1 1 1, 改为慢开始.
快重传: 发送方连续收到三个冗余的确认报文(累计确认)时, 不等待超时计时器超时而立即重传相应报文.
快恢复: 发送方连续收到三个冗余的确认报文时, 将 ssthresh 和 cwnd 均减小为一半, 改为拥塞避免.
考虑流量控制的实际发送窗口: min ⁡ { \min\{ min{cwnd, rwnd } \} }, rwnd 为接收窗口.

6 应用层

6.1 HTTP

HTTP(超文本传输协议): 面向事务, 面向文本, 应用层协议, 基于 TCP 端口号 80.
Web: 页面由对象组成; 通过 URL 引用对象.
URL格式: <协议名>://<用户名>:<口令>@<主机名>/<路径名>:<端口>.
HTTP1.0: 无状态, 服务器不维护客户端历史信息; 非持久连接, 最多只有一个对象在连接上发送, 开销为 2 2 2 个 RRT + + + 对象传输时间.
HTTP1.1: 无状态; 流水线式, 客户端遇到引用对象立刻产生请求, 所有引用对象延迟 1 1 1 个 RRT 是可能的, 受到 TCP 发送窗口限制; 持久性连接, 服务端响应后保持连接.
Cookie: 浏览器第一次访问时, 服务端创建并保存 Cookie → \to 客户端接收 Cookie 信息, 再次访问时携带 Cookie, 实现状态维护.
Session: 浏览器第一次访问时, 服务端创建并保存 Session, 生成相应的 Cookie → \to 客户端接收 Cookie信息, 再次访问时携带 Cookie → \to 服务端根据 Cookie 匹配 Session, 实现状态维护.
缓存/代理服务器: 客户端通过缓存访问 Web; 缓存中存在对象时直接返回, 不存在时从原始服务器拉取(缓存更新).


报文使用 ASCII 编码; 回车符为 “CR”; 换行符为 “LF”.
请求方法: Post, 表单提交; Get, URL 字段上截取; DELETE, 删除 URL 字段文件; HEAD, URL 字段上截取, 只获取元数据/首部(文件属性信息); Connect, 用于代理服务器.

常见状态码英文解释
200OK正常
202Accepted接受请求
301Moved Permanently请求对象被永久移动, 资源重定向
400Bad Request请求语法错误, 服务端无法理解
403Forbidden服务端理解请求, 但拒绝执行
404Not Found请求失败, 资源无法找到
500Internal Server Error服务器突发意外
502Bad Gateway网关或代理服务器从上游接收到无效响应
504Gateway TimeoutDNS查询超时

6.2 DNS

DNS(域名系统): C/S 模型, 基于 UDP 端口 53; 将主机名转换为 IP 地址.
层次域名空间: 标号英文不区分大小写, 仅包含连字符; 单个标号长度不超过 63B, 完整域名长度不超过 255B; 级别低的域名在左边, 级别高的在右边.
TLD(顶级域名): 国家(地区); 通用; 基础结构, 用于反向域名解析(ARPA).
域名服务器: 根(告诉主机下一步要查询的域名服务器); 顶级; 权限(授权); 本地.
域名解析: 主机向本地域名服务器采用递归查询; 本地服务器向根域名服务器采用迭代查询.
高速缓存: 为提高 DNS 查询效率, 减少网络上 DNS 查询报文数量, 域名服务器中会缓存最近查询过的域名相关映射信息; 相同域名短时间内再次到达服务器时, 可直接提供所需求的 IP 地址, 只有缓存中找不到域名时才继续域名查询.

6.3 FTP

FTP(文件传输协议): C/S 模型, 基于 TCP 端口 21 和 20; 不同类型主机间文件传输, 用户权限管理方式远程管理服务器上文件, 匿名方式公共文件共享.
并发进程: 服务器主进程在 21 端口, 负责接收新的请求; 若干从属进程在客户端发起请求后启动, 请求处理完毕后即终止.
控制连接: 服务器监听 21 端口, 用来传输控制信息(连接请求, 传送请求), 在整个会话期间始终保持打开.
数据连接: 服务器收到文件传输请求后, 创建数据传送进程, 客户端选择数据连接模式; 主动模式 PORT 下, 客户端连接到服务器 21 端口, 登录成功后读取数据, 客户端随机开放端口; 被动模式 PASV 下, 客户端发起请求后, 服务器开放随机端口并通知客户端, 客户端连接服务器指定的端口.
带外传送: 使用与文件传送分离的控制连接; 修改服务端文件时, 需要将文件传送到本地, 将修改后的文件副本传送到服务器, 造成时间浪费.

7 网络安全

详见: 网络安全复习笔记

本文标签: 计算机网络 笔记