note¶
来源:
计算机网络 / note.md
计算机网络¶
计算机网络=节点(node)+链路(link)
互连网(internet)=多个网络通过路由器连接起来(网络的网络)
互联网(最大的互连网,Internet)不等于互连网(internet)
互联网发展历程¶
| 1969-1990 | ARPANET,1983年TCP/IP协议成为ARPANET的标准,1983年作为互联网诞生时间 |
|---|---|
| 1985-1993 | 国家科学基金网NSFNET |
| 1993-至今 | 互联网服务提供者ISP(可以理解成运营商?中国电信中国移动),多层次ISP结构。互联网交换点IXP,1990年万维网。互联网协会组织通过RFC(标准评论)征求互联网意见 |
互联网边缘部分¶
连接在互联网的主机是边缘部分,也叫做端系统
端系统之间的通信方式¶
-
客户/服务器方式(C/S)
-
对等方式(P2P)
互联网核心部分¶
由大量网络和连接这些网络的路由器组成
路由器实现分组交换,转发收到的分组
交换技术¶
- 电路交换
通过交换机连接所有主机
通话的两个用户始终占用端到端的通信资源
-
报文交换
-
分组交换
存储转发技术,将报文分成小的部分,加上首部(包头),称为分组
设分组长度为Lbit,传输速度为Rbps,则分组交换可以类比成流水线,如果有P个分组需要经过N条链路(N-1个路由器)
那么总时间为
单位注意bps的进位是1000,B是1024
通信主体:应用程序之间的通信
数据如何正确运输到目的主机?路径选择和路由表生成,数字信号转为模拟信号
APRANET 设计提出了分层的设计方法
1974年IBM系统网络体系结构SNA
OSI中的ISO 7498(7层标准)试图成为全球标准,但市场已经被TCP/IP抢占
可靠传输的开销比较大,对于一些实时性大于可靠性的场景(直播,视频通话,语音通话),可以采用不可靠传输
教材中将TCP/IP四层协议和OSI七层协议折中为五层协议,就是将TCP/IP的链路层拆分为数据链路层和物理层
-
应用层
-
运输层
-
网络层(寻址)
-
数据链路层
-
物理层
常用编码方式
-
不归零制(不能自同步,不能从信号波形中提取信号时钟频率)
-
归零制(频率高)
-
曼彻斯特编码(向上跳变是0,向下是1,反过来亦可,网卡是使用此编码)
-
差分曼彻斯特编码
调制方式
-
调幅AM
-
调频FM
-
调相PM
混合起来就是QAM(正交振幅调制)
信道的容量¶
信道不是理想的,不可能以任意高的速率传输(有可能出现失真,无法识别)
奈氏准则:码元传输的最高速率为2W(码元/秒),W为带宽
信噪比:
香农公式,信道的极限信息传输速率
假设一个码元最多携带的比特数为x
那么
得
所以码元不可能携带无限多的bit
信道复用技术¶
频分复用FDM
把各路信号分别搬移到适当的频率位置
时分复用TDM
等时信号,不同的时间占用同样的频带宽度
统计时分复用STDM
波分复用WDM
码分复用CDM(3G时代)
CDMA原理,每一站指派一个mbit的码片,如果要发送1,就发送自己的码片,如果要发送0,就发送自己码片的反码
数据链路层¶
数据链路层(Data Link Layer)是 OSI 参考模型中的第二层,介于物理层与网络层之间。
它的核心任务是将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路。 基本概念与服务 数据链路层的主要目的是在相邻节点(Node-to-Node)之间可靠地传输数据。 链路(Link): 从一个节点到相邻节点的一段物理线路。 数据链路(Data Link): 物理链路加上实现传输协议的硬件和软件。 帧(Frame): 数据链路层的传输单位,由网络层的 IP 数据报封装而成。 4. 以太网与 MAC 地址 以太网 (Ethernet) 目前最流行的局域网技术。它采用无连接、不可靠的服务方式。 MAC 地址 (硬件地址) * 长度: 48 位(6 字节),全球唯一。 * 作用: 在局域网内部标识网卡的身份。 VLAN (虚拟局域网) 通过软件手段将物理上的局域网逻辑上划分为多个子网,用以隔离广播域。 核心协议对比表
封装成帧¶
在 IP 数据报的前后分别添加首部和尾部,构成一个帧。首部和尾部包含控制信息,用于帧定界。 MTU (最大传输单元): 帧的数据部分长度上限。

帧 = 首部+数据+尾部
透明传输¶
为了防止数据中出现与“帧定界符”相同的位组合导致错误判别,需要采取特殊处理: 字符填充 / 字节填充: 在特殊字符前插入转义字符(如 ESC)。
如果已经有转义字符,就在前面再加一个转义字符(因为只会删除一个转义字符,所以数据中的转义字符就得到保留)
差错检测¶
物理传输由于噪声会产生比特差错(1 变 0,0 变 1)。 CRC (循环冗余检验): 目前广泛使用的检错技术。 FCS (帧检验序列): 添加在帧尾部用于校验的冗余码。 注意: 数据链路层通常只负责“无差错接收”(丢弃错帧),而不保证“可靠传输”(即不负责重传,这通常由高层完成)。
广播信道¶
局域网就是使用广播信道的
局域⽹可按⽹络拓扑进⾏分类

