| 命题 / 问题 | 答案 | 为什么 |
| 架构 · 分层 · 交换 |
| "narrow waist(细腰)" 协议是哪个?(WiFi/BGP/HTTP/TCP/IP) | IP | 沙漏细腰 = IP 层;上网的所有人都必须说 IP。TCP/HTTP 在上、链路在下,都可替换,唯 IP 不可。 |
| 分层(layering)直接带来什么?(可多选:Reliability / Modularity / Transfer Speed / Abstraction / Addressing) | Modularity + Abstraction | 分层给的是模块化 + 抽象。Reliability、Addressing 要在某一层内部实现,不是分层"自带"的;Transfer Speed 反而可能因 overhead 变慢。 |
| End-to-End 原则:网络(路由器)必须实现可靠性才能保证可靠传输。 | False | E2E:端主机足以保证可靠性;路由器可以帮忙但不是必须。可靠性正确性最终靠两端(TCP)。 |
| Circuit switching 给应用一个保证带宽的简单抽象。 | True | 电路交换预留资源 → 可按需保证带宽。代价:利用率低、建立慢、突发流量浪费。 |
| Packet switching 相比 circuit switching 的核心优势? | 统计复用 | Statistical multiplexing:无需预留、突发流量下高效、共享链路。代价:排队时延、无带宽保证。 |
| IP 层提供可靠、有序、保证送达的服务。 | False | IP 是 best-effort:不可靠、可能丢/乱序/重复,无连接。可靠性交给 TCP。 |
| 更高的带宽(bandwidth)会降低 propagation delay。 | False | propagation = 距离/光速,与带宽无关。带宽只影响 transmission delay(= size/带宽)。 |
| 性能 · 时延 |
| 把包变大,transmission delay 怎么变? | 变大 | transmission delay = 包大小 / 链路带宽,与包大小成正比。 |
| store-and-forward 路由器在转发前必须收到整个包。 | True | 所以 N 跳时端到端要累加每跳一次 transmission delay(考试算时间线的关键)。 |
| 队列时延(queueing delay)是固定的。 | False | 随负载变化,拥塞时暴涨;是四类时延里唯一"看流量"的。 |
| 寻址 · 转发 |
| 一个 /n 前缀包含多少地址? | 2^(32−n) | 如 /24 → 256 个,/25 → 128 个,/32 → 1 个(单主机)。 |
| Longest Prefix Match 的结果依赖转发表里表项的先后顺序。 | False | LPM 只看"匹配到的最长前缀",与表项排列无关。 |
| 前缀越长越具体(优先级越高)。 | True | /25 比 /24 更具体,命中时优先。default route = 0.0.0.0/0(最短,兜底)。 |
| 任意两个前缀都能聚合(aggregate)成一个。 | False | 只有相邻且对齐的两个 /n 才能合并成 /(n−1)(否则会引入不该有的地址)。 |
| IP 头 · 分片 · Traceroute |
| TTL 的作用?到 0 时发生什么? | 防环 | 每跳 −1;减到 0 → 丢弃 + 回送 ICMP Time Exceeded。traceroute 正是靠这个。 |
| IP header checksum 每一跳都要重算。 | True | 因为 TTL 每跳都变;且 checksum 只保护 header,不保护数据。 |
| 分片后由沿途路由器重组。 | False | 只有目的主机重组。offset 以 8 字节为单位;MF=1 表示后面还有片。 |
| IPv6 路由器可以对包分片。 | False | IPv6 路由器不分片(由源端负责/PMTUD);IPv6 还去掉了 header checksum,固定 40B 头。 |
| traceroute 每次探测都走完全相同的路径。 | False | 负载均衡/路由变化可能让不同探测走不同路;某跳不回则显示 *。 |
| 域内路由 DV / LS / STP |
| Link-State 需要每个节点知道整个网络拓扑。 | True | LS:flooding 全网链路信息 → 本地跑 Dijkstra。DV 只和邻居交换"到各目的地的距离"。 |
| count-to-infinity 是 Link-State 的问题。 | False | 是 Distance-Vector 的问题(断链后距离缓慢爬升)。LS 有全局视图,不会。 |
| poison reverse / split horizon 能消除所有路由环。 | False | 只能解决两节点环;三节点及以上的环仍可能 count-to-infinity。所以设 INFINITY 上限(Proj2=16)。 |
| DV 比 LS 收敛快。 | False | DV 收敛慢(逐跳传播);LS 收敛快但每次 flooding 开销大、要更多内存/算力。 |
| STP 选谁当 root? | 最小 ID | 选 root bridge ID 最小者;各端口按 (root ID, 到 root 距离, 自身 ID) 比较,非树端口被 block 防环。 |
| BGP · 域间 |
| BGP 选路优先级顺序? | C>Pe>Pr | customer > peer > provider(从赚钱角度:走 customer 收钱,peer 免费,provider 要付费)。 |
| 从 peer/provider 学到的路由,要不要告诉另一个 peer 或 provider? | 不告诉 | Export 规则:customer 学的 → 告诉所有人;peer/provider 学的 → 只告诉自己的 customer。核心记忆:只为能赚钱的流量做转发。 |
| BGP 总是选 AS-path 最短的路径。 | False | 先看 policy / LocalPref(商业关系),再看 AS-path 长度。钱 > 路短。 |
| BGP 靠什么防环? | AS-path | path-vector:通告里带完整 AS-path,看到自己 AS 在里面就丢弃。 |
| 合法(valley-free)路径长什么样? | 上坡·平·下坡 | customer→provider 上坡段 → 至多一条 peer 平边 → provider→customer 下坡段。先降后升是"山谷"= 非法。 |
| TCP · 可靠传输 |
| SYN 和 FIN 各占用序号吗? | 各占 1 | 算 seq/ack 时别漏:SYN 占 1 个序号,FIN 也占 1 个。ISN 随机。 |
| ACK 号的含义? | 下一期望字节 | ack = 已连续收到的最后字节 + 1 = "我下一个想要的字节"。cumulative ACK(累积确认)。 |
| 丢了中间一个段,后续乱序到达会推进 ACK 号吗? | 不推进 | 累积 ACK 卡在空洞处,重复发同一个 ack(→ 触发 3 dup ACK 快重传)。 |
| 三次握手的第 3 个 ACK 能不能携带数据? | 能 | 可以捎带(piggyback)应用数据。 |
| UDP 提供可靠、有序传输。 | False | UDP 无连接、不可靠、不保证顺序,只加端口 + 校验;要可靠自己在应用层做。 |
| 拥塞控制 |
| "Slow start" 是缓慢的线性增长。 | False | 名字骗人:slow start 是指数增长(每 RTT 翻倍 / 每个 ACK +1 MSS)。线性增长是后面的 congestion avoidance(AIMD,每 RTT +1)。 |
| TCP 把什么当作拥塞信号? | 丢包 | 丢包(timeout 或 3 个重复 ACK)= 网络拥塞的信号。 |
| timeout 和 3-dup-ACK 处理一样吗? | 不一样 | timeout:ssthresh=cwnd/2,cwnd=1,回 slow start(严重)。3 dup ACK:ssthresh=cwnd/2,cwnd=cwnd/2,留在 CA(快恢复,轻)。 |
| 实际发送窗口取什么? | min(cwnd,rwnd) | 拥塞窗口 cwnd(防网络)与接收窗口 rwnd(防接收方)取小。 |
| AIMD 能让多条流收敛到公平。 | True | 加性增(公平抢) + 乘性减(按比例罚) → 收敛到公平线。但 RTT 小的流会抢到更多(RTT 不公平)。 |