多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

从拓扑到抓包:GNS3跑通静态路由与OSPF实验全指南

从拓扑到抓包:GNS3跑通静态路由与OSPF实验全指南 简介这是一份计算机网络课程实验报告聚焦TCP协议从RDT 2.0到Reno拥塞控制的迭代开发面向正在学习传输层协议、需要完成类似实验或理解可靠传输机制的学生。报告逐步分析了RDT 2.0的校验和检查、RDT 2.2的ACK校验、RDT 3.0的超时重传以及选择响应协议如何提升传输效率并结合LOG文件深入解读了慢开始、拥塞避免、快恢复等拥塞控制策略的运作过程。针对无法直接观察cwnd变化的难点作者给出了在每个传输轮次结束后输出当前状态信息的解决方法并总结了迭代开发优缺点与实验建议。资源为1个doc文档容量945KB内容包含代码分析、LOG文件解读、问题对策及系统建议结构清晰可直接用于实验复盘。目前已有291人学习下载适合作为TCP实验报告撰写与协议原理理解的参考。1. 计算机网络实验报告不是一份文档而是一条能复现的验收链路期末前一周你手里那份《计算机网络实验报告.doc》多半是这么来的从学长网盘下载模板改个名字把拓扑截图换成自己的再编几行ping的输出就算交差。可一旦老师追问「OSPF邻居为什么卡在EXSTART」「ACL这条规则为什么没生效」模板救不了你。这个标题背后真正要解决的问题不是「写一份文档」而是「把计算机网络实验从配置到验证完整跑通」再让报告里的每个数字都有据可查。适合三类人正在赶实验报告的在校生、刚转行运维需要补网络基础的工程师、以及带实验课却拿不出标准化流程的老师。下面这套流程能让你从零搭出一台三路由器的微型互联网跑通静态路由与OSPF再用抓包数据把报告写成能经得起追问的样子。2. 先立环境用GNS3搭一台能跑通实验的「微型互联网」2.1 模拟器选型GNS3与Packet Tracer的取舍常见的做法是二选一Cisco Packet TracerPT和GNS3。PT的优势是零配置装完就能拖设备适合第一次接触网络的人劣势是它的协议栈是简化过的OSPF的Hello计时器、DR/BDR选举这些细节和真实设备有差异抓包能看到报文但看不到完整的LSU交互。GNS3跑的是真实IOS镜像协议行为接近物理设备调试命令和真实环境一致代价是需要自己准备镜像并完成首次配置。我一般建议实验报告里同时用PT和GNS3都行但默认选GNS3。理由很实际报告里要写「验证过程」GNS3能让你用Wireshark抓到真实的OSPF Hello报文PT在模拟模式下也能抓包但报文细节被简化过写进报告容易被追问。如果你的课程要求用的是PT也别急着换后面第6章会讲PT模拟模式的隐藏用法那个是PT独有的优势。如果选择GNS3版本注意两点GNS3 2.x以上版本自带Wireshark联动不需要额外配置路由器镜像选择c7200或c3745都可以c7200对OSPF和ACL的支持完整。首次启动时如果提示「No image found」需要在Preferences - Dynamips - IOS routers里添加镜像路径。硬盘留出10GB空间多台设备同时启动时内存占用约2-4GB。想降低内存压力可以把闲置的路由器全部关闭只保留实验需要的三台。2.2 三台路由器组成的链式拓扑接口、地址与时钟频率规划两人一组的课程实验通常要求三台路由器互联最常见的拓扑是R1—R2—R3链式结构。地址规划是报告里第一个会被检查的部分规划得清晰后续配置事半功倍。先给一张我常用的规划表全部使用私有地址段避免和实验室其他组冲突设备接口地址对端说明R1G0/0192.168.12.1/30R2 G0/0互联链路R1Loopback01.1.1.1/32—模拟内网终端R2G0/0192.168.12.2/30R1 G0/0互联链路R2G0/1192.168.23.2/30R3 G0/1互联链路R2Loopback02.2.2.2/32—模拟内网终端R3G0/1192.168.23.3/30R2 G0/1互联链路R3Loopback03.3.3.3/32—模拟内网终端用/30掩码是因为点到点链路只需要两个可用地址广播地址和网络号各占一个规划整齐。实际配置时R1和R2各自启用的接口根据拓扑需要G0/1、G0/0编号以你的镜像为准不必和表里完全一致。在GNS3里画完拓扑后先别急着配地址做一件事给每个接口设置描述。命令是description Link-to-R2-G0/0写在接口配置模式下。报告截图时接口描述会显示在show ip interface brief的输出里一眼就能看出链路用途比光秃秃的IP直观得多。如果实验用的是串行接口而不是以太网口还需要给DCE端配clock rate。常见翻车点是忘了配时钟表现为show ip interface brief里接口状态一直是down。配法是在接口配置模式下执行clock rate 64000注意只能配在DCE端。GNS3里如果看不到接口上的DCE/DTE标识用show controllers serial 0/0/0查看。以太网口不需要配时钟这也是我推荐用千兆以太网口做互联的原因之一。3. 核心实验从静态路由到OSPF的完整配置与验证3.1 静态路由最小配置把下一跳写对先做静态路由实验它是一切动态路由的基础。实验目标是用三条静态路由让三台路由器两两互通。配置前先明确一个原则每一台路由器只需要告诉它「目标网络往哪个下一跳走」不需要知道全网拓扑。具体到R1它要到达2.2.2.2/32和3.3.3.3/32下一跳都是192.168.12.2R3要到达1.1.1.1/32和2.2.2.2/32下一跳都是192.168.23.2R2作为中间设备需要两条静态路由分别指向两端的环回口。R1上的配置命令如下enable configure terminal ip route 2.2.2.2 255.255.255.255 192.168.12.2 ip route 3.3.3.3 255.255.255.255 192.168.12.2 end write memoryR3对称配置只改目标网段和下一跳enable configure terminal ip route 1.1.1.1 255.255.255.255 192.168.23.2 ip route 2.2.2.2 255.255.255.255 192.168.23.2 end write memoryR2配置时注意区分两条路由的下一跳目标1.1.1.1走192.168.12.1目标3.3.3.3走192.168.23.3enable configure terminal ip route 1.1.1.1 255.255.255.255 192.168.12.1 ip route 3.3.3.3 255.255.255.255 192.168.23.3 end write memory用/32掩码是因为目标是环回口它本身就是一个主机地址。如果目标是整个子网掩码要写成对应的网络掩码。配置完成后用show ip route static查看静态路由是否进入路由表输出里应该看到S开头的条目下一条地址和配置一致。3.2 用ping与traceroute验证路径报告里的关键依据静态路由配完验证分为三个层次直连互通、跨网段互通、路径正确性。每一条都要在报告里体现。先验证直连链路R1上执行ping 192.168.12.2全通说明二层链路和IP配置没问题。跨网段验证用R1去ping R3的环回口ping 3.3.3.3 source 1.1.1.1注意source参数指定了源地址否则R1会默认用出接口地址作为源在有些场景下会暴露路由回程问题。ping通不代表路径正确这时用traceroute确认流量实际经过的每一跳traceroute 3.3.3.3 source 1.1.1.1输出第一跳应该是192.168.12.2第二跳192.168.23.3。如果第一跳就是3.3.3.3说明R1上可能配置了默认路由或更长的精确路由路径不符合预期。这是报告里最值得写的一段分析「traceroute结果显示流量经过R2转发与静态路由配置的下一跳设计一致」。3.3 OSPF动态路由宣告、邻居关系与抓包验证静态路由实验完成后把所有ip route命令删除用no ip route逐条清掉进入OSPF实验。OSPF的核心在于三件事router-id选举、network宣告、邻居关系建立。R1上的OSPF配置如下enable configure terminal router ospf 1 router-id 1.1.1.1 network 192.168.12.0 0.0.0.3 area 0 network 1.1.1.1 0.0.0.0 area 0 endR2和R3类似R2宣告192.168.12.0/30、192.168.23.0/30和2.2.2.2/32R3宣告192.168.23.0/30和3.3.3.3/32。这里有个新手很容易写错的点network语句里是通配符掩码不是反掩码也不是子网掩码。0.0.0.3匹配/30网段里的所有地址0.0.0.0匹配单个主机地址。配置完成后立即执行show ip ospf neighbor验证邻居状态正常应该看到FULL/DR或FULL/BDR。但如果链路两端的接口都处于DRother状态邻居状态停在2WAY说明这条链路上DR和BDR都没有被选举出来这在仅有单台设备互联的链路里属于正常现象不影响路由学习。抓包是OSPF实验报告的高分点。在GNS3里右键接口选择Start Wireshark抓取R1的G0/0接口然后重启OSPF进程在enable模式下执行clear ip ospf process会抓到完整的Hello、DBD、LSR、LSU、LSAck五类报文。报告里展示一条Hello报文就够版本号2、区域ID 0、Hello间隔10秒、Dead间隔40秒这组参数直接对应OSPF协议默认值。写分析时对比抓包内容和配置命令说明「R1的Hello报文中Options字段显示E位为1说明支持外部路由与配置中未引入外部路由的现状吻合」——这种级别的分析老师基本挑不出毛病。4. 躲避丢分网络实验里的5个常见坑与排查思路4.1 现象直连路由地址都ping不通直连链路ping不通是出现频率最高的翻车现场。接口状态down是主要原因在GNS3里最常见的原因是链路一端接的是G0/0另一端接的是G0/1也没关系这是允许的真正的问题是GNS3里两台设备之间没有连线的端点被系统自动标记为unset或者连线拖到了错误的接口上。先在show ip interface brief看接口状态如果显示down/down回到拓扑图检查连线如果显示up/down说明对端设备没开或接口没no shutdown。解决接口配置模式下执行no shutdown然后回到拓扑图双击连线确认两端设备接口编号。记住GNS3里接口编号在设备上是可见的双击终端图标不会显示接口名需要右键设备选择Console再进入命令行确认。4.2 现象路由表里有路由但ping还是不通路由表有S或O条目可流量就是不通这是第二常见的问题。排查思路先看路由方向R1到3.3.3.3有路由如果R3到1.1.1.1没有回程路由包到了R3后会被丢弃。ping命令的source参数能帮你验证这一点先指定源地址再ping目标地址不通就说明回程有问题。解决每台设备上执行show ip route把目标网段和来源网段都检查一遍。手工画一张转发路径图箭头标出每一跳的入接口和出接口回程路径必须与去程完全对称。静态路由实验里大家习惯配单向路由OSPF实验里因为链路状态通告是双向的反而很少出现这个问题。4.3 现象OSPF邻居状态卡在EXSTART/EXCHANGE邻居状态卡在EXSTART或者EXCHANGE多半是MTU不一致导致的。GNS3里默认MTU是1500但如果一端手工改过MTU比如为了调试Jumbo Frame改成9000另一端还是1500DBD报文就会在传输中被丢弃邻居状态永远停留在EXSTART。解决两端接口都执行ip mtu 1500。注意是ip mtu不是mtu命令这两者在IOS里控制的东西不同。排障时用show ip ospf neighbor确认状态如果卡在EXSTART且一段时间后回到DOWN用debug ip ospf adjacency查看具体原因输出里会明确提示MTU mismatch。4.4 现象模拟器里抓到的包和预期不符GNS3里右键接口启动Wireshark结果抓到的全是ARP请求或广播包没有OSPF报文。原因往往是OSPF邻居已经稳定建立邻居间不会再周期性发送全部报文类型只有Hello报文每10秒一条。如果想看到完整的交互过程需要主动触发在路由器上执行clear ip ospf process强制邻居重建或者在GNS3拓扑里直接断开、重新连接链路。解决在R1上执行clear ip ospf process系统会提示是否确认重启输入yes。Wireshark里设置过滤表达式ospf如果过滤后仍然只有Hello报文用show ip ospf interface确认接口确实是OSPF使能状态且网络类型是广播。4.5 现象实验报告里Wireshark截图模糊不清报告最终呈现在纸面或PDF上截图里报文窗口的字体大小直接影响成绩观感。很多人直接截全屏Wireshark默认字体在缩小后完全看不清字段名。解决: 抓包后在Wireshark里打开Preferences - Appearance - Font把字体调大到16号以上然后只框选报文详情面板截图不用截整个窗口。报告里用文字把「源地址、目的地址、报文类型、关键字段值」列出来配合截图上的高亮标记。GNS3抓到的OSPF报文里Protocol字段显示的是OSPF (89)IP报文头里Protocol是89而不是6TCP或17UDP这个细节写进分析能加分。5. 把实验写成报告从实验目的到结果分析的可复用骨架5.1 报告骨架五段式结构与每段的得分点一份能拿到优秀评级的《计算机网络实验报告.doc》结构上通常分五段实验目的、实验环境、实验步骤、结果分析、心得与思考。每一段都有对应的得分点不能写成流水账。实验目的写清楚本次实验验证的协议行为和预期结果。例如「通过配置静态路由观察IP包转发路径理解路由表与转发决策的关系」这里不需要写「掌握OSPF原理」这种大话。实验环境写明设备型号、模拟器版本、拓扑结构并配一张接口地址规划表。实验步骤按配置→验证→抓包三个层次逐一展开每一步配命令和输出。结果分析把每一步的输出数据贴出来逐条解释背后对应协议原理。心得与思考写1-2个实验过程中踩过的坑和排查过程这部分是区分独立完成还是抄答案的关键判据质量高于一切。5.2 抓包与命令输出的整理三个必须呈现在报告里的数据报告里不是贴的越多越好三类数据必须有第一是ping结果。一张截图上要能看到成功率、丢包率和往返时延RTT的平均值。RTT值在跨越三台路由器的链路上一般是1-2ms模拟器环境如果出现几十毫秒多半是模拟器宿主机器性能不够或抓包软件本身产生了延迟。第二是路由表。show ip route完整输出是必须的。截图上用红色框标出关键的S或O条目报告文字里写清楚「R1的路由表中包含到达3.3.3.3/32的OSPF路由下一跳192.168.12.2metric值为2」。Metric值这里有个知识盲区OSPF到达环回口的metric默认是1经过一台路由器是112如果拓扑是R1—R2—R3R1到达3.3.3.3的metric就是2这个数值直接对应跳数写分析时对照拓扑说明。第三是抓包详情。OSPF Hello报文、DBD报文各一张。截图要同时显示报文列表、报文详情和报文字节三个区域字节区能看到十六进制内容。如果截不全就用Wireshark的导出报文功能把单个报文的详细信息用纯文本格式导出粘贴到报告里格式比截图更清晰。5.3 报告里怎么引用配置和验证数据而不像抄答案引用配置命令时有个容易被看穿的细节命令提示符。抄答案的人往往把R1、R2、R3的命令贴成一模一样。正确做法是每条命令前面保留设备名提示符例如R1#show ip route和R3#show ip route输出显然不同命令前面的提示符也不应该相同。写结果分析时避免评价性语言多用数据性描述。例子「ping测试结果5个包全部收到回应平均RTT为1.2ms说明静态路由配置正确且链路质量良好」比「ping通了太好了」可信得多。抓包分析也一样只描述看到的现象和现象对应的协议机制不要写「可以看到OSPF协议工作正常」这种正确但空洞的话。6. 进阶验证用Packet Tracer模拟模式把协议过程可视化6.1 模拟模式与实时模式的差异课程设计里如果强制要求使用Packet Tracer实时模式的体验和GNS3接近但模拟模式才是PT的杀手锏。模拟模式把每一个数据包从发出到接收的过程拆成单步事件你能看到ARP请求先广播、然后ICMP报文封装成IP包、再查路由表、改写MAC地址后从出接口转发出去。这个机制写报告价值极大老师问「数据包到了R2后做了什么」时你能准确说出「查路由表发现目标网段在G0/1接口对端MAC地址重写为对端接口的MAC然后从G0/1发出」。操作在PT右下角切换模式到Simulation执行ping 192.168.23.3左侧事件列表里会出现ICMP和ARP两类报文。点每个报文能看到它的详细字段包括源MAC、目的MAC、源IP、目的IP。双击链路上的信封图标可以直接查看该报文的封装信息。截图时在事件详情里展开IP和ICMP字段这是PT报告里最符合计算机网络原理分析要求的展示方式。6.2 具体技巧单步跟踪ARP与OSPF报文PT模拟模式里跑OSPF需要先开启模拟再触发OSPF进程重启。设备CLI里执行clear ip ospf process事件列表里会出现完整的OSPF报文交互——先是Hello报文组播到224.0.0.5随后DBD、LSR、LSU报文逐一出现。这里有一个PT才适合做的操作在事件列表过滤器里只勾选OSPF和ARP排除掉周期性的Hello干扰抓到的就是完整的邻居建立过程。报告写作时把事件列表里按时间排序的报文整理成一张表格时间、源设备、目的设备、报文类型、关键字段Router-ID、Area ID、Sequence Number。这张表格比任何文字描写都直观而且是模拟器自动生成的不存在「编造数据」的嫌疑。6.3 从模拟器到真实设备迁移时要注意的三件事课程实验到期末有时会安排真机验收模拟器配置和真实设备有三处不同。一是接口命名真实设备可能是GigabitEthernet0/0/1这样的三段式编号模拟器里已确认的G0/0到真机可能对应不同的物理位置。二是线路编码和时钟串口在真实设备上需要两端协商时钟频率且DCE端固定。三是恢复出厂设置真实设备验收前建议执行write erase并reload清空配置避免前一组实验的路由残留影响你的结果。模拟器里删掉节点重新拖一台出来即可真实环境里这个步骤叫「恢复初始状态」写进报告反而能体现操作规范。我自己第一次交实验报告时拓扑图是拿Visio画的地址规划一塌糊涂路由表截图还是网上找的。后来带实验课帮学生排查才发现一份报告值不值得给高分看「抓包数据和配置命令是否对得上」就够了。把实验真正跑通让报告里每个数字都有来源这比背十遍计算机网络期末复习题都管用。希望帮到你。本文还有配套的精品资源点击获取
返回列表