Skip to main content

计算机网络

·19945 words·40 mins· loading · loading · ·
Sans
Author
Sans
wanna know everything
Table of Contents

1 计算机网络体系结构
#

1.1 基础概念
#

将计算机与计算机, 计算机与网络, 网络与网络链接在一起的系统

发展的三个阶段:

  1. 两级结构?: internet因特网连接许多网络(交换机), 网络连接计算机
  2. 三级结构: 主干网 - 地区网 - 子网
  3. 多层次 ISP 结构: 主干ISP - 地区ISP - 本地ISP - 子网

组成
#

按照组成部件划分:

  1. 硬件(主机, 通信链路(光纤), 交换设备(路由器), 网卡等)
  2. 软件
  3. 协议 - 计算机网络的核心, 一系列规则和约定的集合

按工作方式可划分为: 核心网络, 边缘网络(用户直接接触使用)

按功能组成可划分为:

  1. 通信子网 - 实现数据通信(物理层-数据链路层-网络层)
  2. 资源子网 - 实现资源共享(会话层-表示层-应用层)

功能
#

  1. 数据通信
  2. 资源共享
  3. 分布式处理

分类
#

  1. 按分布范围: 广域网(WAN), 城域网(MAN), 局域网(LAN)
  2. 按传输技术: 广播式(多用于局域网), 点对点(广域网)
  3. 按拓扑结构: 总线形, 星形, 环形, 网状
  4. 按使用者: 公用网, 专用网
  5. 按交换技术: 电路交换(电话线), 报文交换, 分组交换
  6. 按传输介质: 有线, 无线(蓝牙/无线电)

性能指标(重点-小计算题)
#

  1. 带宽 - 信道的最高数据传输速率 b/s(通信中指允许通过的信号hz范围)
  2. 时延(延迟) - 数据从网络一端到另一端所需总时间, 由四部分构成:
    1. 发送时延 - 数据推送到链路的时间 = 数据长度/信道宽度
    2. 传播时延 - 数据从链路一端到另一端时间 = 信道长度/传播速率
    3. 排队时延 - 等待路由器确定转发端口, 排队等待转发
    4. 处理时延 - 差错检验等
  3. 时延带宽积 - 第一个bit到达终点时, 已经发送了多少个 bit
    1. 也称为为以比特为单位的链路长度
    2. 时延带宽积 = 传播时延 * 带宽
  4. 往返时间 RTT - 从发送方发送数据, 到发送方收到接收方确认的时延
    1. RTT = 2 * 传播时延 + 末端处理时延
  5. 吞吐量 - 示在单位时间内通过某个网络(信道/接口)的数据量 b/s
  6. 速率(比特率) - 主机在数字信道上传送数据位数的速率 b/s
  7. 利用率
    1. 信道利用率 = 有数据通过时间/总时间
    2. 网络利用率 - 信道利用率的加权平均值

1.2 体系结构(重点)
#

功能角度描述计算机网络(分层)结构
分层的一大好处是可以支持异构网络互联

七层 OSI 模型 - 法定标准
#

从上到下依次为:

  1. 应用层 - 用户直接与网络交互的应用(如邮件SMTP, 万维网HTTP)
  2. 表示层 - 两个信息系统间交换信息的形式, 包括压缩(JPEG)/加解密
  3. 会话层 - 为上层建立连接(会话)以有序传输数据
  4. 传输层 - 为传输层建立进程间端到端的通信(TCP/UDP)
  5. 网络层 - 为网络上不同主机提供通信服务, 传输单位是数据报(IP)
  6. 数据链路层 - 将网络层传下来的数据报组装成帧
  7. 物理层 - 定义物理媒体(如光纤)如何传输比特流(RJ45网口)

四层 TCP/IP 模型 - 事实标准
#

  1. 应用层
  2. 传输层
  3. 网际层
  4. 网络接口层 - 数据链路层 + 物理层

与 OSI 模型的一个重点区别:

  1. 传输层: OSI 是面向连接的; TCP/IP 模型两者兼有
  2. 网络层: TCP/IP 模型是无连接的; OSI 两者兼有

五层参考模型
#

学习计算机网络时, 结合上述两者的学习参考模型

  1. 应用层 - 支持各种网络应用
  2. 传输层 - 进程-进程(端到端)
  3. 网络层 - 主机-主机
  4. 数据链路层(点对点)
  5. 物理层 - 注意物理传输媒介并不属于该层而位于其下方

2 物理层
#

解决如何表示和利用物理传输媒体传输比特流的问题

主要任务: 定义如传输媒体接口有关特性的标准, 包括:

  1. 机械特性 - 如插口的规格形状, 引线引脚数量
  2. 电器特性 - 电压范围, 阻抗, 传输速率等
  3. 功能特性 - 定义接口各信号线的意义, 高低电平意义
  4. 规格特性 - 各物理线路的工作时序关系等

2.1 通信基础
#

一个典型数据通信模型:

典型数据通信模型

2.1.1 基本概念
#

一些术语:

  1. 信号 - 数据的电气/电磁表现, 是数据在传输过程中的存在形式
    1. 数字信号/离散信号
    2. 模拟信号/连续信号
  2. 信道 - 信号的传输媒介, 一条通信线路往往包含发送信道和接收信道
    1. 按传输信号分: 数字信道, 模拟信道
    2. 按传输介质分: 无线信道, 有线信道
  3. 信源 - 产生和发送数据的源头
  4. 信宿 - 接收数据的终点
  5. 码元 - 信道上一个固定时长(码元长度)传输的信号波形
    1. 即承载信息的基本单位
    2. n 进制码元即码元状态有 n 个(如四进制码元可用 00|01|10|11)
  6. 码元(传输)速率 - 单位时间传输码元的个数, 单位是波特(Baud)
    1. 注意信息传输速率是 bit/s, 一个码元可能包含多个比特
三种通信方式
#
  1. 单工通信 - 单向通信; 一条信道
  2. 半双工通信 - 双向通信, 但单方不能同时收发; 两条信道
  3. 全双工通信 - 双向通信, 可同时发送和接收; 两条信道
两种传输方式(串行/并行)
#
  1. 串行传输 - 将数据按位从低位到高位依次发送
  2. 并行传输 - 多个信道同时传输
同步&异步传输
#

总结:

同步&异步传输

2.1.2 两个公式(重点-小计算)
#

信号受到干扰可能会失真:

信号失真

码间串扰: 失真的一种现象; 信号频率过高导致接收端收到的信号波形失去了码元之间清晰界限的现象

奈氏准则(奈奎斯特定理)
#

无噪声,带宽受限信道中, 避免码间串扰的极限传输速率: $$ V_{max码元速率} = 2W \newline V_{max比特速率} = 2W \cdot \log_2(V) $$ 其中:

  1. W 为信道带宽 hz(此处为通信领域概念因此用 hz)
  2. V 为码元的离散电平数目(比特数)
    因此, 若要提高码元传输速率:
  3. 提高带宽
  4. 要么使每个码元携带更多比特信息(多元制调制)

(2009真题)在无噪声情况下,若某通信链路的带宽为3kHz,采用4个相位,每个相位具有4种振幅的QAM调制技术, 则该通信链路的最大数据传输速率是?

  1. 4 相位每相位 4 振幅, 因此一个信号(码元)可以表示 16 种状态, 即 V = 16
  2. 最大码元速率为带宽的一半即: 1.5k todo:fixme?
  3. 因此最大速率 = 码元携带比特数 * 码元速率 = 24kbps
香农定理
#

若信号强, 则噪声影响相对较小, 该比值通过信噪比衡量:
$$ 信噪比(db) = 10\log_{10}(\frac{S}{N}) $$ 则在带宽受限且有噪声信道中:
$$ V_{max比特速率} = W\log_2(1 + \frac{S}{N}) $$ 其中: S 为信号的平均功率; N 为噪声的平均功率

比较
#
  1. 奈氏定则不考虑噪声, 更注重于内部限制
  2. 香农定理考虑噪声, 更注重外部限制
  3. 实际最大传输速率区两者较小者

例: 二进制信号在信噪比为127:1的4kHz信道上传输,最大的数据速率

  1. 奈氏准则: $v = 2\times4000\times\log_22 = 8000 b/s$
  2. 香农定理: $v = 4000\times\log_2(1 + 127) = 28000 b/s$

2.1.3 编码与调制(重点)
#