图3-13(a)是星形⽹。由于集线器(hub)的出现和双绞线⼤量⽤于局域⽹中,星形以太⽹以及多级星形结构的以太⽹获得了⾮常⼴泛的应⽤。
图3-13(b)是环形⽹,图3-13(c)为总线⽹,各站直接连在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产⽣有害的电磁波反射。
以太网(英语:Ethernet)是一种局域网技术
总线⽹以传统以太⽹最为著名,但以太⽹后来⼜演变成了星形⽹。经过四⼗多年的发展,以太⽹的速率已⼤⼤提⾼。现在以太⽹已成为了局域⽹的同义词
无线网络和移动网络¶
无线网络的CSMA/CA协议
1. 为什么无线局域网不能用 CSMA/CD?¶
在有线网络中,我们可以“边发边听”来检测碰撞(Collision Detection),但在无线环境下由于以下原因无法实现:
-
信号强度差距悬殊: 发送信号的强度可能比接收到的微弱信号大一百万倍。在发送的同时,适配器根本无法从自己强大的发送波中分辨出对方微小的信号冲突。
-
物理检测失效: 即使硬件能检测出冲突,也无法处理隐蔽站带来的冲突。
-
结论: 无线局域网无法检测碰撞,一旦开始发送就必须把整帧发完。为了避免浪费带宽,设计思路从“碰撞检测”转变为 “碰撞避免” (CA - Collision Avoidance)。
2. 隐蔽站问题 (Hidden Station Problem)¶
图 9-5 直观展示了这一经典难题:
-
现象: 站点 A 和 C 互在对方的无线覆盖范围之外,彼此“听不见”,但它们都能覆盖到中间的站点 B。
-
冲突: A 和 C 同时检测信道,都认为空闲,于是同时向 B 发送数据。
-
结果: A 和 C 的信号在 B 处发生碰撞,导致传输失败。
-
核心教训: 在无线网络中,“检测到信道空闲”并不等同于“信道真的空闲”。

3. 802.11 的 MAC 层架构¶
MAC 层位于物理层之上,包含两个子层(协调功能):
-
DCF (分布式协调功能): 必须实现的部分。
-
采用争用机制(CSMA/CA),每个站点自主竞争信道。
-
使用 DIFS 和 SIFS 来控制发送节奏。
-
PCF (点协调功能): 可选实现的部分。
-
采用非争用机制,通过接入点(AP)集中控制,“轮询”每个站点是否要发数据。适用于对时间敏感的业务(如语音)。
4. CSMA/CA 协议的运行要点¶
文档总结了 CSMA/CA 的三个关键步骤:
-
先听后发: 站点想发数据必须先监听。如果信道在 DIFS 时间内一直空闲,则发送整个数据帧。
-
退避算法 (退避计时器): 如果信道忙,站点会随机选一个退避时间。
-
冻结机制: 信道忙时,计时器暂停;信道变为空闲且经过 DIFS 后,计时器继续倒计时。
-
倒计时结束: 计时器减到零时,立即发送。
-
链路层确认 (ACK): 发送完一帧后,必须收到接收方的 ACK 确认帧。
-
超时重传: 如果没收到 ACK,说明发生了碰撞或干扰,站点会扩大随机退避的范围并重新尝试。
5. 停止等待协议¶
无线信道质量差(干扰多、信号衰落),因此 802.11 在链路层使用了 停止等待协议:每发送一个数据帧,都要停下来等一个确认。这是一种链路层确认,是保证可靠传输和解决碰撞重传的基础手段。
对比思考:
有线以太网就像在安静的屋子里说话,谁抢话大家都能立刻发现;无线网络就像在隔音不好的几个房间里说话,A 听不到 C,必须靠 B 这个“中间人”来确认信息是否传达成功。
CSMA/CA机制¶
1. 关键时间间隔:DIFS 与 SIFS¶
在 802.11 中,通过定义不同的帧间隙(Inter-Frame Space)来确定发送数据的优先级:
-
SIFS (Short IFS): 最短的时间间隔。用于高优先级传输,例如 ACK 确认帧。因为 SIFS 短,接收方能在其他站点抢占信道前发出确认,保证数据传输的原子性。
-
DIFS (DCF IFS): 较长的时间间隔。普通站在发送数据帧之前,必须先监听信道。只有信道在 DIFS 时间内一直保持空闲,站点才能开始发送。
2. 载波监听机制 (Carrier Sense)¶
为了判断信道是否忙碌,协议采用了“软硬结合”的方法:
-
物理载波监听 (Physical Carrier Sense): 硬件层面的监听,通过检测信道上的信号强度是否超过阈值来判断。
-
虚拟载波监听 (Virtual Carrier Sense): 软件层面的预约。
-
NAV (网络分配向量): 发送站会在数据帧首部写入传输所需的时间(DATA + SIFS + ACK)。
-
其他站点收到后,会更新自己的 NAV 计时器。在 NAV 指示的时间内,即使物理信道看起来是空的,其他站点也不会发送数据,从而避免干扰。

