计算机网络 谢希仁版核心考点精讲 期末冲刺指南

计算机网络 谢希仁版核心考点精讲 期末冲刺指南

1. 网络时延计算与优化

网络时延是计算机网络中最基础也最常考的概念之一。记得我第一次学这部分时,被各种时延类型绕得头晕,直到自己动手画图才真正理解。网络时延主要分为四种类型:

  • 发送时延:就像快递员打包包裹的时间。计算公式是数据帧长度(bit)/发送速率(bit/s)。比如要发送一个8000bit的文件,网卡速率是1Mbps(1,000,000bit/s),那么发送时延就是8ms。

  • 传播时延:相当于包裹在高速公路上运输的时间。计算公式是信道长度(m)/电磁波传播速率(m/s)。电磁波在光纤中的传播速度约是2×10^8m/s,如果两地距离1000km,传播时延就是5ms。

  • 处理时延:路由器拆包检查的时间。这个值不固定,取决于路由器的性能。普通路由器可能在几十微秒到几毫秒不等。

  • 排队时延:就像快递在分拣中心排队等待的时间。网络越拥堵,这个时延越大。在高峰期可能达到几百毫秒。

提示:考试中最常考的是发送时延和传播时延的计算,一定要分清两者的区别。发送时延与数据大小和发送速率有关,而传播时延只与距离和介质有关。

实际做题时,经常会遇到组合计算。比如一个1MB的文件通过100Mbps带宽、1000km距离的网络传输,总时延≈发送时延(1×8×10^6bit / 100×10^6bps = 80ms) + 传播时延(1000×1000m / 2×10^8m/s = 5ms) = 85ms。处理时延和排队时延通常题目会给出或忽略不计。

2. 数据链路层核心机制

数据链路层是我觉得最"实在"的一层,它的三大任务直接影响着网络传输的可靠性:

2.1 封装成帧

就像给快递包裹加包装箱和胶带。帧的首尾部有特殊标识符:

  • 以太网使用7字节前导码+1字节帧开始定界符(10101011)
  • PPP协议用0x7E作为定界符

我做过一个实验:用Wireshark抓包观察,发现实际帧结构是这样的:

[前导码][帧起始][目的MAC][源MAC][类型/长度][数据][FCS]

2.2 透明传输

解决数据中恰好出现定界符的问题,常用方法:

  • 字节填充:PPP协议遇到0x7E就转义为0x7D 0x5E
  • 比特填充:HDLC协议连续5个1就插入1个0

2.3 差错控制

CRC校验是最常用的方法。考试常考生成多项式计算,比如给定G(x)=x^3+x+1(对应1011),要会计算冗余码。我总结的口诀是:"模2除,余数补"。

3. 网络层协议精要

3.1 IP地址与CIDR

传统分类地址已经淘汰,现在都用CIDR表示法。关键点:

  • 192.168.1.0/24表示前24位是网络号
  • 计算子网掩码:/26对应255.255.255.192
  • 确定地址范围:192.168.1.128/26的范围是192.168.1.128~191

我常用的快速判断方法:把最后一个字节转二进制,比如/26意味着前2位属于网络号。所以128(10000000)到191(10111111)属于同一个子网。

3.2 路由协议对比

协议类型更新方式度量标准适用场景
RIP距离向量30秒定期跳数小型网络
OSPF链路状态触发更新带宽大型企业网
BGP路径向量增量更新AS路径互联网骨干

考试最爱考RIP的"坏消息传得慢"问题。例如:A-B-C三个路由器,A到C原路径A-B-C(跳数2)。当B-C断开后,A会错误地认为可以通过B-A-C(实际不可达)到达C,形成路由环路。

4. 传输层可靠传输机制

4.1 TCP三次握手

我用打电话来类比:

  1. A打给B:"能听到吗?"(SYN=1, seq=x)
  2. B回答:"能听到,你听得到我吗?"(SYN=1, ACK=1, seq=y, ack=x+1)
  3. A确认:"听到了!"(ACK=1, seq=x+1, ack=y+1)

常见考点:SYN洪泛攻击就是只做第一步不完成握手,导致服务器资源耗尽。

4.2 滑动窗口

就像快递柜的取件机制:

  • 发送窗口:已发送未确认的包裹
  • 接收窗口:还能放多少个包裹
  • 窗口滑动:确认一个包裹就空出一个位置

我用Python模拟过滑动窗口的工作过程:

# 简化版滑动窗口模拟 send_window = [pkt1, pkt2, pkt3] # 已发送未确认 receive_window_size = 5 # 接收方剩余容量 # 当收到ack2时 send_window.remove(pkt2) # 确认pkt2 send_window.append(pkt4) # 发送新数据

4.3 拥塞控制

TCP的智慧体现在这里:

  1. 慢启动:窗口从1开始指数增长
  2. 拥塞避免:达到阈值后线性增长
  3. 快重传:收到3个重复ACK立即重传
  4. 快恢复:窗口减半后直接进入拥塞避免

我抓包观察过这个过程:窗口大小像爬山一样先快速上升,遇到丢包(山顶)后下降,然后改为缓步上升。