信道上传送的两种信号:

  1. 基带信号 - 数字信号用不同电压表示, 再用数字信道传输(基带传输)
  2. 宽带信号 - 调制为模拟信号, 再用模拟信道传输(宽带传输)
    一般来说: 近距离采用基带传输; 远距离采用宽带传输
编码
#

数据转换为数字信号的过程称为编码

编码

非归零编码
#

规则: 高1低0
缺点: 无检错功能, 无法判断一个码元的开始和结束, 收发难以同步

归零编码
#

规则: 高1低0, 但信号电平在一个码元之内都要恢复到零

曼彻斯特编码
#

规则: 一个码元分成两个间隔, 前低后高为1; 前高后低为 0(也可相反)
缺点: 频带宽度要求是原带宽的2倍, 即数据传输速率减半

差分曼彻斯特编码
#

第一个码元同曼彻斯特编码

规则, 同 1 异 0:

  1. 若码元为1, 则前半个码元的电平与上一个码元的后半个码元的电平相同
  2. 若码元为0, 则相反

抗干扰性强于曼彻斯特编码, 常用于局域网传输

反向不归零编码
#
4B/5B 编码
#

规则: 比特流中插入额外的比特以打破一连串的0或1, 即是用5个比特来 编码4个比特的数据

数字信号的调制
#

数据转换为模拟信号的过程称为调制

调制

对应的在接收端将模拟信号还原为数字信号的过程即解调

调幅 AM
#
调频 FM
#
调相 PM
#
调幅 + 调相 QAM
#
模拟信号的调制
#

最常见的就是音频数字化

脉码调制 PCM
#

通常对用于对音频信号高保真编码, 主要包括:

  1. 抽样 - 对模拟信号周期性扫描
    1. 把时间上连续的信号变成时间上离散的信号
    2. 为了保证不失真, 采样频率 >= 2倍信号最高频率
  2. 量化 - 将抽样的电平振幅值转化为对应的数字量
  3. 编码 - 把量化的结果转换为与之对应的二进制编码

2.1.4 数据交换方式(重点)
#

alt text

电路交换
#

类似于打电话, 双方一旦建立物理通路,便可以实时全双工通信
点对点传输, 在此期间该线路被独占
支持数字和模拟信号

报文交换
#

以报文为传输单位, 长短不一
无需建立连接, 通过中间交换设备存储转发, 无需专用通路
只支持数字信号

分组交换
#

相比报文交换, 主要是限制了数据单位的长度(一般为128B)

数据报方式
#

数据报方式

  1. 源主机 A 将报文分成多个分组,依次发送到直接相连的结点 A
  2. 结点A收到分组后, 进行差错检测和路由选择(不同组路径可能不同)
  3. 结点C收到分组后, 对分组进行差错检测
    1. 若正确, 向A发送确认信息, A收到确认后则丢弃对应分组副本
    2. 若错误, 重发?
  4. 最后依次抵达主机 B

特点:

  1. 为网络层提供无连接服务(不事先确定传输路径, 不同分组独立确定)
  2. 同一报文的不同分组达到目的结点时可能发生乱序, 重复与丢失
  3. 每个分组在传输过程中都必须携带源地址和目的地址, 以及分组号
  4. 分组在交换结点存储转发时, 需排队等候处理, 会带来延迟甚至丢失
  5. 某一节点故障时, 更新转发表即可, 应障能力强
虚电路方式
#

将数据报方式和电路交换方式结合,以发挥两者优点
但这里的电路是虚拟的非物理电路, 即固定的转发路径

特点:

  1. 为网络层提供连接服务。源节点与目的结点之间建立一条逻辑连接
  2. 分组不需携带源地址、目的地址等信息, 开销小
  3. 同一报文的不同分组到达目的结点时不会乱序、重复或丢失
  4. 链路中某个节点出现故障, 则整个虚拟链路故障

2.2 传输介质
#

分为两种:

  1. 导向性传输介质 - 电磁波被导向沿着固体媒介(铜线/光纤)传播
  2. 非导向性传输介质 - 没有固定媒介, 或者说自由空间(空气/水)

导向性传输介质
#

双绞线
#

两根采用一定规则并排绞合(减少电磁干扰)的、相互绝缘的铜导线组成
历史最长也最常用的传输介质, 价格低, 模拟传输和数字传输都适用
通信距离一般为几公里到数十公里, 距离太远时:

  1. 对于模拟传输,要用放大器放大衰减的信号
  2. 对于数字传输,要用中继器将失真的信号整形
同轴电缆
#

相比双绞线抗干扰性更好(有外导体屏蔽层)
50Ω同轴电缆传送基带(数字)信号, 又称为基带同轴电缆(局域网)
75Ω主要用于传送宽带(模拟)信号, 又称为宽带同轴电缆(有线电视)

光纤
#

利用光导纤维传递光脉冲来进行通信(有光脉冲1无0)
可见光的频率大约是 $10^8$MHz, 因此光纤通信带宽远远大于其它方式

单模光纤: 横向传输(直线), 衰减小, 适合远距离传输
多模光纤: 多个不同入射角的光源, 易失真, 适合近距离传输

非导向性传输介质
#

  1. 无线电波 - 任意方向; 穿透强, 远距离传输; 广泛用于通信领域
  2. 微波 - 固定方向; 频率高, 数据率高; 卫星通信
  3. 红外线、激光 - 固定方向;
微波
#
红外线、激光
#

2.3 物理设备
#

中继器
#

对信号进行再生和还原 - 避免信号衰减, 以增加信号传输的距离
适用于完全相同的两类网络的互连,且两个网段速率要相同
点对点传输, 多个线路需要多个中继器

集线器
#

集线器可一次性连接多个机器(星形拓扑), 对信号进行放大转发
不能定向传输, 只能广播
连在集线器上的工作主机平分带宽

3 数据链路层
#

负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数 据报

节点 主机, 路由器等

链路 网络中两个结点之间的物理通道(光纤, 微波等)

数据链路 网络中两个结点之间的逻辑通道(链路 + 协议(硬件+软件))

帧 链路层的协议数据单元,封装网络层数据报

3.1 数据链路层的功能
#

最基本的服务: 将源自网络层数据可靠地传输到相邻节点的网络层

主要作用: 基于物理层提供逻辑上无差错的数据链路(物理层可能出错)

3.1.1 封装成帧
#

在数据的前后部分添加首部和尾部,这样就构成了一个帧
接收端能根据首尾的标记, 从比特流中识别帧的开始和结束

封装成帧的目的:

  1. 帧定界 - 确定帧的界限
  2. 帧同步 - 接收方应能从接收到的二进制比特流中区分出帧的起始和终止
  3. 透明传输

以下为组帧的四种方法(常用比特填充和违规编码法):

字符计数法
#

帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数

字符计数法

由于首部一个字节, 即一帧最多 128 个字符, 因此只能传输 ASCII 码
没有尾部, 因此计数字段不能出错, 否则收发双方会同步失败

字符(节)填充法
#

首部增加一个控制字符(用 SOH - Start of header表示) - 00000001
尾部增加一个控制字符(EOT - End of transmission) - 00000100

字符填充法

对数据中恰好与控制字符相同的序列, 需转义处理(前面加一个字符)

(零)比特填充法
#

与字符计数法相比, 首尾控制字符是一样的

零比特填充法

重合解决方法:

  1. 发送端: 每连续五个1后都加1个0
  2. 接收端: 每发现连续5个1后都删掉后面的 0
违规编码法
#

用物理层所用编码方法不会用到的方式作为起始和终止
曼彻斯特编码为例:
可以用高-高低-低来定界帧的起始和终止

3.1.2 透明传输
#

不管所传数据是什么样的比特组合,都应当能够在链路上传送
例如, 当所传数据中的比特组合恰巧与某一个控制信息完全一样时, 需要处理

3.1.3 可靠传输
#

发送端发送的数据,接收端能准确无误的收到

3.1.4 差错控制(重点)
#

差错来源:

  1. 全局性 - 线路电器特性导致的随机噪声(提升信噪比)
  2. 局部性 - 外部因素如冲击导致的噪声(提升容错-编码)

差错分类:

  1. 位错 - 比特位出错(1变成0)
  2. 帧错 - 丢失/重复/失序
奇偶校验法(检错编码)
#

