计算机网络原理(04735) · IP、子网与路由:跨网络送达主机至传输层:端口、可靠交付与连接
按“分层与性能 → 链路 → IP 与路由 → 传输 → 应用”的顺序理解一次请求,再补充无线与安全。历史课程中的电路交换、PPP、经典共享以太网等保留为原理对照,不与现代网络部署混写。
IP、子网与路由:跨网络送达主机
IP 服务、转发与最长前缀匹配
目的192.0.2.130同时匹配默认路由、192.0.2.0/24与192.0.2.128/25时,选/25,因为其约束的前缀位最多。更长前缀不是更短网络距离,而是更具体的地址匹配。
查看图表代码
IP 提供尽力而为的数据报传送,不保证到达、顺序或无重复。转发是在本节点为当前包选择输出,路由是计算与维护可达路径;两者职责不同。
路由器包含输入处理、交换结构、输出排队和控制处理。内存、总线或交换网络是交换结构实现方式;性能应按具体设计衡量,不能只凭分类断言价格高低。
转发表中多条路由匹配时,采用最长前缀匹配;没有更具体匹配才考虑默认路由。完全无路由时不能凭空转发。
IPv4 地址、CIDR 与子网计算
IPv4 地址为 32 位;CIDR 写作 地址/前缀长度。网络号由地址与掩码按位与得到,传统 A/B/C 分类用于理解历史编址,实际规划应按前缀计算。
| 地址用途 | 范围或示例 |
|---|---|
| 私有地址 | 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 |
| 回环 | 127.0.0.0/8,常用 127.0.0.1 |
| 未指定地址 | 0.0.0.0,含义随地址字段与使用场景确定 |
| 有限广播 | 255.255.255.255 |
以 203.123.1.135/26 为例:
- 掩码为
255.255.255.192,主机位 6 位,共2^6=64个地址。 - 所属网络为
203.123.1.128/26,广播地址203.123.1.191。 - 普通广播子网可用主机范围为
.129至.190,62 个地址。
“地址总数减二”适用于这类普通子网,不直接套用到 /31 点对点或 /32 路由。路由聚合还要求地址块连续、对齐,且聚合后的下一跳行为符合要求。
MTU、IPv4 分片与 ICMP
本例每片都带独立20字节首部,片间偏移按原载荷计算。前两片载荷1480能被8整除,最后一片420不要求再按8补齐;重组必须等相应片段到达。
查看图表代码
MTU 是链路能承载的网络层包上限;IPv4 首部通常至少 20 字节,分片偏移以 8 字节为单位。DF 表示不允许分片,MF 表示后续还有分片。最终由目的主机重组,不能把分片当成提高吞吐的常规手段。
例:总长度 3400 字节、无选项首部 20 字节、MTU 1500,载荷共 3380 字节;可拆成 1480、1480、420 字节载荷。总长度分别为 1500、1500、440,偏移为 0、185、370,MF 为 1、1、0。
ICMP 承担差错与诊断,如不可达、超时和 Echo;ping 结果不能单独证明某个应用端口可用。历史“源点抑制”消息不能作为现代拥塞控制的推荐机制。
DHCP、NAT、IPv6 与路由协议
DHCP 为主机提供地址、掩码、网关等配置;典型 IPv4 流程为发现、提供、请求、确认,使用 UDP 67/68。NAT 维护内部与外部地址/端口映射;外部主动访问需要额外映射或穿透设计,NAT 不等于安全策略。
IPv6 地址为 128 位,基本首部 40 字节;用冒号分隔的十六进制组表示,连续零压缩 :: 至多出现一次。它没有 IPv4 式广播,邻居发现也不使用 ARP。双栈与隧道是不同迁移策略。
| 路由机制 | 思想或范围 |
|---|---|
| 链路状态 | 传播拓扑信息,计算最短路径,如 OSPF |
| 距离向量 | 与邻居交换距离估计,基于 Bellman-Ford 思路,如 RIP |
| 分层路由 | 以自治系统 AS 等边界限制规模与管理范围 |
| BGP | 交换自治系统间可达性及路径属性,受路由策略影响 |
RIP 用跳数度量,16 表示不可达;OSPF 支持区域与等价路径;BGP 通过 TCP 179 建立会话,关注 AS_PATH、NEXT_HOP 等属性,不只是选择物理最短路。OPEN、UPDATE、KEEPALIVE、NOTIFICATION 分别承担建会话、更新、保活和错误通知。
传输层:端口、可靠交付与连接
TCP 与 UDP 的边界
端口号为 16 位;TCP 连接通常由源/目的 IP 与源/目的端口四元组区分。端口范围区分熟知、登记与动态端口,不代表客户端或服务端在技术上只能使用某段范围。
| 协议 | 提供什么 | 应用需考虑什么 |
|---|---|---|
| TCP | 面向连接、有序可靠的字节流、流量与拥塞控制 | 应用消息边界、超时、连接中断与业务重试 |
| UDP | 数据报、端口复用及校验等基础能力 | 丢失、重复、乱序以及是否自行实现可靠性/拥塞控制 |
UDP 首部 8 字节,TCP 基本首部通常 20 字节,选项会增加长度。可靠字节流不代表业务一定成功:连接断开后应用仍需判断处理结果与幂等性。
停等、GBN 与选择重传
可靠交付需要组合差错检测、序号、确认与重传计时器。停等一次只等待一个未确认分组,逻辑简单但长时延链路利用率低;滑动窗口允许流水发送。
| 协议 | 接收行为 | 重传行为 |
|---|---|---|
| 停等 | 按序接收,区分新旧分组 | 等待确认或超时重发 |
| GBN | 典型接收窗口为 1,丢弃乱序包 | 累计确认,超时重发一段未确认分组 |
| SR | 缓存窗口内乱序包,逐个确认 | 只重传未确认的分组 |
序号空间必须与窗口大小协调,防止旧包与新包混淆。TCP 借鉴这些机制,但不是把教材中的 GBN 或 SR 原封不动套用。
假设发送方窗口允许发送 1、2、3、4,分组 2 丢失,3、4 正常到达:
- GBN:接收方只接纳下一个按序分组,因此丢弃 3、4,继续累计确认到 1。发送方通常为最早未确认分组维护一个计时器;2 超时后重发 2、3、4。收到累计确认到 n 后,发送窗口左沿推进到 n+1。
- SR:接收方缓存窗口内的 3、4 并分别确认;发送方标记它们已确认,但窗口左沿仍等 2。每个待确认分组各有逻辑计时,2 超时只重发 2;收到它的确认后,左沿可连续越过已确认的 2、3、4。接收方此时也可把连续序列交给上层。
ACK 丢失还需要重发确认与去重处理。这里的“每包计时”是协议逻辑,不要求实现必须为每个包创建一个操作系统定时器。
TCP 序号、三次握手与关闭
TCP 按字节编号,累计确认号表示下一期待的字节;SYN 与 FIN 各消耗一个序号。连接建立的典型过程:
查看图表代码
客户端经过 SYN-SENT,服务端经过 SYN-RECEIVED 后进入 ESTABLISHED。握手同步双方序号并确认连接状态;第三步可以携带数据。
关闭时两个方向分别结束。以下假定对端在收到 FIN 后又发送了数据,最后一个数据字节之后的序号是 w:
查看图表代码
典型状态包括 FIN-WAIT-1/2、CLOSE-WAIT、LAST-ACK、TIME-WAIT。ACK 与 FIN 可能合并,不是所有关闭都固定四个包;不能不看中间发送的数据就把 FIN 序号机械写成 v+1。
流量控制与拥塞控制
流量控制保护接收端缓冲能力,接收窗口 rwnd 由接收方通告;拥塞控制考虑网络承载能力,发送方通过 cwnd 等状态调节在途数据。发送量同时受两者等因素限制。
教材中的慢启动、拥塞避免、快速重传与快速恢复是理解经典机制的入口。超时与重复确认触发的处理不同,具体窗口更新取决于算法;不能把所有实现都概括成“降到 1 MSS 再开始”。
网络层还可通过调度、队列管理、流量调节和准入控制降低拥塞;增加带宽与丢弃负载解决的条件不同。
继续阅读
- 故障边界与规范
- 故障边界与规范
- 故障边界与规范