ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

计网知识点全梳理:从OSI模型到TCP/IP协议栈的复习指南

计网知识点全梳理:从OSI模型到TCP/IP协议栈的复习指南 简介北京工业大学计算机网络期末知识点整理99分面向北工大计网课程考生系统梳理考试高频考点。内容涵盖对等网络与C/S模式、OSI七层与TCP/IP四层参考模型、物理层传输介质与交换方式、数据链路层滑动窗口协议、介质访问控制子层、网络层路由算法与QoS流量整形、常见互联设备功能等并对IPv4/IPv6、TCP/UDP、ARP/ICMP等重要协议作了归纳。资源为1个docx文档压缩包约21KB便于直接阅读或打印复习。已有652人学习下载。整体按章节组织协议细节与计算要点覆盖较全可帮助读者快速搭建知识框架、查漏补缺适合期末冲刺或系统备考使用。1. 计网知识点整理一份99分笔记能解决的问题不是“全”而是“串”“北京工业大学计网知识点整理(99分)”这个标题能被反复传阅背后是计网复习的真实痛点书翻了三四遍协议背了忘、忘了背一到做题还是卡在子网计算和拥塞窗口上。这份整理能考到99分靠的并不是把教材抄一遍而是把考点按“层”拆开、再按“题”收敛成能直接复用的计算模板和协议对比表。期末冲刺、考研408、复试前的体系复盘都适合按这套路径走。下面我把完整复习路径重做一遍先立骨架再填各层细节最后是踩坑记录。2. 计网考点地图先搭OSI与TCP/IP骨架再谈背细节2.1 五层模型与各层PDU骨架错了后面全乱计网复习第一关不是背协议而是建立分层模型。绝大多数教材先给七层OSI参考模型但考试和实际工作里跑的是TCP/IP的四层或五层模型。北工大这类学校的期末卷子默认按五层模型出题应用层、传输层、网络层、数据链路层、物理层。整理笔记的第一件事就是把每层的PDU协议数据单元名称写死应用层叫“报文”message传输层叫“报文段”segment网络层叫“IP数据报”datagram链路层叫“帧”frame物理层叫“比特流”。选择题特别喜欢跨层问“这个字段出现在哪一层”只要把PDU名字和层次对应关系记成条件反射这类题就不会丢。各层职责也要能一句话说清物理层管透明传输比特流链路层管相邻节点组帧、差错控制和流量控制网络层管路由选择和逻辑寻址传输层管端到端通信、复用分用和可靠传输应用层管具体网络应用。这里最容易犯的错是“传输层和网络层的寻址分不清”——网络层用IP地址找主机传输层用端口号找进程二者缺一不可。记法“IP定位机器端口定位应用程序”。还有一个高频混淆点OSI的表示层和会话层去哪了按五层模型加密、压缩、ASCII转码这些表示层功能并进了应用层会话管理也由应用层自己处理比如HTTP的Cookie机制。考试判断题问“数据加密属于哪一层”按五层模型答应用层按OSI参考模型答表示层。笔记里要把两套模型的映射单独列一行这是我复习早期丢分最多的地方。我建议每复习一层就在纸上徒手画一次五层阶梯并标注每层“对上提供什么服务、对下依赖什么服务”。这个动作看起来基础但能避免后期把“路由器工作在网络层”和“交换机工作在链路层”这种送分题搞反。框架图不要求好看能让自己三秒定位就好。2.2 每层设备和协议对照表一张表钉死基础分设备与协议的对应关系适合用一张表钉死。我整理笔记时把这张表放在第一页后面每一章回看一次记忆会牢固很多。层典型设备核心协议/技术寻址方式应用层主机HTTP、DNS、SMTP、FTP、DHCP域名/URL传输层主机端口TCP、UDP端口号网络层路由器IP、ARP、ICMP、RIP、OSPFIP地址数据链路层交换机、网桥Ethernet、MAC、VLAN、PPPMAC地址物理层中继器、集线器曼彻斯特编码、NRZ、频分复用无这张表建议自己默写三遍。第一遍遮住“典型设备”列按层推设备第二遍遮住“核心协议”列按设备和场景反推协议第三遍整表默写。很多人只背协议不背层次考到“HTTP运行在哪一层、基于哪个传输层协议”这种送分题反而卡壳。设备辨析有个容易被忽略的点集线器和交换机看着都是“接网线的盒子”但集线器所有端口共享带宽、冲突域不隔离属于物理层交换机每个端口独享带宽、隔离冲突域属于链路层。中继器也属于物理层作用是放大衰减的信号、延长传输距离。判断口诀不带MAC地址表的设备基本不是链路层以上的东西。另外传输层的“UDP还是TCP”是个经典连坐考点HTTP用TCP 80HTTPS用TCP 443DNS查询用UDP 53、区域传输用TCP 53DHCP用UDP 67/68TFTP用UDP 69。这些端口号建议单独整理成一张小卡背到条件反射为止。端口题看似送分但丢分率意外地高原因就是混在一起背容易乱。2.3 一个URL的完整旅程把分层思想串成一条线框架搭完下一步是验证笔记有没有立起来。方法很土但很有效把“浏览器输入网址到页面显示”这条链路完整走一遍每一步标出层次和协议。应用层DNS解析域名先查浏览器缓存、本地hosts再走UDP 53向本地DNS服务器递归查询拿到目标IP。应用层构造HTTP GET报文交给传输层。传输层TCP三次握手建立连接目的端口80把HTTP报文切段、加序号和校验和。网络层查路由表确定下一跳封装成IP数据报加源和目的IP地址。链路层ARP询问下一跳网关的MAC地址拿到后封装成帧。物理层转成比特流在介质上传输中间经过交换机转发、路由器逐跳转发。服务器反向处理响应报文再沿同一条路径返回。这条链路能默写下来分层模型的题基本通吃。我在整理笔记时会在每个环节旁边标注“这步出问题会看到什么现象”DNS没命中表现为首次访问卡顿几秒TCP握手失败表现为连接超时或拒绝ARP缓存过期表现为ping第一包延迟物理层断链表现是网卡显示未连接。把现象和层次绑定比孤立背协议有效得多——考试简答题问“某现象可能出在哪几层”就能按这条链路逐段排查。这层功夫做扎实后后面物理层到应用层的细分考点本质上都是在给这条链路的每个环节补充参数和计算细节。所以这一章建议投入整份笔记四分之一的时间骨架值这个价。3. 物理层与数据链路层CRC、CSMA/CD和MAC帧背下来就能稳拿的分3.1 CRC循环冗余校验手算流程与Python验证脚本CRC是数据链路层最常见的计算题。原理一句话发送方在数据末尾追加冗余码FCS使整个发送序列能被生成多项式整除接收方用同一多项式去除余数为0则无误否则丢弃或重传。冗余码位数等于生成多项式的最高次幂。计算用的是模2除法加减都不进位、不借位本质就是异或。以经典题目为例要发送的数据D为101001生成多项式G(x)x³x²1对应二进制1101。多项式最高次幂是3所以先在被除数后补3个0变成101001000用它对1101做模2除法得到余数001这就是FCS。最终发送序列是101001001。接收方收到后用1101除余数为0即认为无误。手算最容易错在“位数对不齐时补0”尤其最后一步不够除时余数直接取剩余位。我建议写完手算后用下面这段Python验证结果。课堂上有同学用普通减法的思路去算结果死活对不上问题就出在异或和减法的差别上。def crc_remainder(data: str, poly: str) - str: 计算 CRC 冗余码FCS。 data: 原始数据二进制字符串如 101001 poly: 生成多项式二进制字符串如 1101 返回: 冗余码长度为 len(poly) - 1 data_len len(data) fcs_len len(poly) - 1 dividend data 0 * fcs_len # 补 fcs_len 个 0 remainder dividend[:fcs_len] for i in range(data_len): bit dividend[i fcs_len] if remainder[0] 1: # 异或多项式模2除法当前位为1时做异或 remainder bin(int(remainder, 2) ^ int(poly, 2))[2:].zfill(fcs_len) else: # 当前位为0直接左移下降一位 remainder remainder[1:] bit return remainder.zfill(fcs_len) print(crc_remainder(101001, 1101)) # 输出 001这段脚本的核心是模拟长除法里的“异或后补位”被除数当前最高位是1就异或生成多项式是0就直接左移下降一位。参数说明里最需要注意的是poly最高次幂决定fcs_len比如生成多项式x⁴x³1对应poly11001fcs_len4。data必须是纯二进制字符串不能带空格。考场上不会让算大数多项式一般是x³、x⁴级别手算五步就能出结果。需要小心的是“给定接收端收到的序列判断是否出错”的变式把得到的整个序列数据FCS对多项式做一次模2除法余数为0则没错。考试里有个坑点是接收序列可能被人为改成“数据变、FCS不变”这时候单独看FCS没用必须重算。我在笔记里专门标注了一句话“CRC只能检错不能纠错”简答题考到别多嘴答成纠错。3.2 CSMA/CD与最小帧长争用期公式的三种考法早期以太网使用CSMA/CD载波监听多路访问/冲突检测计算题核心公式就两个争用期冲突窗口2ττ是单程传播时延最小帧长争用期×数据传输速率。为什么要有最小帧长因为发送方必须在发送完之前检测到冲突。如果帧太短冲突信号还没传回来帧就发完了发送方会误以为发送成功这就是考场简答题爱问的“为什么要限定最短帧长”。经典例题以太网两站点间电缆长1km信号传播速率2×10⁸m/s数据传输速率10Mbps求最小帧长。先算单程时延τ1000÷(2×10⁸)5μs争用期2τ10μs最小帧长10×10⁻⁶×10×10⁶100bit。注意按给定参数算出来是100bit但标准以太网规定的是64字节原因是实际网络有中继器和集线器的额外时延考试一般按题面参数算不用硬凑64字节。三种考法要都会一是给定总线长度和速率求最小帧长二是反向给最小帧长和速率求总线最大长度三是问“某站发了一个比最小帧长短的帧接收方怎么处理”——应当丢弃。反向题的坑几乎都在单位换算Mbps→bit/s乘10⁶km→m乘10³μs→s乘10⁻⁶一步错全错。我一般会在笔记里给这个公式画一个三角关系图冲突窗口、数据速率、最小帧长知道任意两个量就能反推第三个做题先圈单位再代公式。还有一个延伸点信道利用率与争用期有关定义参数aτ/T₀T₀是帧发送时间a越小利用率越高。简答题常问“提高信道利用率的手段”——增大帧长、减小总线长度、提高数据速率。这个概念不难但很多同学的笔记里没有考到就只能现场推容易慌。另外CSMA/CD和CSMA/CA要分清CA用于无线局域网点名靠的是随机退避避免冲突而非检测冲突因为无线环境没法做到一边发一边听。这个对比是选择题的高频陷阱。3.3 交换机自学习与VLAN数据链路层的两个大题来源交换机的MAC地址自学习是简答和综合题的常客过程分四步A发帧给B交换机收到后把“源MAC入端口”写入MAC表然后查表中是否有目的MAC——没有就向除入端口外的所有端口广播泛洪B回帧时交换机学到了B的MAC和入端口下次A再发B交换机直接按表转发不再广播。三个细节常考MAC表条目有老化时间华为交换机默认300秒到期删除收到目的MAC在表中但对应端口已失效的帧交换机重新泛洪多台交换机级联成环时广播帧会无限循环所以要跑STP生成树协议阻断冗余链路。记法“先学习后转发学不了就泛洪环路交给STP”。这里的计算题很少但简答题可能要求描述“交换机如何避免广播风暴”答案落脚到STP和VLAN两个手段。VLAN的作用是隔离广播域。默认所有端口属于VLAN 1划分方式有静态按端口固定分配和动态按MAC地址分配。跨交换机相同VLAN通信要打802.1Q标签标签长4字节包含TPID和TCI交换机之间连接叫Trunk链路。考试常问“802.1Q标签是在标准以太网帧的哪个位置插入”——在源MAC地址之后、长度/类型字段之前。配置层面常见做法是在交换机上先创建VLAN再把端口划进去最后把级联口配成Trunk。家用傻瓜交换机不支持VLAN所以题里说“用VLAN隔离广播风暴、提高安全性”指的都是可网管交换机。还有个小考点容易被忽略VLAN能隔离广播域但不能隔离不同网段间的通信跨VLAN通信必须走路由器或三层交换机。这个“网关在手跨VLAN不愁”的关系和网络层的子网划分是连着的一个VLAN通常对应一个IP子网。把这层关系写进笔记链路层和网络层的衔接就通了。4. 网络层子网划分、ARP和路由协议计网的分水岭4.1 子网划分与CIDR三步计算法与ipcalc命令验证网络层是计网考卷拉开分差的地方子网划分是必考计算。我的三步法第一步确定主机位数n用2ⁿ−2≥需求主机数减2是去掉全0网络地址和全1广播地址第二步从32位地址中扣掉主机位得到子网掩码前缀第三步从掩码边界开始枚举子网写出每个子网的网络地址、广播地址和可用主机范围。举个例子公司有4个部门每个部门最多25台主机拿到C类网段192.168.1.0/24。每个子网需要5位主机位因为2⁵−230≥25所以子网掩码是/27即255.255.255.224。子网块大小2^(32−27)2⁵32子网起始地址依次是0、32、64、96、128、160、192、224。第一个子网网络地址192.168.1.0广播地址192.168.1.31可用主机192.168.1.1到192.168.1.30。这里最容易翻车的点是块大小计算——把“32−275”当成块大小实际块大小2^主机位数32。手算完可以用ipcalc命令验证Linux下一条命令看全所有信息ipcalc 192.168.1.0/27输出会依次列出Network、Netmask、Broadcast、HostMin和HostMax对照手算结果一目了然。没有Linux环境可以用Python的ipaddress模块做同样的事import ipaddress net ipaddress.ip_network(192.168.1.0/24) # 把 /24 切成 8 个 /27 子网 subnets list(net.subnets(prefixlen_diff3)) for subnet in subnets: hosts list(subnet.hosts()) print(subnet.network_address, subnet.broadcast_address, hosts[0], hosts[-1])参数说明prefixlen_diff3表示在原前缀上多借3位即从/24变/27子网数2³8。脚本能批量验算比手算效率高得多。整理笔记时我会留一页“错题集”专门记这类边界算错的例子。CIDR还有一个考点是路由聚合把连续的子网合并成一条路由减小路由表规模。例如192.168.1.0/24、192.168.2.0/24、192.168.3.0/24三条路由可聚合为192.168.0.0/22。方法是找这些地址里最长公共前缀——前22位相同。考题常给几个地址让选聚合后的CIDR先把地址写成二进制数最右边不同的一位。4.2 ARP协议同一网段与跨网段的请求路径ARP的考点高度集中在“IP地址到MAC地址的映射过程”。先明确一点ARP只工作在同一广播域内路由器不会转发ARP广播。场景一同一网段内A192.168.1.10访问B192.168.1.20A先查ARP缓存没有就广播“谁的IP是192.168.1.20”B收到后单播响应A把B的MAC写入缓存。场景二跨网段A访问C192.168.2.10A的目标MAC不是C而是默认网关路由器的MAC帧先到路由器再由路由器用同样的ARP过程把帧转发给C。这个“跨网段要找网关MAC”是选择题最常挖的坑。我复习时把它抄成大字贴在笔记第一页目的IP是C的目的MAC是网关的。有个验证方法是抓包同一网段ping目标MAC是对方主机跨网段ping目标MAC永远是网关。Wireshark看ARP请求的“Who has”字段也能验证不过考试只需要记住结论就行。ARP缓存有老化时间Windows下动态条目通常几十秒到几分钟华为交换机默认120秒。ARP欺骗的原理是向目标发送伪造的ARP应答把网关MAC改成攻击者MAC后续流量被中间人截获。考试只需要知道“ARP是无认证的动态条目可被覆盖防御手段是静态ARP绑定”。还有一个观察点首次ping一个目标时先有ARP广播后有ICMP请求第一次慢、第二次快的原因就在ARP缓存上。这个现象可以解释“为什么ping第一包会丢”。4.3 RIP与OSPF距离矢量与链路状态的核心区别路由协议这节选择题和简答题反复考RIP和OSPF的核心机制。RIP是距离矢量协议以跳数为度量最大15跳16跳视为不可达每30秒向邻居广播完整路由表并发送任何更新收敛慢且容易产生路由环路解决靠水平分割、毒性逆转和触发更新。OSPF是链路状态协议以链路代价为度量运行Dijkstra算法计算最短路径只在拓扑变化时触发更新收敛快支持区域划分骨干区是Area 0。对比记忆主线是距离矢量“我信邻居传给我的表”链路状态“我自己画地图”。考题喜欢问RIP出现路由环路后数据包会怎样在路由器之间来回打转直到TTL归零。OSPF的Hello报文用来建立和维护邻居关系选举DR/BDR减少邻接数量这类填空点出现频率很高。BGP也值得记两行路径矢量协议基于TCP 179端口是自治系统之间的路由协议和IGP的区别在于BGP看重策略而非单纯最短路径。还有个高频考点是静态路由和默认路由静态路由由管理员手工配置适合小型稳定网络默认路由是“兜底路由”目的地址不在路由表时走默认路由。配置命令的形式各厂家不同但思路一致考试一般不要求写配置只要知道“路由器查路由表时匹配原则是最长前缀匹配”别把“默认路由最优先”记反了即可。5. 计网复习避坑指南5个丢分现场与排查路径这一章是血泪经验。复习计网时很多知识点看起来懂了一到做题或模拟配置就翻车。下面五条是我反复见到的高频错误每条按“现象→原因→解决”梳理可以直接抄进笔记。5.1 子网掩码与默认网关算对了地址却配不通现象子网划分手算全对在模拟器里配好IP和掩码PC之间却ping不通。 原因忘了配默认网关或者网关IP不在自己子网范围内。跨网段通信时数据包根本发不到路由器因为目的MAC没有被正确解析成网关MAC帧只能困在本局域网里。 解决先ping网关地址确认链路层通再ping远端地址网关不通就执行arp -d清空ARP缓存WindowsLinux用ip neigh flush all重新触发ARP解析。笔记里我把“同一网段免网关跨网段必配网关”作为自查口诀每次配完IP先对这句话。另外要检查掩码是否把网关地址划到了子网外网关必须是本子网的可用地址不能是网络地址或广播地址。5.2 CRC模2除法当成普通减法现象手算CRC余数算出来的FCS和标准答案差好几位。 原因把模2除法当成普通二进制减法用了借位的思路。实际上模2加减就是异或同1得0异1得1没有进位也没有借位。 解决算的时候心里默念“异或、异或、异或”。每步异或前先看被除数当前最高位是1就异或多项式是0就左移补下一位。算完余数后把“数据余数”整体再做一次模2除法余数为0才算过关。我遇到过不止一个同学栽在这里基本都是十进制除法的手感没切换过来。练三组题101001算三次、1101011011算一次、教科书课后题抽两组手感就回来了。5.3 TCP的RTT计算把重传时间估错现象题目给定一组RTT样本序列让用RFC 6298的算法计算SRTT和RTO答案总差一点。 原因初始值设置不对。RFC 6298规定第一个RTT样本直接赋给SRTT同时RTTVAR取样本值的一半后续样本才按SRTT(1−α)×SRTTα×RTT迭代α默认0.125RTOSRTT4×RTTVAR。很多人跳过了“第一个样本特殊处理”这一步直接套迭代公式。 解决把公式写成模板先找第一个样本初始化SRTT和RTTVAR再逐个样本迭代。注意题目给的α、β值没给就用默认0.125和0.25。单位也容易出错样本单位是毫秒就全程毫秒不要混秒。考试时先写出初始化的两组值再写迭代过程步骤分能拿稳。5.4 HTTP长连接与TCP连接复用混为一谈现象判断题“HTTP/1.1中Keep-Alive表示TCP连接会一直保持”答错。 原因知道Keep-Alive是长连接但没分清楚“应用层的持久连接”和“传输层的TCP连接保持”是两个概念。HTTP/1.1的Keep-Alive是让TCP连接在多个HTTP请求和响应之间复用减少反复建立连接的开销但TCP连接并不会因为应用层不说再见就一直保持连接维持靠的是TCP自己的定时器和保活探测报文。 解决记住三句话Keep-Alive属于应用层的行为让一个TCP连接服务多个HTTP事务TCP自身有Keep-Alive计时器用来检测对端是否存活两者不是一个东西HTTP/1.1默认开启Keep-AliveHTTP/1.0默认关闭。题目问“谁在维持这条TCP连接”标准答案是TCP协议栈而不是应用层别把功劳记错。5.5 窗口计算被“三个窗口”绕晕现象计算TCP发送窗口大小时把接收窗口rwnd、拥塞窗口cwnd、滑动窗口swnd搞混套错公式。 原因TCP发送窗口的实际可用大小是min(接收窗口拥塞窗口)很多人只取其中一个值就往答案上写。还有一类混淆是把接收窗口当成接收方缓存剩余量题目里给的是“接收方缓存总大小”和“已占用大小”需要先减出rwnd。 解决做题先圈题干给的是哪个窗口报文里窗口字段是rwnd发送方自己维护的是cwnd实际能发多少看min(rwnd, cwnd)。如果题目问“接收方还剩多少缓存”那是rwnd的变化与cwnd无关。把这三个词并排写在笔记里后面各标一行适用场景rwnd反映端到端接收能力cwnd反映网络拥塞程度swnd是两者取小后的结果。6. 传输层与应用层踩分点从三次握手到HTTP的追问链6.1 三次握手与四次挥手状态迁移能默写才算过三次握手四个关键点SYN标志位变化是SYN→SYNACK→ACK第一个包的序号是随机初始序号ISN不是从0开始前两个包不能携带数据第三个ACK可以带为什么不是两次握手——防止历史失效请求滞留让服务器误开连接。四次挥手要点FIN→ACK→FIN→ACK主动关闭方进入TIME_WAIT并等待2MSL原因有两个确保最后一个ACK到达对方让旧报文在网络里自然消亡避免端口被复用后收到迟到数据。状态迁移图里SYN_SENT、ESTABLISHED、FIN_WAIT_1/2、TIME_WAIT、CLOSE_WAIT这几个状态必须能默写简答题很可能要求画图。6.2 拥塞控制慢开始与拥塞避免的cwnd曲线慢开始每轮RTT把拥塞窗口翻倍超过阈值ssthresh进入拥塞避免改为线性增长超时重传时ssthresh降为当前窗口一半窗口重置回1快重传收到3个重复ACK时窗口减半再线性恢复不走慢开始。这部分踩分点是画cwnd随时间变化的曲线必须背下“1→2→4→8→…→线性→断崖→爬坡”的锯齿形态。题目给超时或快重传的轮次让标出ssthresh变化值这类题只要记住“重传是断崖、重复ACK是减半”就不会错。6.3 HTTP版本差异与考前自测技巧HTTP/1.0每请求一个连接HTTP/1.1引入Keep-Alive和管线化但队头阻塞没根治HTTP/2.0用多路复用、二进制分帧、头部压缩解决队头阻塞问题。TLS位于传输层之上、应用层之下考到HTTPS 443端口时答出TLS握手协议与记录协议就能拿分。考前一周我会按“层→协议→端口→一次失败现象”做四层自测随便指一个协议能说出它属于哪层、默认端口、失败后看到什么现象。比如DNS失败是域名解析超时DHCP失败是拿不到IP变成169.254开头TCP握手失败是connect超时。这套自测方法让我在考场上有“看到题目就能定位是第几层”的条件反射。每次复习到犯困时我就用四层口诀过一遍一页纸还没写完思路先清醒了。希望帮到你。本文还有配套的精品资源点击获取
返回列表