在原数据末尾添 0 或 1, 使得:

  1. 奇校验 - 使序列中1的个数为奇数
  2. 偶校验 - 使序列中1的个数为偶数
    1100101 采用奇校验, 应该补 1 为 11001011
    但若乱序为 11010011 则检查不出来
    即只能检查出奇/偶数错误, 检错能力 50%
循环冗余校验码-CRC(检错编码)
#

循环冗余校验码

海明码(纠错编码)
#

ref
海明码的原理是把数据拆散后用好几组奇偶校验确定有没有问题

为了保证检错和纠错, 需要在数据中(而非首尾)混入校验码
需要混入校验码的位数计算公式(p-校验码位数; m-数据位数):
$$ 2^p - 1 >= P + m $$ 校验码插在 $2^n$ 次方的位置(如: 1,2,4)

以4比特数据 1010 为例, 计算插入的校验码:

海明码计算冗余数据

即混入校验码后的奇校验海明码为 0110010
检验错误和校验错误的过程:
alt text

扩展知识:

编码的海明距离(码距) - 两个编码比特位不相等的位数
编码集的海明距离(码距) - 任意两个编码的码距的最小值

如编码 101100 的码距为 1
编码集 000,010,100,111的码距为 2
编码集的码距为 n, 支持检测 n -1 位的错误, 纠正 n-2 位的错误

3.1.5 流量控制(重点)
#

较高的发送速度和较低的接收能力的不匹配, 会造成传输出错
数据链路层流量控制手段:接收方收不下就不回复确认

停等(SW)协议
#

每发送完一个帧就停止等待对方的确认, 收到确认后再继续发送

停等协议-无差错情况
如果没收到确认(发送丢失/确认丢失), 一段时间后重传(要求保留副本)
停等协议-有差错情况-ACK丢失

信道利用率($T_D$-发送时间, RTT-往返时间,$T_A$-接收时间)
$$ 利用率 U = \frac{T_D}{T_D + RTT + T_A} $$ 适用: 发送窗口大小=1,接收窗口大小=1
弊端: 信道利用率太低

流水线传输
#

停止等待协议的基础上, 一次性发送多个数据分组

流水线传输

后退 N 帧协议 GBN
#

流水线传输的基础上, 利用发送窗口大小限制可连续发送分组的个数
如用 3 位表示窗口大小, 则编号 0 - 6 的组都可以直接发送:

  1. 窗口长度限制(n位表示): $1 \leq W \leq 2^n-1$
  2. 如果窗口长度为 $2^n$, 假设该窗口全部发送失败重传, 无法识别新帧(下一轮窗口)和旧帧

被确认的帧则移出窗口, 从而可以继续新的发送

发送方特点:

  1. 累计确认(重点) - 对n号帧确认表明收到0-n帧(不用逐帧确认)
  2. 如果出现超时,发送方重传所有已发送但未被确认的帧(回退n帧)

接收方特点:

  1. 如果正确收到n号帧, 并且按序(需下一个按序接收的帧序号), 那么接收方为n帧发送一个ACK, 并将该帧中的数据部分交付给上层
  2. 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK

GBN协议流程

适用: 发送窗口大小>1,接收窗口大小=1
弊端: 重传时必须把原来已经正确传送的数据帧重传,传送效率降低

例题:

例题

选择重传协议 SR
#

GBN 的基础上, 只重传出错的帧
除发送窗口, 添加一个接接收窗口

发送方特点:

  1. 每个帧都有自己的定时器, 一个超时事件发生后只重传一个帧

接收方特点(来者不拒):

  1. 确认接收到的所有帧, 无论是否按序, 并返回确认帧
  2. 直到所有帧(序号更小的帧)都受到了, 才会交付给网络层, 并移动窗口

选择重传协议SR

发送窗口应等于接收窗口, 最大值仍为 $2^{n-1}$
适用: 发送窗口大小>1,接收窗口大小>1

3.1.6 介质访问控制(重点)
#

两种链路/信道:

  1. 点对点 - 直连, 中间没有别的节点, 适用广域网(PPP)
  2. 广播 - 分总线形, 星形; 适用局域网

信道划分介质访问控制: 在广播链路中, 将每个设备的通信隔离开(避免冲突), 把时域和频域资源合理地分配给网络上的设备

静态划分信道
#

多路复用: 多个信号组合在一个物理信道上传输

多路复用

频分多路复用 FDM
#

将带宽(hz范围)分段, 每个设备使用特定的频率带宽

时分多路复用 TDM
#

交替使用信道, 使用时长称为时分复用帧(TDM帧)

为了避免时间片空转浪费, 还提出了统计时分复用 STDM:

  1. 各信道先发往集中器的输入缓存, 然后从缓存发出
  2. STDM 帧按需动态分配时隙
波分多路复用 WDM
#

光的频分多路复用(根据光的波长不同)

码分多路复用 CDM
#
动态分配信道-随机访问
#

所有用户可随机发送信息, 发送信息时占全部带宽

ALOHA 协议
#

想发就发, 冲突了(随机时间后)再重发

时隙 ALOHA: 时间分片, 若冲突必须等到下个时间片

CSMA 载波侦听多路访问协议
#

CS:载波侦听 - 每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据(例如通过电压)
MA 多点接入 - 表示许多计算机以多点接入的方式连接在一根总线上

发送帧之前, 监听信道:

  1. 信道空闲:
    1. 坚持 CSMA - 发送完整帧
    2. 非坚持 CSMA - 发送完整帧
    3. p-坚持 CSMA - p概率直接发送; (1-p)概率下个时隙再发送
  2. 信道忙:推迟发送
    1. 坚持 CSMA - 持续监听, 直到信道空闲马上传输
    2. 非坚持 CSMA - 等待一个随机的时间之后再进行监听
    3. p-坚持 CSMA - 持续监听, 信道空闲后 p 概率发送
CSMA/CD 载波侦听多路访问/碰撞检测协议(重点?)
#

基于 CSMA基本思路(先听再说), 检测冲突; 主要用于总线式以太网

CSMA/CD 即发送前和发送中都检查是否有其他设备在发送数据
TODO

CSMA/CA 载波侦听多路访问/碰撞避免协议
#

基于 CSMA基本思路(先听再说), 避免冲突; 主要用于无线局域网

发送帧之前, 监听信道:

  1. 信道空闲:发出 RTS(Request to send), 包括地址, 持续发送时间等
    1. 接收端收到 RTS, 响应 CTS(Clear to send)
    2. 发送端收到CTS后,开始发送数据帧(同时预约信道)
    3. 接收端收到数据帧后
  2. 信道忙:推迟发送
    TODO
动态分配信道-轮询访问
#
轮询协议
#

主结点轮流“邀请”从属结点发送数据
问题:1.轮询开销 2.等待延迟 3.单点故障

令牌传递协议
#

应用于物理星型拓扑,逻辑环形拓扑中:
令牌(特殊格式的控制帧)可以确保同时刻只有一个节点独占信道一定时间

总结
#

总结

3.2 应用
#

3.2.1 局域网
#

LAN - Local Area Network, 使用广播信道
决定局域网的主要要素为: 网络拓扑, 传输介质, 介质访问控制方法

局域网拓扑结构
#

拓扑结构

综合考虑总线型拓扑最佳, 使用最多

局域网传输介质
#
  1. 有线局域网: 双绞线, 同轴电缆, 光纤
  2. 无线局域网: 电磁波
局域网介质访问控制方法
#
  1. CSMA/CD - 常用于总线型局域网,也用于树型网络
  2. 令牌总线 - 常用于总线型局域网,也用于树型网络
    1. 它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
  3. 令牌环 用于环形局域网,如令牌环网
局域网分类
#
  1. 以太网 - 应用最为广泛的局域网
  2. 令牌环网
    1. 逻辑上环形拓扑结构, 物理上星形拓扑
  3. FDDI 网
  4. ATM 网
  5. 无线局域网(WLAN) - IEEE 802.11 标准
以太网(重点)
#

以太网的两个标准:

  1. DIX Ethernet V2(初代)
  2. IEEE 802.3(现行)

以太网的重要特性:

  1. 以太网提供无连接、不可靠的服务
    1. 无连接:发送方和接收方之间无“握手过程”
    2. 不可靠:不对发送方的数据帧编号, 接收方不向发送方进行确认, 差错帧直接丢弃, 差错纠正由高层负责
  2. 使用集线器 - 逻辑上总线型, 物理上星形
  3. 使用 CSMA/CD 介质控制协议
  4. 采用曼彻斯特编码
