ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机网络基础学习指南:从分层模型到抓包排障实战

计算机网络基础学习指南:从分层模型到抓包排障实战 简介《计算机网络基础》演示文稿系统讲解网络的定义、组成、常见拓扑结构与分类方式。内容从两台微机通信端口直连、交叉线网卡连接起步延伸到以太网局域网所需的网卡、通信电缆与网络操作系统再拓展到利用公共通信线路和卫星实现的广域网与Internet层次清晰。课件重点梳理了资源共享、通信功能以及高可靠性、均衡负荷、协调运算、分布式处理等功能并结合企业信息管理场景说明网络如何支撑跨部门数据共享、多机备份、客户/服务器架构降低硬件成本以及远程办公与协同设计。此外还介绍了面向终端的计算机通信网络等发展历程便于理解网络演进脉络。资源包共1个文件为PPT演示文稿压缩后大小仅1.13MB可直接下载已有1145人学习过适合信息技术课程教学、网络基础自学入门或考前复习。1. 计算机网络基础一份让 Devops 和 408 考生都少走弯路的资源计算机网络基础这门课越早学透越划算。我第一次意识到它的价值是帮人排查一次线上超时服务端 CPU 正常、内存正常、日志干净但客户端请求就是频繁超时。最后 tcpdump 一看是两台机器之间的 TCP keepalive 配置不一致连接建一次被 RST 一次。整个排查过程没有用到任何高级框架全靠对三次握手和连接状态的理解。这门课既在期末考和 408 里占了大比重也是 DevOps 工程师排障时的底层直觉。这套资源把教材知识点、抓包实验、复习题库串成了一条可执行的学习路径覆盖协议分层、TCP 连接管理、子网划分、路由配置和 DNS 解析这些高频考点。在校学生可以用它配合期末复习考研党能拿它给王道和谢希仁教材查漏补缺工程师可以直接跟着实验章节把 Wireshark 用顺手。2. 分层模型与核心协议用一张表把 OSI 和 TCP/IP 的关系捋清2.1 两套分层模型对照着记比单背一门有效学计算机网络绕不开分层模型但很多人的问题在于两套体系混着记背完 OSI 七层忘了 TCP/IP 四层或者把两边的层名张冠李戴。我自己的方法是把两套模型并排写在纸上一层一层对着看不是为了区分而是为了理解「为什么 TCP/IP 要把会话层和表示层并进应用层」。OSI 七层从下到上是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP 模型常见的是四层表述网络接口层、网络层、传输层、应用层。谢希仁的《计算机网络》在实际讲解时采用了五层结构把网络接口层拆成物理层和数据链路层和硬件设备对应得更清楚。这套资源里的笔记就是按五层结构组织的目录和教材章节一一对应复习的时候不用来回翻书。笔记里有个值得说的设计每一层都画了一张「协议图谱」把该层涉及的协议、设备、寻址方式集中在一页上。比如网络层就是 IP、ICMP、ARP 加上路由协议那张图背起来比分散在书里高效很多。关于教材选择谢希仁的《计算机网络》是国内高校使用面最广的知识点按五层展开叙述偏原理《计算机网络自顶向下方法》则强调先看应用层再向下兜底章节顺序和很多高校实验课的安排一致。这套资源的笔记同时兼容了两种讲法知识点结构按谢希仁的章节走实验案例按自顶向下的思路编排。时间有限的话不要两本教材平摊精力踏踏实实跟定一本用笔记里的思维导图做交叉索引就够了。两套模型对比的关键就一句传输层以上归应用传输层以下按需拆。OSI 把会话、表示拆出来是理论完备TCP/IP 合并是工程务实。考试如果让你说「各层功能」按 OSI 答如果让你分析实际协议工作过程按 TCP/IP 答。做题时先看清楚题目问的是哪套体系再动手这个判断本身就能避开一半的审题坑。2.2 核心协议与端口速查表80% 的选择题都从这里出协议和端口是网络基础里性价比最高的记忆点期末选择和 408 真题都在反复考。下面这张表是我整理复习资料时手写的速查表贴到书桌前刷题遇到不确定的随时看一眼两周基本就熟了。层级协议端口一句话功能应用层HTTP80明文网页传输应用层HTTPS443HTTP 加 TLS 加密应用层DNS53域名解析UDP/TCP 都用应用层FTP20/21文件传输20 数据、21 控制应用层SSH22远程登录加密通道应用层Telnet23远程登录明文不推荐应用层SMTP25发邮件应用层POP3110收邮件应用层DHCP67/68自动分配 IP67 服务端、68 客户端传输层TCP-面向连接可靠传输传输层UDP-无连接低延迟网络层IP-寻址与路由网络层ICMP-差错报告ping 就是它网络层ARP-IP 解析成 MAC只在网段内工作记端口的时候注意两组容易混的FTP 的数据端口是 20、控制端口是 21做题时经常有人把数据端口写成 21DHCP 是服务端 67、客户端 68不是 65/66。这套资源配套的题库里把这些高频混淆点单独列了辨析题刷完最大的感受是协议功能靠理解端口号靠重复没有捷径。如果你在跟湖科大教书匠的视频课可以把这张表放旁边每讲一个协议就在表上打个勾查漏补缺的效率会高很多湖科大教书匠的视频对 408 的覆盖面是够的但看完视频必须配章节题落地只看不练很难形成长期记忆。2.3 网络设备分层交换机、路由器、防火墙别放错位置设备题是期末和 408 的另一类常客。集线器工作在物理层信号来了原样广播不区分设备交换机工作在数据链路层靠 MAC 地址表转发帧MAC 表是通过学习源地址动态建立的路由器工作在网络层靠 IP 路由表转发分组。三层交换机可以看作交换机加了路由功能在局域网内部用得很多。考试如果拿不准记住「交换机组内网、路由器连外网」这句话能救你半道题。防火墙比较特殊它既可以做网络层的包过滤也能做应用层的代理审查所以考试很少把防火墙固定死在某一层。如果题目问「防火墙属于哪一层」优先回答「涉及网络层及以上的综合设备」比较稳妥。设备的层级记忆其实有一条主线每一层设备只能读懂自己这一层及以下的信息。路由器读不了 MAC 地址表需求它是转发 IP 包的交换机做不了跨网段路由它只认 MAC。理解了这条主线设备题基本不会错。交换机还有一个高频考点是生成树协议 STP用来在物理环路环境下防止广播风暴。它通过选举根桥、阻塞冗余端口来打破环路最后生成一棵无环的逻辑树。我最初觉得 STP 很难后来按照笔记里的「先选根桥、再选根端口、最后选指定端口」三步走配合 Packet Tracer 搭一个双链路拓扑看实际阻塞效果一下就明白了。这套资源的实验指导里就有这个案例强烈建议动手跑一遍。3. 抓包验证用 Wireshark 把三次握手和 HTTP 流程看个明白3.1 环境准备Wireshark 安装与抓包过滤器网络基础不能只靠背抓包是验证知识最直接的手段。我第一次抓包是在学校机房老师给了一个抓取本机 HTTP 流量的任务我用 Wireshark 默认配置抓了一堆广播包什么都看不清。后来才明白抓包的第一个动作不是点开始而是先想清楚「我要看什么流量」然后把这个流量用过滤器圈出来。Wireshark 的捕获过滤器在开始抓包之前设置语法和显示过滤器不一样。比如只抓 80 端口的 HTTP 明文流量# 捕获过滤器,抓取 HTTP 明文流量 tcp port 80如果不方便装图形界面命令行用 tcpdump 可以完成大部分抓包分析尤其在服务器上排查问题的时候sudo tcpdump -i eth0 -nn -c 50 tcp port 80这个命令拆开看-i eth0指定网卡-nn不做域名和端口反解减少噪音-c 50抓满 50 个包就自动停tcp port 80是捕获表达式。抓完可以用-w参数把报文保存成 pcap 文件拿回本地用 Wireshark 慢慢看sudo tcpdump -i eth0 -nn -w /tmp/http.pcap tcp port 80很多高校的网络实验课会要求用 Wireshark 完成抓包实验报告这套资源的实验指导里把常见实验对应的过滤表达式都列了出来包括三次握手、HTTP 请求、DNS 查询和 ARP 请求照着抄一遍比自己瞎点效率高得多。提示抓包前先确认过滤表达式别开着默认抓包就点开始否则十分钟后你面对一堆广播包会怀疑人生。3.2 三次握手与四次挥手从过滤器到报文细节三次握手是期末考试必考、面试必问但很多人只是纸上画箭头没在 Wireshark 里见过真实报文。抓一次完整握手很简单过滤器里输入tcp.flags.syn 1访问一个网站就能看到一堆 SYN 报文。要看得更细需要把一次 TCP 连接单独拎出来用流过滤tcp.stream eq 0tcp.stream eq 0是显示过滤器把 Wireshark 里编号为 0 的 TCP 流全部列出来这条流里包含从 SYN 到 FIN 的所有报文。我第一次看到真实握手时的感受是课本上「SYN 报文带一个随机序号」这句话在抓包里根本不用背直接看客户端发的第一个包的 Seq 值再对比服务端回的 SYN-ACK 序号关系一目了然。三次握手的报文特征配合抓包看一遍就有印象了报文方向关键标志位含义第 1 个包Client → ServerSYN, Seqx客户端请求建立连接第 2 个包Server → ClientSYNACK, Seqy, Ackx1服务端同意并确认第 3 个包Client → ServerACK, Seqx1, Acky1客户端确认连接建立四次挥手同样可以在抓包里找到过滤器切到tcp.flags.fin 1在浏览器里关闭一个标签页就会看到 FIN、ACK 成对出现。注意一点挥手的第 3 和第 4 个包往往紧挨着不像握手那样有明显的往返延迟因为服务端的 FIN 通常在数据发送完成后立刻发出两个方向的数据都发送完毕才各自关闭。如果看到大量 TIME_WAIT 状态积压那是主动关闭方在等待 2MSL防止旧连接的延迟报文干扰新连接这个知识点在期末简答题里出现概率很高。3.3 HTTP 与 DNS 抓包应用层协议怎么读抓包不只验证 TCP应用层协议更能体现「分层」的意义。HTTP 抓包直接用显示过滤器http.request.method GET这个过滤器把发给服务器的所有 GET 请求列出来展开每一行的 Hypertext Transfer Protocol 字段能看到请求行、Host、User-Agent、Cookie 等头部信息。配合 3.2 的 TCP 流过滤还能看到一次 HTTP 请求对应的 TCP 连接是否被复用这就能真正理解 keepalive 的作用如果多个 HTTP 请求发生在同一条 TCP 流里说明连接复用生效如果每个请求都新建连接除了性能问题还可能是服务端配置了短连接策略。DNS 抓包也很直观。先在系统里清一下本地 DNS 缓存然后在 Wireshark 里用dns.qry.name contains baidu过滤再发起一次域名解析。你会看到客户端发给本地 DNS 服务器的 UDP 查询包以及带解析结果的响应包。展开底部的 DNS 协议树Transaction ID、Flags、Question、Answer 字段全部可见。以前我分不清递归和迭代查询直到用抓包观察了一次完整解析又用dig trace把从根服务器到权威服务器的链路走了一遍才彻底理解「递归是别人帮你查完给你结果迭代是告诉你去哪查、你自己查」。这套资源的题库里有一道经典的 DNS 流程分析大题做完再配合抓包基本不会再丢分。4. 刷题与备考题库用法与常见避坑清单4.1 题库怎么用章节题、综合卷、错题复盘三段式拿到题库不要从第一页开始往后刷那是低效的。我的用法分三个阶段。第一阶段是章节同步练每学完一章教材就做对应的章节题题量控制在 20 到 30 道目的是验证知识点有没有读懂做错的题先不急着翻答案回到笔记里找对应段落再想一遍。第二阶段是综合卷整个科目过完一遍后按考试时间做两到三套综合卷这时候暴露出来的问题才是真正的薄弱项。第三阶段是错题复盘把所有错题按知识点归类统计出错误率最高的三到五个主题集中补。这套资源的题库结构正好支持这种三段式用法前半部分是章节练习后半部分是综合模拟卷答案解析里还标了每道题的考点来源。我在期末复习时基本只靠笔记加题库两样东西教材反而成了字典只有遇到答案解析里看不懂的术语才去翻。一个容易被忽略的地方是简答题和计算题不能只看答案。网络基础的计算题比如子网划分、CRC 校验、滑动窗口套路固定但你必须亲手算一遍。我见过很多同学把解析看懂了就觉得会了一到考场上手就错就是因为算的过程没走一遍进位、借位这些小细节直接翻车。4.2 高频踩坑清单现象、原因、解决下面这五个坑是刷题和实验里最常见的每条都按「现象 → 原因 → 解决」整理你如果踩过其中任何一个说明这块需要回去补。坑一TIME_WAIT 状态记不住、说不清。现象问到 TCP 四次挥手后的状态只记得有个 TIME_WAIT但不知道为什么存在、持续多久。 原因背流程时只记住了四个包的顺序没有理解主动关闭方必须等待 2MSL 才能彻底关闭是为了避免旧连接的延迟报文干扰新连接。 解决在抓包里实际找一次完整挥手再在 Linux 上执行ss -tnlp | grep TIME_WAIT观察真实状态。我用这个方法一次就记住了比背十遍文字都管用。坑二子网划分可用主机数多算两个。现象把 /26 网段的可用主机数算成 64答案实际是 62。 原因忘了网络地址和广播地址不可分配给主机公式应该是 2 的主机位次方减 2。 解决每次算完先验算一遍先写出主机位数量再套公式。第 5 章我会给一个 Python 校验脚本算完拿脚本验一下考试前多练几次就形成肌肉记忆了。坑三DNS 递归查询和迭代查询总是搞反。现象做题时把「本地 DNS 服务器替用户完整查询」说成迭代或者把「根服务器返回下一步地址」说成递归。 原因两个概念都涉及多次查询细节混淆。 解决用dig trace实际观察一次迭代过程看到根服务器、顶级域服务器、权威服务器逐级返回地址就再也不会记反了。递归是「别人帮你跑腿」迭代是「告诉你地址你自己跑」。坑四交换机和路由器的功能场景分不清。现象问「同一个网段内两台机器通信用什么设备转发」有人答路由器。 原因把「转发」这个动作一概而论没区分 MAC 转发和 IP 转发。 解决记住一条判断线——跨网段才需要路由器同一网段内交换机就够了。通信双方先看目标 IP 和自己的掩码做与运算判断是否同网段这个判断过程本身就是考点。坑五CIDR 路由聚合算错前缀长度。现象给两个网段要求聚合聚合后的前缀长度算错导致包含范围不对。 原因对「最长前缀匹配」和「找公共前缀」的操作不熟。 解决把两个网段的二进制展开写在纸上从左往右找第一个不同的位前面的位数就是聚合前缀长度。多练三道题就熟别光在脑子里想必须落笔。5. 子网划分与路由实验手算、脚本和 Packet Tracer 三管齐下5.1 子网划分手算流程借位、可用主机数与常见笔误子网划分是网络基础里计算量最大的部分也是期末和 408 的必考。拿到一道题标准流程是四步先看原始前缀长度再根据需要的子网数量决定借多少位然后算出新前缀长度和每个子网的地址块大小最后写出每个子网的网络地址、广播地址和可用主机范围。举个例子192.168.10.0/24 需要划分成 4 个子网。原始 /24 说明网络位 24 位、主机位 8 位。4 个子网需要借 2 位因为 2 的 2 次方等于 4。借位后前缀变成 /26主机位剩 6 位每个子网的地址块大小是 2 的 6 次方等于 64可用主机数是 64 减 2 等于 62。四个子网分别是 192.168.10.0/26、192.168.10.64/26、192.168.10.128/26、192.168.10.192/26。手算时最容易错的不是借位而是写广播地址。第一个子网的网络地址是 192.168.10.0广播地址是 192.168.10.63可用范围是 192.168.10.1 到 192.168.10.62。这里的关键是广播地址等于下一个子网的网络地址减 1。把这个关系记住写地址块的时候就不容易错位。如果是可变长子网掩码 VLSM 的场景比如一个 /24 要同时满足能容纳 100 台、50 台和 20 台主机的三个子网就要先满足最大的那个100 台需要 7 位主机位2 的 7 次方减 2 等于 126所以从 /25 开始切剩下的一半继续按需求切。这种题的思路是「从大到小排需求逐块切分」这套资源的题库里专门有一组 VLSM 练习题顺序刷下来基本能掌握。5.2 用 Python 校验子网计算结果手算容易漏我一般会把结果用 Python 脚本校验一遍尤其是 VLSM 这类多级切分的题。脚本核心逻辑很薄用标准库 ipaddress 就能实现import ipaddress def plan_subnets(network_cidr, target_count): 把 network_cidr 平均切成 target_count 个子网,输出每个子网的地址详情。 net ipaddress.ip_network(network_cidr, strictFalse) # 子网数量对应的借位数:4 个借 2 位,8 个借 3 位 bits (target_count - 1).bit_length() new_prefix net.prefixlen bits print(f原网段: {net}, 借 {bits} 位, 新掩码 /{new_prefix}) for idx, sub in enumerate(net.subnets(prefixlennew_prefix), 1): first sub.network_address 1 last sub.broadcast_address - 1 print(f子网{idx}: {sub.network_address}/{new_prefix}) print(f 可用范围: {first} ~ {last}, 共 {sub.num_addresses - 2} 个) print(f 广播地址: {sub.broadcast_address}) plan_subnets(192.168.10.0/24, 4)这段代码里ip_network负责解析地址并算出掩码net.subnets(prefixlennew_prefix)按新前缀长度切分num_addresses是子网总地址数减 2 就是可用主机数。bits (target_count - 1).bit_length()是计算借位数的一个小技巧比如目标 4 个子网3 的二进制是 11位长度是 2正好是借位数。如果你要切的是 5 个子网按这个公式借 3 位会得到 8 个子网多出来的 3 个留作备用这也是实际工程里的常规做法。运行结果应该是四个子网每个 62 个可用地址。做完手算题再用这个脚本核对哪里算错了立刻就能发现比反复检查草稿纸省事得多。5.3 Packet Tracer 静态路由实验让路由表变得可见路由配置是理解网络层最直观的方式Cisco Packet Tracer 在这套资源的实验指导里排了三个实验静态路由、默认路由和 RIP 动态路由。其中静态路由是基础也是期末上机可能考的。拓扑可以搭两台路由器 R1、R2各自带一个网段中间用一根交叉线连接。给接口配好 IP 后直接 ping 对端网段是失败的因为路由器不知道该把包往哪送。这时候手动加静态路由Router enable Router# configure terminal Router(config)# interface g0/0 Router(config-if)# ip address 192.168.1.1 255.255.255.0 Router(config-if)# no shutdown Router(config-if)# exit Router(config)# interface g0/1 Router(config-if)# ip address 10.0.0.1 255.255.255.0 Router(config-if)# no shutdown Router(config-if)# exit Router(config)# ip route 192.168.2.0 255.255.255.0 10.0.0.2 Router(config)# end Router# show ip route这段配置里ip address是给接口配 IP 和掩码no shutdown是启用接口思科设备接口默认关闭少敲这一条是新手最常见的翻车点ip route是告诉路由器去往 192.168.2.0/24 网段的包下一跳交给 10.0.0.2。最后show ip route查看路由表能看到一条静态路由条目。注意下一跳地址必须是路由器直连网段内的地址如果是直连路由也可以写ip route 192.168.2.0 255.255.255.0 g0/1指定出接口两种写法在考试里都算标准答案。做这个实验最大的收获是理解了「路由表决定转发」R1 的路由表里如果没有目标网段条目这个包就会被丢弃在抓包里的表现是 ICMP 目的不可达。以前我觉得路由协议抽象看到show ip route输出里那一行行条目再配合 R2 上对应配置路由决策的过程就变成可见的了。默认路由的配置就更短了一条ip route 0.0.0.0 0.0.0.0 10.0.0.2就能让路由器把所有未知目标都扔给上游这也是为什么默认路由也叫「最后的网关」。注意思科设备的接口默认关闭不敲no shutdownIP 配了也不会生效。这个细节在期末上机里能卡掉一大半人。6. 把网络基础变成排障直觉三个最常用的实战验证动作6.1 从 ping 到 mtr用分层思路缩小问题范围学完这套资源后排障的第一个动作不再是「先看日志」而是按分层思路来先 ping 目标地址通了说明网络层通再 ping 域名通了说明 DNS 解析和网络层都没问题然后 curl 端口通了说明传输层以上都没问题最后才看业务代码。这个顺序本身就是对分层模型的实践。ping 不通的时候mtr 可以帮你看路径在哪一跳出了问题mtr -n 8.8.8.8-n不做反解输出每一跳的丢包率和延迟。如果丢包集中在某一跳问题大概率在这条链路上的某个设备如果最后一跳之前都正常、最后一跳丢包那可能是目标主机自身过滤了 ICMP不一定是故障。别看这个命令简单它能避免你去重启一台本来没问题的机器。6.2 ss 与 curl端口、连接状态、HTTP 返回码一次查清服务端口连通性排查我习惯用 ss 而不是过时的 netstatss -tnlp | grep :3306-t只看 TCP-n不反解端口名-l只显示监听状态-p显示进程信息。这条命令查的是 MySQL 端口是否在监听、被哪个进程占用。如果端口没监听检查服务本身如果端口在监听但连不上看防火墙或安全组规则。HTTP 层的问题用 curl 带详细输出查curl -v http://example.com/api/health-v会打印完整的请求和响应头包括 TCP 连接建立的详细信息、TLS 握手过程和 HTTP 状态码。看返回码比看业务日志快502 是网关问题504 是上游超时301 是重定向配置错误。6.3 线上偶发超时的终极武器tcpdump 定点抓包偶发问题最难查因为问题出现的时候你不在现场。我现在的习惯是只要是「偶发超时」类的工单先判断是网络问题还是应用问题不确定就在客户端和服务端同时抓包sudo tcpdump -i eth0 -nn -w /tmp/client.pcap host 10.0.0.5服务端同时抓一份两份比对看包走到哪一步丢了。如果 SYN 发出去了没有回包是网络路径或服务端防火墙的问题如果 SYN 有回包但 ACK 丢了检查服务端 backlog 队列是否满了如果完整握手后应用层数据没响应问题在业务代码。这套资源学完之后我自己最大的变化是遇到问题不再凭感觉重启服务而是先抓包、再看状态、再动服务这个顺序帮我解决过至少三次看起来毫无头绪的线上故障。从那以后我每次学完一门课都会刻意做个「映射」把知识点对应到真实场景里。网络基础的每个协议都能在 tcpdump 或 ss 的某个输出里找到影子这种映射做多了排障直觉就建立起来了。希望帮到你。本文还有配套的精品资源点击获取
返回列表