计算机网络
虚电路¶
1. 基本概念与通信阶段
- 分组交换网提供的网络层服务可以分为面向连接的虚电路服务和无连接的数据报服务。
- 两台计算机进行通信时,必须先建立一条逻辑上的网络层连接,即虚电路(VC),连接建立后其对应的物理路径就固定了。
- 整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。
- 虚电路之所以是“虚”的,是因为这条电路不是专用的,一条链路上可以同时有若干条虚电路通过,一个节点也可能同时在多个节点之间建立虚电路。
2. 工作原理与机制
- 标识符分配: 每次建立虚电路时,会分配一个未用过的虚电路号(VCID)以区别于其他虚电路。
- 分组首部: 分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号(VCID)即可。
- 状态维护(虚电路表): 虚电路网络中的每个节点都维持一张虚电路表,记录打开的虚电路信息,包括接收链路和发送链路上的虚电路号、前一节点和下一节点的标识,这些信息是在建立过程中确定的。
- 建立与释放过程: 数据传输前,主机A发送“呼叫请求”分组,主机B同意则返回“呼叫应答”分组确认;传输结束后,主机A发送“释放请求”分组逐段拆除连接。
- 确认机制: 数据传输过程是有确认的传输,接收方收到分组后要发回相应的确认。
3. 虚电路服务的特点(优缺点)
- 开销与适用场景: 虚电路的建立和拆除需要时间开销,对交互式应用和少量的短分组情况显得浪费,但对长时间、频繁的数据交换效率较高。
- 路由选择: 路由选择仅体现在连接建立阶段,连接建立后传输路径即被确定。
- 可靠性与控制: 提供可靠的通信功能,能保证每个分组正确且有序到达,并支持流量控制(接收方来不及接收时可通知发送方暂缓发送)。
- 脆弱性(致命弱点): 当网络中的某个节点或某条链路出现故障而彻底失效时,所有经过该节点或该链路的虚电路将遭到破坏。
- 首部开销小: 因为分组首部不包含目的地址,只包含虚电路号,相对于数据报方式其开销较小。
NAT表的配置¶
通常来说,要使主机能访问外网的Web服务器,通常是服务器端需要手动配置好NAT表。因为服务器端通常是被动接受的,不会主动向外发数据,所以也不会被NAT路由配置NAT表中的表项。
1. 服务器侧:必须手动配置“静态 NAT”(端口映射 / DNAT)
- 为什么? Web 服务器是被动等待别人来连接的。当外网的主机想访问它时,只能通过它所在路由器的公网 IP 发起请求。但是,路由器收到这个包后会“懵”:“我内网有几十台机器,到底谁才是 Web 服务器?”
- 怎么做? 因此,网络管理员必须手动在路由器上写死一条映射规则(就像这道题答案里给的那张表)。这条规则告诉路由器:“只要是外网访问我公网 IP 的 80 端口,统统无条件转发给内网的 192.168.1.2 的 80 端口”。这在路由器配置里通常叫 Port Forwarding(端口转发)。没有这条手动配置的表项,外网的请求到了路由器就被丢弃了,绝对进不来。
2. 客户端侧(H2/H3):只需开启“动态 NAT”(NAPT / SNAT),无需手动写表项
- 为什么? 客户端是主动发起连接的。当 H2 往外发数据包经过它自己的路由器(R3)时,R3 会自动把源私有 IP 换成公网 IP,并自动分配一个随机的外网端口,同时在自己的内存里临时动态生成一条 NAT 记录。
- 怎么做? 等外网服务器的数据顺着这个端口回传时,R3 查一下刚才临时生成的记录,就能把数据准确发回给内网的 H2。等连接断开一段时间后,这条记录就被路由器自动删除了。所以对于客户端所在的路由器,网络管理员通常只需要配置一条全局规则开启 NAT 功能即可(比如在思科里配置
ip nat inside source...),完全不需要人工去手写具体的映射表。
SMTP和POP3¶
SMTP可以实现客户推向服务器、服务器推向服务器;POP3只能实现客服拉服务器,而不能实现服务器拉服务器
多段链路存储转发¶
可以先模拟第一组的到达时间,然后后续分组看瓶颈:剩下的分组到达时间间隔 = 瓶颈链路的发送时延(即最慢的那段发一个分组要多久)。所以总时间 = 第一分组走完全程的时间 + (总分组数 - 1) × 瓶颈链路的发送时延。
流水线¶
- 路由器要接收一个完整的分组后才能发送。
- 发送端只要数据没发完,可以一直连续发送,不需要考虑发送的分组到没到下一个路由器。
数据链路层传输协议¶
其他条件相同,发送窗口越大,允许连续发送的帧越多,信道利用率越高。
停止-等待协议 S-W¶
发送窗口:
\[W_T=1\]
接收窗口:
\[W_R=1\]
特点:一次只能发送 1 帧,收到确认后才能继续发送下一帧。
GBN 协议¶
接收窗口固定为:
\[W_R=1\]
发送窗口最大为:
\[W_T\le 2^k-1\]
也就是说,GBN 的最大发送窗口大小是:
\[W_T^{\max}=2^k-1\]
SR 协议¶
发送窗口和接收窗口都要大于 1:
\[W_T>1,\quad W_R>1\]
并且满足:
\[W_T+W_R\le 2^k\]
通常还有:
\[W_R\le W_T\]
因此可得:
\[W_R\le 2^{k-1}\]
若发送窗口和接收窗口相等,则最大为:
\[W_T=W_R=2^{k-1}\]
串联并联看端到端的最大吞吐率¶