以太网的传输介质和网卡
#

一些以太网规格和对应的介质和拓扑结构:

  1. 10BASE5 - 同轴电缆; 总线型
  2. 10BASE2 - 同轴电缆; 总线型
  3. 10BASE-T - 非屏蔽双绞线; 星形
  4. 10BASE-FL - 光纤对; 点对点
    其中:
  5. 第一部分: BASE 前代表数据率(Mb/s)
  6. 第二部分: BASE 指基带传输, 信号为数字信号, 采用曼彻斯特编码
  7. 第三部分:
    1. 字母 - 表示传输介质(T-双绞线, F-光纤)
    2. 数字 - 最大传输距离(单个段长, 可通过集线器连接多个段)

计算机和局域网通过网络适配器(网卡)连接:

  1. 网卡与局域网通过介质(同轴电缆/双绞线..)串行通信
  2. 网卡和计算机通过I/O总线并行通信
    每块网卡出场时都会有一个唯一的地址, 称为 MAC (介质访问控制)地址
    网卡工作在物理层
以太网的 MAC 帧
#

MAC 地址有 6 个字节, 前 24 位为厂商代码, 低 24 位由厂商自行分配

MAC 帧格式(IEEE 802.2):

MAC

  1. 以太网使用的曼彻斯特编码自带电平变化, 帧结尾不需要定界符
高速以太网
#

速率不低于 100Mb/s 的以太网称为高速以太网

  1. 100BASE-T 以太网
  2. 吉比特(GB)以太网
  3. 10吉比特以太网(只支持全双工, 因此没有冲突问题)
IEEE 802
#

IEEE 802 标准将数据链路层划分为:

  1. 逻辑链路层(LLC子层) - 识别网络层协议并封装(屏蔽网络层差异)
  2. 介质访问控制(MAC子层) - 屏蔽了不同物理链路种类的差异性
    1. 括数据帧的封装/卸装
    2. 帧的寻址和识别, 帧的接收与发送
    3. 链路的管理,帧的差错控制等
IEEE 802.11
#

无线局域网的通用标准, 包括 802.11a/b/g/n

802.11的MAC帧头格式

802.11的MAC帧头格式

3.2.3 广域网(重点)
#

广域网注重共享, 局域网注重数据传输, 因特网是最大的广域网

广域网图示

PPP 点对点协议
#

是目前使用最广泛的数据链路层协议(拨号上网)
只支持全双工链路
无序号和确认机制, 不可靠传输

三个组成部分(主要功能):

  1. 一个将IP数据报封装到串行链路(同步串行/异步串行)的方法
  2. 链路控制协议LCP:建立并维护数据链路连接(身份验证)
  3. .网络控制协议NCP:PPP可支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接

面向字节, 使用零比特填充法或字符填充

HDLC 高级数据链路控制协议
#

只支持全双工链路
有序号和确认机制, 可靠传输(因此速度较慢, 使用较少)

  • 数据链路层实现可靠传输较奢侈, 应着重于最大交付
  • 可靠传输交由网络层 TCP 协议实现
    面向比特, 采用零比特填充法(每5个0插入一个1)

3.3 设备
#

冲突域 同一时间内域内只有一个机器能够通信
广播域 网络中能收到任意设备发出广播设备的集合

物理层有中继器和集线器, 不能隔离冲突与和广播域
链路层有网桥和交换机, 可以隔离冲突域, 不能隔离广播域
网络层有路由器, 都可以隔离

3.3.1 网桥
#

网段 一个计算机网络中使用同一物理层设备能够直接通讯的部分

网桥根据 MAC 帧目的地址对帧进行转发和过滤

网桥

透明网桥
#

以太网上的站点并不知道所发送的帧将经过哪几个网桥
即插即用, 自学习, 广播的过程中逐渐完善转发表

源路由网桥
#

源站以广播方式探索路径(发现帧), 从中选择最佳方案
在发送帧时, 把详细的最佳路由信息(路由最少/时间最短)放在帧首部中

3.3.2 交换机
#

和网桥原理一致, 属于多接口网桥
每个端口都能独占全部带宽

直通式交换器
#

查完目的地址(MAC地址, 6字节)就立刻转发
延迟小, 可靠性低, 无法支持具有不同速率的端口的交换

存储转发式交换机
#

将帧放入高速缓存, 并检查否正确, 正确则转发, 错误则丢弃
延迟大,可靠性高,可以支持具有不同速率的端口的交换
主流使用

4 网络层(核心重点)
#

在网络与网络之间进行路由选择和分组转发, 传输单位是数据报

4.1 功能
#

4.1.1 异构网络互联
#

网络层通过路由器将多个计算机网络互联(物理层和数据链路层属于扩大)

4.1.2 路由选择与分组转发
#

寻找最佳路径

4.1.3 拥塞控制
#

4.2 路由算法
#

分为两大类:

  1. 静态路由(非自适应) - 手工配置路由表
  2. 动态路由(自适应) - 路由器通信过程中不断优化完善路由表

常用的动态路由算法

4.2.1 距离-向量路由算法
#

原理: 所有结点都定期地将其整个路由选择表传送给其所有相邻结点
路由选择表内容:

  1. 每条路径的目的地
  2. 路径的代价(距离)

更新路由表的条件:

  1. 被通告一条新的路由, 本地系统加入这条新的路由
  2. 被通告一条已有的路由, 但有更小的代价

最常见的实现是 RIP 算法, 采用跳数(中转次数)作为路径距离

4.2.2 链路状态路由算法
#

原理:

  1. 每个结点都具有完全的网络拓扑信息
  2. 主动测试所有邻接结点的状态
  3. 定期地将链路状态传播给所有其他结点

4.2.3 层次路由
#

适用于大规模自治系统

4.3 IPv4(核心重点)
#

即 IP 协议第4版, 包括:

  1. 定义数据传送的基本单元 - IP分组, 及其确切的数据格式
  2. 一套规则, 指明分组如何处理、错误怎样控制
  3. 非可靠投递的思想, 以及与此关联的分组路由选择的思想

4.3.1 IPV4 分组
#

IPV4分组格式(重点)
#

IPV4数据报格式

其中各字段含义:

  1. 首部长度: 占4位, 单位为4B; 常用20B, 最大60B(15*4B)
  2. 总长度: 占16位, 单位为1B; 即指首部与数据最大长度65535B
  3. 分片相关:
    1. 标识: 占16位, 用于保证分片能够正确组装称为原来的数据报
    2. 标志: 占3位,
      1. 最低位 MF(More fragment) - 为1代表进行了分片
      2. 中间位 DF(Don’t fragment) - 为0时才可以进行分片
    3. 片偏移: 占13位, 单位为8B; 分片后在原分组中的相对位置
  4. 生存时间TTL: 占8位, 每次路由转发 -1, 保证不会在网络中循环
IP数据报分片
#

最大传送单元(MTU) - 一个链路层数据报能承载的最大数据量

  1. 以太网 - 1500B
  2. 广域网 - 一般不超过 576B

因此 IP 数据报总长度超过链路层 MTU 时, 需要分片
分片会在目的地进行组装,不会在中间路由处进行组装

网络层转发分组的流程
#
  1. 提取目的主机的IP地址
  2. 网络与路由器相联则直接交付; 否则根据路由表进行转发交付
  3. 若找不到目标路由就发送给默认路由
  4. 如果最后没有转发成功,就报告转发分组出错

4.3.2 IPV4 地址
#

连接到因特网上的每台主机(路由器)都分配一个4B的全球唯一标识符
网络号主机号两级组成, 根据两者情况分为五类:

五类IP地址

特殊地址:

  1. 主机号全为1表示本网络的广播地址,如202.98.174.255
  2. 主机号全为0表示本网络本身,如202.98.174.0
  3. 127.0.0.0保留为环路自检地址, 不会作为IP数据报目的地址
  4. 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址
    1. 由于路由器对广播域的隔离, 等效为本网络的广播地址
  5. 32位全为0,即0.0.0.0表示本网络上的本主机

4.3.3 网络地址转换(NAT)
#

原理: 将内网地址转换为公网地址, 局域网内所有设备公用1个IP即可
既节省了 IP 地址, 又隐藏了内部网络结构, 降低安全风险

4.3.4 IPv4 地址的三种编址方式(重点)
#

子网划分
#

