计算机网络 谢希仁版核心考点精讲 期末冲刺指南
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三次握手
我用打电话来类比:
- A打给B:"能听到吗?"(SYN=1, seq=x)
- B回答:"能听到,你听得到我吗?"(SYN=1, ACK=1, seq=y, ack=x+1)
- 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开始指数增长
- 拥塞避免:达到阈值后线性增长
- 快重传:收到3个重复ACK立即重传
- 快恢复:窗口减半后直接进入拥塞避免
我抓包观察过这个过程:窗口大小像爬山一样先快速上升,遇到丢包(山顶)后下降,然后改为缓步上升。