串联取最小,并联相加。
中间并联部分相加为1000 + 1 + 100 = 1101Mbps和左右相串联取最小min(10, 1101, 10) = 10。
码距、纠错、检错¶
求码距,可以直接两个编码相异或,得到的1的个数即为码距

GBN坑点¶

- 发送窗口与接收窗口
- 发送窗口:最大为 2^n^ - 1(n 为帧序号位数)。
- 接收窗口:始终为 1。
- 帧序号循环使用,范围为 0~2^n^ - 1。
- 接收与累计确认
- 接收方只接收按序到达的帧,丢弃失序帧。
- 累计确认:确认某帧及其之前所有按序收到的帧。
- 若确认号表示下一帧期望序号,则收到 0、1 后,确认号为 2;即使收到 3,也仍为 2。(因为丢弃失序帧)
核心:GBN 允许连续发送多个帧,但接收方只能按序接收,采用累计确认。
数据段序号¶
切记!!数据段序号是以字节为单位!!
编码和调制¶

默认路由(Default Route)¶
核心知识点¶
- 默认路由不是路由表的必需项,可以不存在。
- 默认路由的目的网络为 0.0.0.0/0,用于匹配没有更具体路由的目的地址。
- 默认路由可以由管理员手动配置(静态默认路由),也可以通过路由协议、DHCP 等机制动态获取。
- 如果没有匹配的路由,且不存在默认路由,路由器通常会丢弃该分组。
- 路由选择遵循最长前缀匹配原则,默认路由的优先级低于所有匹配的非零长度前缀路由。
易错点¶
- 连接多个网络的路由器不一定存在默认路由。
- 连接 Internet 不代表一定自动生成默认路由,仍需要相应的配置或路由学习机制。
- 默认路由是兜底路由,而不是所有分组都必须经过的路由。
记忆:默认路由可以不存在,需要配置或学习获得;无匹配路由且无默认路由时,丢弃分组。
海明校验码¶
码距与检错、纠错能力¶
码距 d:两个合法码字对应位置上不同的二进制位数。最小码距是所有不同合法码字之间码距的最小值。
| 能力 | 条件 |
|---|---|
| 检测 e 位错误 | \(d\geq e+1\) |
| 纠正 t 位错误 | \(d\geq 2t+1\) |
| 同时检 e 位、纠 t 位 | \(d\geq e+t+1\),且 \(e\geq t\) |
理解: - 检错:出错后不能变成另一个合法码字。 - 纠错:不仅要发现错误,还要唯一确定原码字。 - 为什么是 2t+1? 两个合法码字各自允许出错 t 位,其纠错范围不能重叠,因此码距必须大于 2t,即至少为 2t+1。
注意: 纠错 t 位只保证实际错误不超过 t 位时能正确纠正,不代表所有可能收到的码字都能纠正。纠错范围之外可能存在无法纠正的码字。
海明校验位数¶
设数据位为 \(m\),校验位为 \(k\),总码长为 \(m+k\)。
纠正一位错误需要满足:
\[\boxed{2^k\geq m+k+1}\]
理解: - \(k\) 位校验结果可以表示 \(2^k\) 种状态。 - \(m+k\) 种状态对应每个位置发生一位错误。 - 另外 \(1\) 种状态对应没有错误。
因此,每个错误位置都需要独立编号,还要预留一个编号表示无错误。
校验位位置¶
校验位通常放在第 1、2、4、8、16……位。
采用常规编号方式时,校验结果组成的二进制数就是发生一位错误的位置编号,将对应位置取反即可纠正。
直通交换与存储转发¶
| 对比 | 直通交换 | 存储转发交换 |
|---|---|---|
| 转发时机 | 收到目的 MAC 地址后即可转发 | 接收完整帧后才能转发 |
| 最少接收数据 | 6 B(目的 MAC 地址) | 整个以太网帧 |
| 转发延迟 | 较低 | 较高 |
| 差错检测 | 无法在转发前完成完整帧的 CRC 校验 | 可完成 CRC 校验,丢弃错误帧 |
HDLC协议¶
要求每五个1补一个0。