目的: C类地址一个子网有 255 个地址, 仍然可以进一步细化
原理: 两级IP地址变成了三级IP地址
实现思想:

  1. 子网划分纯属一个局域网内部概念, 对外仍表现为两级IP地址
  2. 从主机号借用若干比特作为子网号
  3. IP地址格式: 网络号, 子网号, 主机号
  4. IP数据包数据流向: 本网络上的路由器 => 目的子网 => 目的主机

注意事项:

  1. 主机位全0全1需要保留, 因此划分后的主机号可用数量是 2^n - 2
  2. 145.12.23.64/26, 其中26表示网络号长度
子网掩码
#

目的: 确定网络号的位数
使用子网掩码来表达对原网络中主机号的借位
与 IP 地址等长, 逐位与运算后得出相应子网的网络地址, 即:

  1. 网络位全为 1
  2. 主机位全为 0

例如 A 类地址的默认掩码就是 255, 0, 0, 0 例如:

  1. 各类 IP 地址的默认子网掩码:
    1. A类: 255.0.0.0
    2. B类: 255.255.0.0
    3. C类: 255.255.255.0
  2. 26 位网络位, 6 位主机位的子网掩码 255.255.255.192

使用规则:

  1. 一台主机在设置IP地址的同时必须设置子网掩码(否则默认)
  2. 同属于一个子网的所有设备, 必须设置相同的子网掩码
  3. 路由表中必须包含有目的网络地址,子网掩码,下一跳地址

例题

例题1:

例题1

无分类域间路由选择(CIDR)
#

消除网络号(+子网号) + 主机号这样的分类地址概念
统一采用 网络前缀 + 主机号 的格式(类似可变长子网掩码)
把网络前缀都相同的连续的IP地址组成一个"CIDR地址块"(路由聚合)
前缀越长,地址块越小,路由越具体,路由选择信息交换越少,网络性能越高

  • 因此, 路由表有多个匹配结果时, 应选择具有最长网络前缀的路由

4.3.5 IP地址与硬件地址
#

IP地址是网络层使用的地址,它是分层次等级的
硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的
数据链路层看不见数据报分组中的IP地址

简要关系:

  1. 网络层中的路由器相互传输时使用IP地址(IP数据报首部)
  2. 到达目标网络后, 使用MAC地址(MAC帧首部)查找目标物理主机

路由器有: 多个 IP 地址; 多个硬件地址

4.3.6 地址解析协议(ARP)
#

作用: 实现IP地址到MAC地址的映射(工作在网络层)
ARP 表: (主机)缓存已经映射过的 IP 和 MAC 地址

典型场景:

  1. 发送方是主机; 发到本网络另一主机; 用 ARP 找到目标硬件地址
  2. 发送方是主机; 发到其它网络另一主机; 用 ARP 找到本网络路由器硬件地址, 剩下的工作由路由器完成
  3. 发送方是路由器时; 发到本网络另一主机; 这时用ARP找到目标硬件地址

4.3.7 动态主机配置协议(DHCP)
#

作用: 给主机动态地分配IP地址(工作在应用层, 基于 UDP)

实现过程:

  1. DHCP客户机广播DHCP发现消息,试图找到网络中的DHCP服务器
  2. DHCP服务器收到后, 向网络中广播DHCP提供消息(包括客户机IP地址和相关配置信息)
  3. DHCP客户机收到后, 广播DHCP请求消息, 请求提供IP地址
  4. DHCP服务器广播DHCP确认消息,将IP地址分配给DHCP客户机

需要注意的是该 IP 地址是临时的, 即存在租用期

4.3.8 网际控制报文协议(ICMP)
#

作用: 提高IP数据报交付成功的机会, 让主机/路由器报告异常情况(网络层)
分为两种(用节点指代路由器或主机):

ICMP 差错报告报文
#

主要用于向源主机报告异常, 大概分为:

  1. 终点不可达: 节点不能交付数据报时发送
  2. 源点抑制: 节点拥塞丢弃数据报时发送, 通知源点降低发送速率
  3. 时间超过: 节点收到TTL为零的数据报时, 丢弃并发送
  4. 参数问题: 节点收到数据报的首部有字段值错误时, 丢弃并发送
  5. 改变路由(重定向): 路由器把改变路由报文发送给主机, 让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)

不应发送ICMP差错报告报文的场景:

  1. 不嵌套 - 对 ICMP 差错报文异常不继续发送
  2. 不重复 - 第一个分片报文的后续分片补重复发送
  3. 特殊地址不发送 - 组播地址; 自检地址; 全0(本网络地址)
ICMP 询问报文
#

前两类最常用, 其它了解即可:

  1. 回送请求和回答报文(PING命令 - 测试两台主机之间的连通性)
  2. 时间戳请求和回答报文(用来进行时钟同步和测量时间)
  3. 掩码地址请求和回答报文
  4. 路由器询问和通告报文

4.4 Ipv6
#

作用: 根本性缓解地址耗尽问题(NAT和CIDR只能缓解)

Ipv6 特点
#

核心措施是地址长度从 32 位增大到了 128 位, 其他重点改动:

  1. 移除IPv4的校验和字段, 减少每跳的处理时间
  2. 可选字段移出首部改为扩展首部, 更灵活且无需检查, 提高效率
  3. 支持即插即用(自动配置), 不需要DHCP协议
  4. 首部长度必须是8B的整数倍,IPv4首部是4B的整数倍
  5. IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
  6. 身份验证和保密, 是 IPv6的关键特征

IPV6数据报格式:

IPV6数据报格式

Ipv6 地址
#

目的地址有三种基本类型地址:

  1. 单播: 点对点通信
  2. 多播: 点对多点通信, 分组被交付到分组的每台计算机
  3. 任播(Ipv6新增): 目的站是一组计算机, 交付到任一台(常取最近)即可

写法:

  1. 一般形式(冒号十六进制记法): 4BF5:0000:0000:0000:BA5F:039A:000A:2176
  2. 压缩形式
    1. 常规压缩: 4BF5:0:0:0:BA5F:39A:A:2176
    2. 零压缩(双冒号法): FF05:0:0:0:0:0:0:B3 压缩为 FF05::B3

IPv4 向 Ipv6 过渡
#

两种方案:

  1. 双协议栈 - 一台设备同时装有IPv4和IPv6协议栈
  2. 隧道技术 - 将IPv6数据报封装到IPv4数据报的数据部分

4.5 路由协议
#

4.5.1 自治系统(AS)
#

自治系统(Autonomous System) - 单一技术管理下的一组路由器(如学校/公司)

4.5.2 域内路由与域间路由
#

内部网关协议(IGP)
#

即自治系统内部使用的路由选择协议(域内路由选择)
目前该路由选择协议使用得最多,如 RIP 和 OSPF

外部网关协议(EGP)
#

即自治系统之间使用的路由选择协议(域间路由选择)
目前使用最多的外部网关协议是BGP-4

4.5.3 路由信息协议(RIP)
#

内部网关协议(IGP)中最先得到广泛应用的协议, 最简单

实现:

  1. 每个路由器维护自身到其它网络的距离(这组距离称为距离向量)
  2. 距离即跳数, 每经过一个路由器跳数加 1 (一个网络内跳数为1)
  3. 最多允许15跳,超过15跳即为不可达
    1. 规定最高跳数为了防止形成环路, 减少网络拥塞
    2. 只适用小型互联网
  4. RIP协议中每个网络的子网掩码必须相同

特点:

  1. 仅和相邻路由器交换信息
  2. 交换信息是当前路由器的路由表(网络越大开销越大)
  3. 每隔 30 秒交换路由信息

网络故障时, 会出现慢收敛现象(需较长时间将此信息传送到所有路由器)

4.5.4 开放最短路径优先协议(OSPF)
#

洪泛法 每个节点都用广播转发收到的数据分组,重复则丢弃(配合TTL)

同属内部网关协议, 相对 RIP 实现上的区别:

  1. 使用洪泛法向本自治系统中的所有路由器发送信息
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态
  3. 只有当链路状态发生变化时, 才发送信息, 更新过程收敛快
  4. 网络层协议, 直接用 IP 数据报传送(RIP 应用层协议, 使用UDP)

特点:

  1. 可(根据业务)灵活设置代价
  2. 负载平衡: 如果目的网络有多条代价相同路径, 可以分配给这几条路径
  3. 使用 Dijkstra 算法计算最优路径, 只有到了下一跳才知道后面怎么走

