计算机网络 谢希仁版核心考点精讲 期末冲刺指南 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个02.3 差错控制CRC校验是最常用的方法。考试常考生成多项式计算比如给定G(x)x^3x1(对应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能听到吗(SYN1, seqx)B回答能听到你听得到我吗(SYN1, ACK1, seqy, ackx1)A确认听到了(ACK1, seqx1, acky1)常见考点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立即重传快恢复窗口减半后直接进入拥塞避免我抓包观察过这个过程窗口大小像爬山一样先快速上升遇到丢包(山顶)后下降然后改为缓步上升。