3. 争用信道与退避算法 (Backoff Mechanism)¶
当多个站点都想发送数据且发现信道忙时,它们不能在信道变空的一瞬间同时发送(否则必撞),必须进入争用期:
-
争用窗口 (CW, Contention Window): 由多个时隙 (Slot) 组成(例如 CW=15)。
-
退避计时器 (Backoff Timer): 1. 每个站点在 \(0 \sim CW\),之间随机选一个数字作为初始退避值。
-
当信道空闲时,计时器开始倒计时;当信道忙碌时,计时器冻结。
-
谁的计时器先减到零,谁就获得发送权。
-
未发送成功的站点在下一次争用期从上次冻结的值继续倒计时(体现了公平性)。

4. 二进制指数退避 (Binary Exponential Backoff)¶
为了应对网络拥堵,争用窗口的大小是动态调整的:
-
初始状态: CW较小(如 15)。
-
发生碰撞/未收到 ACK: 协议认为信道拥挤,会将 CW的值翻倍(近似加倍,公式通常为 \(2^{n+k}-1\))。
-
重传范围: 随着重传次数增加,随机退避的范围从\(0\sim31、0\sim63\)一直增加到最大值(如 1023)。这降低了再次碰撞的概率。
核心流程图解(对应图 9-7 和 9-8)¶
-
A 发送 DATA \(\rightarrow\)等待 SIFS \(\rightarrow\) B 返回 ACK。
-
其他站(C, D)在 A 发送期间检测到忙,推迟接入。
-
A 传完后,经过 DIFS 时间,C 和 D 开始倒计时。
-
C 的随机数小,先减到 0,开始发送;D 的计时器中途冻结,等待下一轮。
问题在于无法解决隐蔽站问题,如果A,C无法接收到彼此的信号,那就无法判断信道是否忙,在检测到一个DIFS的空闲之后,A,C都会向B发送数据,导致碰撞
拓展以太网¶
扩展的数据链路层设备 网桥 (Bridge) 根据 MAC 帧的目的地址对帧进行转发和过滤。 以太网交换机 (Switch) 本质上是一个多端口的网桥。 工作原理: 自学习算法(维护一张 MAC 地址表)。 优点: 独占带宽、全双工通信、有效隔离冲突域(但不能隔离广播域)。

假设A先向B发送一帧,从端口1进入交换机,我们分析交换机的行为
第一步:看源地址(学习)
交换机查看帧里的 源 MAC 地址。
-
如果这个地址不在 MAC 地址表中,交换机就把该 MAC 地址 和它进入的 端口号 存入表中。
-
如果已经在表中,则更新它的老化时间(通常是 300 秒)。
第二步:看目的地址(转发)
交换机查看帧里的 目的 MAC 地址 ,并在表中查找:
-
找到了: 直接把帧送到对应的端口(这叫单播转发)。
-
没找到: 交换机不知道该往哪送,于是把帧复制给除了进入端口以外的所有端口(这叫泛洪 Flood)。然后C和D收到帧后,目的地址不匹配,会丢弃这个帧,称为过滤
一个交换机的接口就是一个碰撞域
课上习题:

S1 的交换表:
| MAC地址 | 接口 |
|---|---|
| A | 1 |
| C | 2 |
| E | 5 |
S2 的交换表:
| MAC地址 | 接口 |
|---|---|
| A | 5 |
| C | 5 |
| E | 1 |

| MAC地址 | 接口 |
|---|---|
| B | 2 |
| C | 3 |
| D | 4 |
| A | 1 |
| MAC | 接口 |
|---|---|
| B | 2 |
| D | 1 |
| A | 2 |
| MAC | 接口 |
|---|---|
| B | 2 |
| D | 2 |
B→C 交换机表1一开始为空,记录B的接口,然后向1,3,4发送
4连着交换机2的2接口,所以交换机2就会记录B为接口2,找不到C,所以会向1,3,4端口发送,4端口连着交换机3的2接口,所以交换机3也会记录B为接口2,
C返回帧,交换机1知道C再3端口,记录
D→A 交换机2记录D接口为1,然后向2,3,4发送,从接口4进入交换机3的接口2,交换机3记录D为2,然后从接口2进入交换机1的接口4,所以交换机1记录D为4,然后A的返回帧使交换机1记录A为1,然后从接口4进入交换机的接口2,然后交换机2记录A为2