OSPF 五种分组(报文类型):

  1. 问候分组: 发现和维持邻站的可达性
  2. 数据库描述分组: 向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 链路状态请求分组: 向对方请求发送某些链路状态项目的详细信息
  4. 链路状态更新分组: 用洪泛法对全网更新链路状态
  5. 链路状态确认分组: 对链路更新分组的确认

4.5.5 边界网关协议(BGP)
#

属于外部网关协议, 常用于互联网的网关协议, 应用层协议(TCP)

工作原理:

  1. 每个自治系统的管理员选择至少一个路由器作为该系统的"发言人"
  2. 一个BGP发言人与其他系统中的发言人要交换路由信息
    1. 先建立TCP连接
    2. 再利用BGP会话交换路由信息
  3. 所有BGP发言人都相互交换网络可达性的信息后, 各BGP发言人就可找出到达各个自治系统的较好路径

特点:

  1. 交换节点是自治系统的发言人(边界路由器), 数量少, 高效
  2. 支持 CIDR
  3. 首次运行交换整个 BGP 路由表, 后续渐进更新即可

BGP 四种报文类型:

  1. 打开: 与相邻的另一个BGP发言人建立关系
  2. 更新: 发送某一路由的信息, 或列出要撤销的多条路由
  3. 保活: 确认打开报文并周期性地证实邻站关系
  4. 通知: 发送检测到的差错

4.5.6 RIP, OSPF, BGP 对比总结
#

RIP, OSPF, BGP 对比总结

4.6 IP 组播
#

4.6.1 组播
#

定义: 源计算机发送单个分组可以抵达用一个组地址标识的多个主机
适用如视频点播或视频会议的场景(虽然可以用多个单播模拟, 但开销大)
组播仅应用于 UDP

IP组播也使用组播组的概念, 每个组都有一个特别分配的地址

实现过程:

  1. 主机使用一个称为IGMP(因特网组管理协议)的协议加入组播组
  2. 使用该协议通知本地网络上的路由器, 要接收发送给组播组的报文的请求
  3. 扩展路由器的路由选择和转发功能 - 组播路由器

4.6.2 IP 组播地址
#

IP组播使用D类地址格式(前四位1110), 每个 D 类 IP 地址标志一个组播组

组播数据报特点:

  1. 也是尽最大努力交付, 不提供可靠交付
  2. 组播地址只能用于目的地址, 而不能用于源地址
  3. 不产生 ICMP 差错报文(也不响应 PING)
  4. 并非所有的D类地址都可作为组播地址

4.6.3 IGMP与组播路由算法
#

作用: 使使路由器知道组播组成员的信息
是是 TCP/IP 协议的一部分

工作分两个阶段:

  1. 第一阶段
    1. 主机加入新的组播组时, 向该组发送IGMP报文, 表明要成为分组成员
    2. 本地组播路由器收到IGMP报文后, 将组成员关系转发给因特网上其他组播路由器
  2. 第二阶段
    1. 本地组播路由器周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员
    2. 只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的
    3. 一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器

4.7 移动 IP
#

移动 IP 为移动主机设置了两个 IP 地址: 主地址和转交地址
移动主机在本地网络使用主地址, 按传统 TCP/IP 方式通信
移动到另外一个网络时, 需要获得一个临时的辅地址
从外网回到本地网时, 辅地址改变或撤销, 主地址保持不变

4.8 网络层设备
#

网络层设备即路由器, 可以隔离广播域

路由器的组成和功能
#

路由器的任务: 连接不同的网络(包括异构网络)并完成路由转发

工作过程:

  1. 源主机和目标主机在同一个网络上, 直接交付而无须通过路由器
  2. 否则路由器按照转发表将数据报转发给下一个路由器, 即间接交付

路由表于路由转发
#

路由表功能:实现路由选择

路由表结构:

  1. 目的网络IP地址
  2. 子网掩码
  3. 下一跳 IP 地址
  4. 接口

5 传输层
#

主机才有的层次, 使用网络层服务, 为应用层提供通信服务

5.1 概述
#

传输层功能
#

  1. 提供进程和进程之间的逻辑通信
  2. 复用和分用
    1. 复用: 应用层进程都可以通过传输层再传输到网络层
    2. 分用: 传输层从网络层收到数据后交付指明的应用进程
  3. 对收到的报文进行差错检测, 包括首部和数据部分(IP只检验首部)
  4. 提供 TCP/UDP 两种协议

传输层的寻址与端口
#

端口是传输层的服务访问点(SAP), 用于标识主机中的应用进程
端口号长度为16bit,能表示65536个不同的端口号

端口号按范围可以分为:

  1. 服务端端口号
    1. 熟知端口号(0 - 1023) - 给 TCP/IP最重要的一些应用程序(官方内置)
      1. FTP(21)
      2. HTTP(80) - 超文本传输协议(浏览器服务)
    2. 登记端口号(1024 - 49151) - 给别的应用程序预留
  2. 客户端端口号(49192-45535) - 客户进程动态使用/释放

网络中采用发送方和接收方的套接字组合来识别端点
套接字唯一标识了网络中一个主机和其进程: 主机IP, 端口号

5.2 UDP 协议
#

在网络层 IP 服务基础上增加了复用分用和差错检测功能

概述
#

UDP 特点:

  1. 无须建立连接
    1. 不会有建立连接的时延
    2. 不需要维护连接状态, 能支持更多的活动客户机
  2. 使用最大努力交付, 即不保证可靠交付
  3. 无拥塞控制,适合很多实时应用
  4. UDP首部开销小 8B (TCP20B)

UDP 数据报
#

UDP 面向报文, 即报文为最小传输单位, 适合一次传输少量数据

UDP报文传输

首部格式(重点)
#

UDP首部格式(首部占 8B):

UDP首部格式

其中:

  1. 源端口号可有可无(全0), 期望收到对方回复时才需要
  2. 分用时, 若找不到对应的目的端口号, 就丢弃报文并发送ICMP端口不可达

UDP 校验
#

UDP的校验和只检查首部和数据部分

UDP校验

其中伪首部为用于计算检验和的临时数据, 不参与传输

校验和的生成和验证过程:

校验和的生成和验证过程
在发送端(传输层):

  1. 填上伪首部
  2. 全0填充检验和字段
  3. 全0填充数据部分(保证4B整数倍)
  4. 伪首部+首部+数据部分, 采用二进制反码求和
  5. 和再求反码填入检验和字段
  6. 去掉伪首部,发送
    在接收端:
  7. 填上伪首部
  8. 伪首部+首部+数据部分采用二进制反码求和(首部校验和已经有值了)
  9. 全国全为 1 则无差错; 否则丢弃

5.3 TCP 协议(核心重点)
#

5.3.1 特点
#

  1. 面向连接(虚连接)的传输层协议
  2. 每一条TCP连接只能有两个端点(点对点)
  3. 提供可靠交付的服务, 无差错/丢失/重复/乱序
  4. 提供全双工通信(需要增加发送缓存和接收缓存)
  5. 面向字节流 - (不管应用层数据怎样)按字节传输没有固定结构

5.3.2 TCP 报文段(重点)
#

UDP首部格式(首部占 20B):

TCP 报文结构

其中:

  1. 序号(seq):一个TCP连接中传送的字节流中的每一个字节都按顺序编号, 本字段表示本报文段所发送数据的第一个字节的序号
  2. 确认号(ack):期望收到对方下一个报文段的第一个数据字节的序号, 若确认号为N, 则证明到序号N-1为止的所有数据都已正确收到
  3. 数据偏移(首部长度): TCP报文段的数据起始处距离TCP报文段的起始处有多远, 以4B位单位
  4. 6 个控制位
    1. 紧急位(URG): URG=1时, 紧急指针字段有效表明报文中存在紧急数据, 需要尽快传送, 需配合使用
    2. 确认位(ACK): ACK=1时, 确认号(ack)有效, 连接建立后所有传送的报文段都必须把ACK置为1
    3. 推送位(PSH): PSH=1时, 接收方应该尽快将数据交付给进程(不等缓存满)
    4. 复位(RST): RST=1时, 表明连接出现异常, 需要释放并重新建立连接
    5. 同步位(SYN): SYN=1时, 表明是一个连接请求/连接接受报文
    6. 终止位(FIN): FIN=1时,表明此报文段发送方数据已发完,要求释放连接
  5. 窗口: 发送本报文段的一方的接收窗口(方便对方回复时避免接收不下)
  6. 检验和: 检验首部+数据
  7. 紧急指针: 指出本报文段中紧急数据的字节数(从1-n个字节为紧急), URG = 1 时才会生效
  8. 选项: 最大报文长度/时间戳等等
  9. 填充: 填 0 凑 4B 整数倍

5.3.3 TCP 连接管理
#

连接的三个阶段:

  1. 连接建立
  2. 数据传送
  3. 连接释放
连接建立(三次握手)
#

三次握手建立连接的过程:

三次握手过程

重点考察三次握手中请求报文端的控制位状态

  1. 第一次: 客户端发送连接请求报文段, 无应用层数据
    • SYN = 1, seq = x(x取随机数)
  2. 第二次: 服务器端为该TCP连接分配缓存和变量, 并向客户端返回确认报文段, 允许连接, 无应用层数据
    • SYN=1, ACK=1, seq=y(随机), ack=x+1
  3. 第三次: 客户端为该TCP连接分配缓存和变量, 并向服务器端返回确认的确认, 可以携带数据
    • SYN=0, ACK=1, seq=x+1, ack=y+1
SYN洪泛攻击
#

连接建立阶段, 发生在第一次握手阶段, 攻击者发送 SYN
服务器返回 ACK 后, 该攻击者就不对其进行再确认
则 TCP 连接处于挂起状态, 即半连接状态
服务器收不到确认还会重复发送 ACK 给攻击者, 持续占用服务器资源
攻击者大量进行这种操作时, 大量挂起的 TCP 连接消耗 CPU 和内存导致死机

连接释放
#

连接释放

四次握手过程:

  1. 客户端发送连接释放报文段, 停止发送数据, 主动关闭TCP连接
    • FIN=1, seq=u
  2. 服务器端回送一个确认报文段, 半关闭状态(服务器仍可发送数据)
    • ACK=1, seq=v, ack=u+1
  3. 服务器端发完数据, 发出连接释放报文段, 主动关闭TCP连接
    • FIN=1, ACK=1, seq=w, ack=u+1
  4. 客户端回送一个确认报文段, 再等到时间等待计时器设置的2MSL(最长报文段寿命)后, 连接彻底关闭
    • ACK=1, seq=u+1, ack=w+1

5.3.5 TCP 可靠传输
#

可靠传输: 保证接收方进程从缓存区读出的字节流与发送方发出的字节流一致

可靠传输机制:

  1. 校验 - 这一步与UDP校验类似(伪首部)
  2. 序号 - 即 seq 字段, 对每个字节数据进行编号
  3. 确认 - 即 ack 字段, 表达期待收到的下个字节(ack+1)
    1. 收到确认后, 发送方可以删除确认部分的缓存
    2. 考虑 ack 丢失的情况, 采用累计确认
    3. ack 报文也可以捎带数据
  4. 重传 - 发送方一直没有收到 ack 会超时重传
    1. 重传时间采用自适应算法, 根据报文段的往返时间(RTT)加权计算
    2. 快速重传(冗余ACK) - 在超时时间前完成重传的技术
      1. 每当有比期望序号大的失序报文段到达时, 额外发送一个冗余 ack
      2. 发送方收到 3 个冗余 ack 后即认定丢失并重传

5.3.6 TCP 流量控制(重点)
#

使发送方减慢速度以便接收方来得及接受
TCP 利用滑动窗口机制实现流量控制:

  1. 接收方根据自己接收缓存的大小, 动态调整发送方的发送窗口大小
  2. 发送方的发送窗口取接收窗口(rwnd)和拥塞窗口(cwnd)的最小值

TCP流量控制

与数据链路层流量控制的区别:

  1. TCP 属于传输层对端到端的流量控制; 链路层是两个相邻节点的流量控制
  2. TCP 滑动窗口可以动态变化; 链路层滑动窗口不能变化

5.3.7 TCP 拥塞控制(重点)
#

产生拥塞的条件: 资源需求的总和 > 可用资源(越用越堵)
拥塞控制的原理: 防止过多数据注入到网络中(与流量控制的区别是局部点对点和全局)

拥塞窗口(cwnd): 发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量

分为四种算法, 两两组合使用(暂时不考虑发送窗口大小):

慢开始-拥塞避免
#

慢开始:

  1. 初始令拥塞窗口 cwnd = 1(取 MSS 最大报文段长度)
  2. 每经过一个传输轮次(即往返时间RTT), cwnd 加倍(指数增大)
  3. cwnd 达到慢开始门限(ssthresh)后, 改用拥塞避免算法
    拥塞避免:
  4. 拥塞窗口每个 RTT 后加一(加法增大)
  5. 出现超时(网络拥塞)后
    1. 令慢开始门限为当前 cwnd 的一半(乘法减小)
    2. 令 cwnd 为 1
      慢开始-拥塞避免
快重传-快恢复
#

快重传可参考TCP 流量控制-冗余ACK
快恢复:

  1. 发送端收到连续三个冗余ACK时,执行"乘法减小"算法
  2. 把 cwnd 的值设置为慢开始门限 ssthresh 改变后的数值
  3. 开始执行拥塞避免算法(加法增大)
    快重传-快恢复

6 应用层
#

对应用程序的通信提供服务

6.1 网络应用模型
#

客户/服务器模型(C/S模型)
#

服务器:提供计算服务的设备, 保持在线
客户机:请求计算服务的主机, 与服务器通信, 不与其它客户机直接通信

P2P模型
#

每个主机既可以提供服务,也可以请求服务
任意端系统/节点之间可以直接通讯
节点间歇性接入网络

6.2 域名解析系统-DNS(重点)
#

作用: 将域名解析成IP地址
运行在 UDP 之上, 使用 53 号端口

层次域名空间
#

域名规则:

  1. 英文不区分大小写
  2. 除连字符(-)外不能使用其他的标点符号
  3. 每段(标号)标号不超过 63 个字符, 整体不超过 255 个字符
  4. 级别最低的域名写在最左边, 级别最高的顶级域名写在最右边

顶级域名分类:

  1. 国家顶级域名(nTLD): 如 .cn,.us,.uk
  2. 通用顶级域名(gTLD): 如 .com(公司), .net(网络机构), org, gov
  3. 基础结构域名

域名服务器
#

成一个联机分布式的数据库系统, 并采用 CS 模型, 分为:

  1. 根域名服务器: 最高层次的域名服务器, 知道所有的顶级域名服务器的IP地址
  2. 顶级域名服务器: 负责管理在该顶级域名服务器注册的所有二级域名
    1. 收到DNS查询请求时, 若记录了则直接给出 ip 地址
    2. 否则给出下一步查找的域名服务器地址
  3. 授权域名服务器(权限域名服务器) - 负责一个区的域名服务器
  4. 本地域名服务器 - 主机首先查询的服务器(公司/学校)

域名解析过程
#

两种查询:

两种查询

其中缓存可以提升DNS的查询效率(但域名和IP映射是有时效的, 因此会定时丢弃)

6.3 文件传输协议-FTP(重点)
#

提供不同种类主机系统(硬/软体系不同)之间的文件传输能力, 采用 CS 模型:

采用 TCP 协议实现可靠传输, 包括:

  1. 控制连接(始终保持)
  2. 数据两个连接(仅传输文件期间打开)
    1. 主动方式: 服务端指定端口号, 使用 20 端口
    2. 被动方式: 向客户端查询端口号, 双方协商(端口号 > 1024)
      FTP工作原理

6.4 电子邮件协议
#

主要组成:

  1. 用户代理(UA) - 用户与电子邮件系统的接口(如邮箱客户端/网页版)
  2. 邮件服务器 - 发送和接收邮件, 向用户回报发送情况
    1. 分为发送方服务器和接受方服务器
    2. 可能是同一家, 也可能不同(例如qq邮箱发给网易邮箱)
  3. 邮件发送协议和读取协议(SMTP/POP3)
SMTP 协议
#

采用 C/S 模型, 采用 TCP 连接(端口号 25)

收发过程(以下用发送/接收方指代对应的发送/接收方服务器):

  1. 发信人通过 UA 生成邮件, UA 使用 SMTP 发送给发送方服务器
  2. 发送方将邮件放入邮件缓存队列中, 等待发送
  3. 发送方的SMTP客户进程发现缓存中存在待发送邮件, 向接收方的SMTP服务器进程发起建立TCP连接
  4. TCP 连接建立后即发送邮件, 随后关闭
  5. 接收方的SMTP服务器进程将邮件放入放入用户信箱
  6. 收信人通过 UA 使用 POP3/IMAP 协议从邮件服务器上的用户信箱取回

SMTP的缺点:

  1. 不能传送可执行文件或者其他二进制对象
  2. 仅限于传送7位ASCII码, 不能传送其他非英语国家的文字
  3. SMTP 服务器会拒绝超过一定长度的邮件

可用MIME(多用途网际邮件扩充)扩充支持多种语言, 附件等:

MIME

POP3 协议(邮局协议)
#

采用 C/S 模型, 采用 TCP 连接(端口号 110)

IMAP 协议
#

IMAP 支持用户查看邮件摘要, 用户打开邮件时才需要下载
还允许只读取某一部分, 例如只看文字, 不下载附件

基于万维网的电子邮件
#

同一个邮件服务商之间使用 HTTP 即可
不同邮件服务器之间传送邮件时才使用 SMTP

6.5 万维网和 HTTP 协议
#

万维网-WWW(World Wide Web), 是所有互联网上站点和网页的集合, 用于资料共享

其核心包括:

  1. 统一资源定位符(URL): 唯一标识一个资源
    1. 格式: <协议>://<主机>:<端口>/<路径>, 如 http://www.google.com
  2. 超文本传输协议(HTTP): 一个应用层协议, 用于将资源传输给用户
  3. 超文本标记语言(HTML): 一种语言, 负责展示资源(网页)
HTTP 协议
#

定义了浏览器(万维网客户进程)怎样向万维网服务器请求资源(万维网文档), 以及服务器怎样把文档传送给 浏览器

HTTP 访问流程:

  1. 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口 80
  2. 当监听到连接请求后便与浏览器建立连接(URL => DNS => IP => 80端口)
  3. TCP连接建立后, 浏览器就向服务器发送请求获取某个Web页面的HTTP请求
  4. 服务器返回 HTTP 响应(携带用户请求的资源)
  5. 浏览器解析信息并展示
  6. TCP 连接释放

HTTP 特点(1.x):

  1. 无状态(第二次访问和第一次访问结果相同, 即不记录用户的行为)
    1. 可以通过 Cookie(用户主机上的缓存, 记录用户信息) 保存状态
  2. 无连接(HTTP 采用 TCP 作为运输层协议, 但自身是无连接的)
    1. 持久连接(Http1.1加入) - TCP连接保留一段时间, 连续 Http 请求不需要再次握手
      1. 非流水线 - Http 请求必须收到响应后才能再次发起请求
      2. 流水线 - 类似滑动窗口可连续请求多个
    2. 非持久连接 - 一次 TCP 连接完成一个 Http 请求后就断开
  3. 面向文本: 报文中的每一个字段都是ASCII码串

HTTP 报文结构(header(首部字段名)会有多条记录):

HTTP 报文结构

总结
#

物理层
#

解决适用何种信号表示比特 0 | 1 的问题

  1. 通信基础
    1. 基本概念
      1. 信道
      2. 信号
      3. 带宽
      4. 原码
      5. 波特
      6. 速率
      7. 信源
      8. 信宿
    2. 两个公式(小计算)
      1. 奈氏定则
      2. 香农定理
    3. 编码与调制(理解过程)
      1. 编码
        1. 非归零编码
        2. 曼彻斯特编码
        3. 差分曼彻斯特编码
        4. 归零编码
        5. 反向不归零编码
        6. 4B/5B 编码
      2. 调制
        1. 调幅 AM
        2. 调频 FM
        3. 调相 PM
        4. 调幅 + 调相 QAM
        5. 脉码调制 PCM
    4. 数据交换方式
  2. 传输介质(考察特点)
    1. 光纤
    2. 同轴电缆
    3. 双绞线
  3. 物理设备(考察作用)
    1. 中继器
    2. 集线器

数据链路层(重点)
#

解决数据包在一个网络或一段链路上传输的问题

  1. 数据链路层的功能
    1. 分装成帧
      1. 字符计数法
      2. 字符填充法
      3. 零比特填充法
      4. 违规编码法
    2. 透明传输
    3. 可靠传输
    4. 差错控制
      1. 奇偶校验法
      2. 循环冗余校验码
      3. 海明码
    5. 流量控制
      1. 停等(SW)协议
      2. 后退 N 帧协议 GBN
      3. 选择重传协议 SR
    6. 介质访问控制
      1. 静态划分信道 - 信道划分介质控制(控制变量)
        1. 频分多路复用 FDM
        2. 时分多路复用 TDM
        3. 波分多路复用 WDM
        4. 码分多路复用 CDM
      2. 动态划分信道
        1. 随机访问介质控制
          1. ALOHA 协议
          2. CSMA 载波侦听多路访问协议
          3. CSMA/CD 载波侦听多路访问/碰撞检测协议
          4. CSMA/CA 载波侦听多路访问/碰撞避免协议
        2. 轮回访问介质控制 - 令牌传递协议
  2. 应用
    1. 局域网
      1. 特点
      2. 传输介质
      3. 介质访问控制方法
      4. 分类
        1. 以太网 - IEEE802.3
        2. 无线局域网 - IEEE802.11
    2. 以太网
      1. 分类
        1. 10BASE-T 以太网
        2. 100BASE-Ty 以太网
        3. 吉比特以太网
        4. 10吉比特以太网
      2. MAC 帧格式
      3. MAC 地址
    3. 广域网
      1. PPP 点对点协议
      2. HDLC 高级数据链路控制协议
  3. 设备
    1. 网桥
    2. 交换机

网络层(重点)
#

在网络与网络之间进行路由选择和分组转发

  1. 网络层的功能
    1. 异构网络互联
    2. 路由选择与转发
  2. 路由算法
    1. 静态路由算法
    2. 动态路由算法
      1. 距离-向量路由算法 RIP
      2. 链路状态路由算法 OSPF
  3. IPv4(几乎必考?)
    1. IPv4 地址编址的发展历史
    2. IPv4 编址的表示方法(32bit, 写出每组的十进制数, 点号分隔)
    3. IPv4 地址的三种编址方式
      1. 分类编址
      2. 划分子网
      3. 无分类编址 CIDR
    4. IPv4 数据报的首部格式
    5. IPv4 地址与 MAC 地址
      1. IP 地址与 Mac 地址的联系
        1. 所在层面不同
        2. 实现功能不同
          1. IP地址用于找到目的网络的网络地址
          2. MAC地址用于在同一网络里找到目的物理地址
        3. 传输过程变化不同
        4. IP负责外部寻址, MAC地址负责最后一程送货上门
      2. 地址解析协议 ARP(网络层)
        1. 用途: IP 地址到 MAC 地址的映射
        2. 实现: 每台主机都维护自己(在本网络)的 ARP 缓存表
      3. 网络地址转换 NAT - 缓解 IPv4 地址耗尽
        1. 原理: 一个专用网至少需要一个公网 IP 地址与互联网连接
        2. 作用: 产生大量内部局域网地址供分配
    6. 其他有关协议
      1. 动态主机配置协议 DHCP(应用层)
        1. 用途: 给主机动态分配 IP 地址
        2. 实现: DHCP 服务器
      2. 国际控制报文协议 ICMP(网络层)
        1. 用途:
        2. 实现: ICMP 差错报文和询问报文
    7. 虚拟专用网络 VPN(不考)

传输层
#

不同主机的应用进程直接的通信

  1. 概述
    1. 功能
    2. 传输层的寻址与端口
  2. UDP 协议
    1. UDP 首部格式
    2. UDP 检验
  3. TCP 协议
    1. 特点
    2. TCP 报文段格式
    3. TCP 可靠传输
    4. TCP 流量控制
    5. TCP 拥塞控制

应用层
#

将用户的操作通过应用程序转换为服务

  1. 网络应用模型
  2. 域名解析系统 DNS
    1. 域名的分类
    2. 域名服务器
    3. 域名的解析过程
  3. 文件传输协议 FTP
    1. FTP 服务器与用户端
    2. FTP 的工作原理
  4. 电子邮件
    1. 信息格式
    2. 组成结构
      1. 简单邮件传输协议 SMTP
      2. 多用途网际邮件扩充 MIME
      3. 邮局协议 POP3
      4. 网际报文存取协议 IMAP
  5. 超文本传输协议 HTTP
    1. 概述
    2. 特点
    3. 连接方式
    4. 报文结构