
简介这份计算机网络实验报告.doc 围绕 TCP 协议迭代开发系统记录 RDT 2.0 位错检测、RDT 2.2 ACK 校验、RDT 3.0 超时重传、选择响应协议以及 Reno 拥塞控制等关键实验内容适合计算机网络课程设计、传输层原理学习或准备 TCP 实验报告的人群参考。资源共 1 个 doc 文件压缩包大小约 945KB报告包含学号、姓名、专业等模板字段结构清晰可帮助读者快速搭建设计报告框架。已有 291 人学习下载。文档重点展示了如何结合代码与 LOG 文件分析不同协议阶段的表现并在拥塞控制部分给出完整排错思路通过在每次传输轮次后输出发送包序号、接收包序号和 cwnd 值直观观察慢开始、拥塞避免及 ssthresh 变化过程同时总结了迭代开发的优缺点与实验改进建议。阅读后既能掌握 TCP 可靠传输与拥塞窗口调节的核心机制也能借鉴实验日志设计与问题分析方法适合在完成同类大作业或复现传输层实验时作为配套参考资料。1. 一份《计算机网络实验报告.doc》的含金量复试、综测和简历都认它期末前一周才从网盘翻到一份《计算机网络实验报告.doc》。打开一看抓包截图是黑白的Ping 的 TTL 变化只贴了结果静态路由配置完 ping 不通答辩时老师一句“这个 ARP 表为什么这么写”就把我问住了。这里有个反直觉的结论一份计算机网络实验报告真正拉开差距的从来不是 Word 模板好不好看而是里面每一张抓包图、每一条命令背后有没有“参数解释”和“为什么”。这篇笔记把最高频的三个实验——抓包分析、连通性验证、静态路由配置——讲深讲透让你能照着命令一步步复现也清楚在报告里怎么写才扛得住追问。2. 动手前先立住三层背景分层模型、封装细节和实验环境选型2.1 为什么实验报告的第一章必须写“分层模型”绝大多数实验报告模板把第一部分叫“实验原理”。但不少同学对原理的理解就是“把教材里的七层模型图画一遍”考试能默写实验报告里却和后面的步骤对不上。老师如果问“你这个抓包实验证明了哪一层协议在做什么”马上就露馅。这个问题在考研复试和入职面试里都出现过问法不同核心是一样的你有没有真的理解网络是分层的。我惯用的做法是让实验步骤和目标一一对应到每一层。以 HTTP 抓包为例Wireshark 里那一条记录链路层由以太网帧体现网络层由 IP 头体现传输层由 TCP 头体现应用层才是 HTTP 负载。报告的原理部分按自顶向下的顺序展开先写应用层和 HTTP 的关系再写传输层三次握手最后写链路层帧结构。这个顺序和谢希仁《计算机网络》的目录是吻合的复试问到“OSI 七层和 TCP/IP 四层有什么区别”时也能直接拿你的实验现象当例子比背定义有说服力得多。有一点要提醒只背“自顶向下”“封装”这些概念而不会实操多半会栽在抓包现象识别上。实验报告的深度不是看原理部分是不是教材简写版而是看你在抓包里是否真识别出了 SYN、SYN-ACK、ACK、FIN 这些标志位。复习时配合湖科大教书匠那套数据链路层讲解比单纯看王道讲义更贴近抓包时遇到的现象因为讲义里讲的是结论抓包看到的是过程。还有一条血泪经验原理部分千万别照抄“计算机网络期末复习资料”。那些提纲是帮你回忆知识点的措辞大量压缩比如省略了序号计算方法、TTL 递减规则直接搬进报告会让老师觉得你在凑字数。正确写法是每个概念用自己的话写两段第一段写概念第二段写“在本实验中体现为……”。第二段才是老师真正看的。2.2 封装与 ARP从协议栈内部视角解释你抓到的每一帧封装过程其实一句话就能讲完应用层数据在传输层加 TCP 头在网络层加 IP 头在链路层加以太网帧头和帧尾。但报告里只写这句话不够你得能对着 Wireshark 展开的字段说明白每一层加了什么。以访问一个 HTTP 页面为例抓包窗口里一条记录的协议树从上到下就是Frame物理帧元信息、Ethernet II源 MAC、目的 MAC、类型、IPv4源 IP、目的 IP、TTL、TCP源端口、目的端口、序号、标志位、HTTP请求方法、路径、版本。真正让报告看起来“懂行”的是补充这一段IP 包里的源地址和目的地址在数据链路层面前只是“载荷”真正决定下一跳到哪个网卡的是 MAC。在局域网内访问一个从未访问过的 IP主机会先查 ARP 缓存表没有缓存时发出广播 ARP 请求“谁是 192.168.1.1请把 MAC 告诉我”。这就是 Wireshark 里 ARP Request 和 ARP Reply 两个包出现的原因。实验报告如果能把“为什么抓到的数据包里会有对应的 ARP 包”讲清楚老师基本不会再追问这部分。很多学生的报告只贴了 ARP 请求包和应答包的截图却没说“请求是广播、应答是单播”其实算白贴。更细致的写法是请求包的目的 MAC 是 ff:ff:ff:ff:ff:ff应答包的源 MAC 变成了目标主机的 MAC。这不需要长篇大论两到三句话就能让评分老师看出你真的展开过报文。如果是第一次做这个实验我建议在报告里加一个更直观的 ARP 验证片段先 Ping 一个从没通信过的内网地址第一次 Ping 会伴随一个 ARP 请求几秒后再次 Ping 同一地址不再出现新的 ARP 请求。原因是操作系统已经把目标 IP 对应的 MAC 写进缓存表。在 Windows 上敲 arp -a 查看这张表Linux 上用 ip neigh show。这个验证片段比干讲“ARP 用于地址解析”更能让人理解。2.3 实验环境选型真机、虚拟机、模拟器分别适合哪种实验做网络实验前先选主战场。我的经验是抓包分析选真机路由交换选模拟器多机隔离选虚拟机。三者的成本和能验证的现象完全不同报告里如果环境写错了后面数据会很难看。| 环境 | 适合实验 | 关键参数/注意点 | | 真机你的笔记本 | Wireshark 抓包、Ping/Traceroute、ARP 观察 | 无线网卡混杂模式受限看不到其他主机流量 | | VMware/VirtualBox | 构造隔离局域网验证跨网段通信、DHCP 分配 | NAT 模式VMnet8和仅主机模式VMnet1含义不同 | | GNS3、eNSP 模拟器 | 静态路由、RIP/OSPF、ACL拓扑可保存重开 | 命令贴近真实华为/Cisco 设备但接口启动比真机慢 |这里有一个常见误区把 VMware 当作网络模拟器用。VMware 擅长虚拟出多台主机但它不会老老实实给你一个可控的路由器命令行。想做路由实验老老实实打开 GNS3 或 eNSP。反过来也有同学只玩模拟器连 Wireshark 都没在真机上抓过包尤其注意无线网卡场景下模拟器里导出的“假报文”和真实网络存在差异。真机抓包的价值在于验证理论模拟器的价值在于验证配置。如果你要在 VMware 里做跨网段实验我一般这样搭用两个仅主机模式的虚拟网络 VMnet1 和 VMnet2分别接两台虚拟机再开一台当路由器把它的两个网卡分别划到这两个 VMnet 里。宿主机 VMnet1 的网卡不需要配 IP避免干扰实验结果。VMware 默认 NAT 模式会自己分配网段和网关如果实验要求固定网段记得在虚拟网络编辑器里关掉 DHCP手动指定子网。如果是照着实验指导书做环境部分一般这样写主机一台安装 Wireshark模拟器安装华为 eNSP虚拟机软件 VMware Workstation两台虚拟机分别位于 VMnet1 和 VMnet2。选型理由写一笔就行真机验证链路层现象最直观模拟器降低设备成本且方便保存拓扑。这样实验报告至少不会在环境上被挑毛病。3. 三个高频实验的复现骨架本地抓包、连通性分析和静态路由配置3.1 在本地起一个 HTTP 服务用 Wireshark 抓三次握手最小步骤与三个必看字段先给一个最可控的抓包方式在你自己机器上起一个 HTTP 服务监听 127.0.0.1这样既不会碰到 TLS 加密流量也不依赖外网环境适合在实验室里反复做。命令如下python3 -m http.server 8000这是用 Python 内置的 http.server 模块在 8000 端口启动一个静态文件服务。-m 指定模块8000 是监听端口。如果 8000 被占用换一个高位端口比如 18080同时留意操作系统防火墙的弹窗提示。Windows 上如果没配过 Python需要先到官网或微软商店装好解释器。服务起来后另开一个终端开始抓包tcpdump -i lo -w http_handshake.pcap tcp port 8000-i lo 指定抓回环接口Windows 上对应 Npcap 的 Loopback 虚拟网卡-w 把原始包写进 pcap 文件而不是直接打印这样之后可以用 Wireshark 慢慢分析tcp port 8000 是抓包过滤器只保留源或目的端口为 8000 的 TCP 包。tcpdump 在 Windows 上不算常用但命令行先落盘再分析的习惯值得保留因为图形界面抓包时误点停止包就丢了落盘文件不会。等 tcpdump 跑起来用浏览器打开 http://127.0.0.1:8000看到目录列表后关掉页面。接着 CtrlC 结束抓包打开 WiresharkFile → Open 选择 http_handshake.pcap。此时三次握手应该非常清晰连续三个 TCP 包标志位分别是 SYN、SYN-ACK、ACK。建议在 Wireshark 的显示过滤框输入 tcp.port 8000这是显示过滤和刚才命令行的抓包过滤不是一回事报告里别混用。对报告而言要从三个包里记下这些字段| 包 | 标志位 | 关键字段 | | 1 | SYN | Seq 为随机初始序号ISN例如 1000 | | 2 | SYN, ACK | Seq 为另一个随机值Ack ISN 1 | | 3 | ACK | Seq ISN 1Ack 第二个包序号 1 |注意Wireshark 默认显示的是相对序号读起来方便但和 TCP 报文里的绝对序号存在换算关系。报告里截图如果不开相对序号第一次握手和第三次握手的序号会差很多容易让老师怀疑你没看明白。我一般在 Preferences → TCP 里把 Relative Sequence Numbers 打开再截图然后在图注里补一句“以下序号均为相对序号”。抓完后顺手看一个加分现象三次握手结束浏览器立刻发请求如果响应内容超过一个 MSS通常 1460 字节同一页面的数据会被拆成多个 TCP 段。这就是 TCP 分段和 MTU 的直观体现。把这一段截图写进结果分析比只写“三次握手成功”有价值得多。3.2 Ping 与 Traceroute 的参数深度解读从 TTL 判断远端系统连通性实验两个命令就能做但报告要写深必须会解读参数。Ping 在不同系统上语法略有差异我常在报告里给两条对照命令ping -c 5 -s 1400 192.168.1.1 # Linux/macOS 风格 ping -n 5 -l 1400 -w 1000 192.168.1.1 # Windows 风格-c 5 在 Linux 表示发送 5 个 ICMP 请求Windows 里对应的是 -n 5。-s 1400 指定数据载荷为 1400 字节Windows 对应 -l 1400。-w 1000 是 Windows 里等待每个应答的超时毫秒数Linux 通常用 -i 控制发包间隔。载荷设成 1400 而不是默认 32 字节目的是贴近 MTU 边界观察分片加上 ICMP 头 8 字节和 IP 头 20 字节总报文约 1428 字节距离 1500 还有余量但已经能触发某些链路的分片行为。TTL 是报告里最值得写的一个参数。IP 包发出时 TTL 字段是某个初始值Linux 内核通常默认 64Windows 默认 128部分网络设备用 255。每经过一个路由器减 1减到 0 就丢弃并回送 ICMP 超时。因此收到 TTL 为 55 时可以猜初始值是 64、中间过了 9 跳收到 120更像初始 128。实验报告里写“RTT 平均 0.2ms、丢包率 0%、TTL 为 128初步判断目标主机可能运行 Windows 或近端设备未做 TTL 改写”比只写“连通正常”四个字耐看得多。路径探测用 Traceroute命令也有两套traceroute -n -q 1 -m 30 192.168.1.1 # Linux/macOS tracert -d -h 30 192.168.1.1 # Windows-n 和 -d 都表示不做域名反向解析让报告里每一跳只显示 IP-q 1 表示每跳只发一个探测包加快速度-m 和 -h 30 表示最大跟踪 30 跳。注意 Traceroute 默认发的是 UDP 探测包很多路由器会直接丢弃 UDP屏幕上出现多个星号不代表链路不通。端到端通不通要看最终那一跳有没有返回。这个现象同时是面试官喜欢问的考点报告里写一句“星号表示该跳未响应探测包不代表路径中断”能提前消掉一次追问。实验报告放 Traceroute 输出时最好保留完整跳数并在每跳后加注释RTT 正常、RTT 明显增长、无响应。不要把中间几跳删掉老师会看跳数和目标地址段是否合理。外网实验里中间几跳常能看到运营商内部地址用 -n 参数反而让报告更干净。3.3 eNSP/GNS3 静态路由实验拓扑规划、配置命令与逐段验证静态路由是实验报告里篇幅最重的一类。先给一个能直接写进报告的拓扑三台路由器串行连接两台终端分别挂在两头。接口 IP 规划如下| 设备 | 接口 | IP/掩码 | 连接对象 | | R1 | GE0/0/0 | 192.168.10.1/24 | PC1 | | R1 | GE0/0/1 | 10.0.12.1/30 | R2 | | R2 | GE0/0/0 | 10.0.12.2/30 | R1 | | R2 | GE0/0/1 | 10.0.23.2/30 | R3 | | R3 | GE0/0/0 | 10.0.23.3/30 | R2 | | R3 | GE0/0/1 | 192.168.20.1/24 | PC2 | | PC1 | eth0 | 192.168.10.10/24网关 192.168.10.1 | 左侧终端 | | PC2 | eth0 | 192.168.20.10/24网关 192.168.20.1 | 右侧终端 |这里用 /30 做路由器互联网段掩码 255.255.255.252正好提供两个可用地址。不少同学图省事给互联接口配 /24虽然也能通但报告里单独看地址规划就会暴露不规范。终端网段之间不得重叠这是排错的一个重要判断。三台设备的静态路由命令以华为 eNSP 语法为例# R1去 PC2 网段 192.168.20.0/24下一跳是 R2 互联接口地址 ip route-static 192.168.20.0 24 10.0.12.2 # R2 是中间路由器两个终端方向各写一条 ip route-static 192.168.10.0 24 10.0.12.1 ip route-static 192.168.20.0 24 10.0.23.3 # R3去 PC1 网段 192.168.10.0/24下一跳是 R2 互联接口地址 ip route-static 192.168.10.0 24 10.0.23.2ip route-static 命令格式是“目的网段 掩码长度 下一跳地址”。掩码长度 24 等价于 255.255.255.0。下一跳必须写成对端路由器的接口 IP不能写成自己设备某个接口的 IP。如果写成自己的出接口报文查表后会被送回本机表现是路由表有条目但 Ping 永远不通。配置完成后在每台路由器上执行 display ip routing-table确认路由条目存在且下一跳状态正常。验证阶段不要直接拿 PC1 Ping PC2要逐段推进。先 PC1 Ping 192.168.10.1 网关通了再从 PC1 Ping 10.0.12.2验证第一跳链路然后在 R1 上 Ping 10.0.23.3验证 R1 到 R3 的转发链路最后 PC1 Ping 192.168.20.10。哪一段不通就在哪一段结合 ARP 和路由表排查。这个逐步推进的思路本身就是实验报告里“结果分析”最珍贵的素材比一张最终成功的截图更能说明你会做实验。模拟器还有一个常被忽略的坑设备接口默认处于 up 状态但配置完可能因为链路协商慢暂时未通。连线之后应在系统视图下执行 undo shutdown 并等待接口变为 up否则配置完路由表也会看到 no route 现象。这类问题我在下一章统一放进避坑清单。4. 计算机网络实验报告避坑指南五个高频翻车现场与排查方法4.1 抓包抓到乱码或巨量无关流量和教材截图完全对不上现象打开 Wireshark 抓 HTTP 包抓了十秒数据就在窗口里刷出几百条记录过滤器写了 tcp.port80 还是有大量记录展开报文发现应用层是乱码根本看不到“GET / HTTP/1.1”。原因一是没在抓包前设置过滤条件后台软件和系统服务都在发包二是访问了外部网站现在主流网站强制 HTTPSTLS 加密后 Wireshark 看到的是 TLS 协议而非 HTTP三是选错了网卡抓了物理接口而不是回环接口。解决把“抓外部网站”改成“抓本地服务”按 3.1 节起一个 http.server然后过滤 tcp.port 8000。如果确实需要抓路由器转发的流量在 GNS3/eNSP 里对路由器接口抓包或者抓 PC 侧网卡。注意无线网卡在 Windows 上无法完整看到广播域内其他机器的流量报告里别写“捕获了整个局域网”这种说法答辩时一戳就穿。4.2 静态路由配置正确却 Ping 不通路由是单向的别漏反向现象按教程把三台路由器的 ip route-static 都写了display ip routing-table 也能看到条目但 PC1 Ping PC2 仍然超时。原因路由是逐跳独立查找的。PC1 的包到达 R1 后R1 可能没有去 192.168.20.0/24 的路由或者转发链路通但 R3 回包时缺少去 192.168.10.0/24 的路由。最常见的是只在 R1 和 R3 上写路由漏了中间路由器 R2其次是下一跳写成了自己的接口 IP。解决不要只靠终端 Ping要在路由器之间互相 Ping。R1 Ping 10.0.23.3 能通但 PC1 跨网段不通问题多半出在 PC 侧网关或 R1 丢路由路由器之间 Ping 不通先查互联接口 IP 是否在同一网段、接口是否 up。最后逐台核对路由表确保每台设备都有去两个终端网段的路由。静态路由没有自动学习能力回包路径必须完整。4.3 截图里的关键字段看不清答辩时老师无从问起现象Word 里贴的 Wireshark 截图小字密密麻麻SYN 标志位置是一团黑路由表截图糊成一片。老师翻回原理部分找细节气氛开始变冷。原因Wireshark 默认字体小深色主题直接截图是黑底白字压缩后细节全丢更关键的是很多人只截了包列表顶部的几行没有展开协议树。TCP 的标志位、Seq、Ack 这些字段不展开是看不到完整信息的。解决提交前统一处理。Wireshark 的 Preferences → Appearance → Fonts 把字体调到 14 号以上显示过滤只保留实验相关的流量针对关键包右键 Follow TCP Stream 生成文本再把关键字段区域单独裁剪用 Word 图片标注红框。如果报告要求文字化用 File → Export Packet Dissections → As CSV 导出包列表保留 Seq、Ack、Len、Info 列放进表格这样既清晰又不会被排版搞乱。4.4 实验报告全是“成功”没有一个失败记录反而不真实现象整份报告每个实验的结论都是“实验完成各参数符合预期”没有一条异常记录。答辩时老师问“TCP 重传长什么样”同学当场沉默。原因很多同学按“实验指导书步骤 正确结果截图”的套路交作业把排查过程全删了只留成功路径。评分老师面对满屏“成功”很难相信你是亲手跑出来的。解决在报告里保留一到两个真实失败案例按“现象—原因—解决”三行式写。例如第一次 Ping 不通抓包发现 ARP 请求一直在重发检查发现 PC1 的网关错填成 192.168.10.254修正后通信正常。这类记录能证明过程是你动手做的而不是从学长那里复制的。挑失败案例时注意选那些能说清机制的别写“设备坏了换了一台”这种没法排查的记录。4.5 参数为什么这么设复试和面试最喜欢问“默认值”现象面试官指着报告里的配置问“你这里为什么是 64TTL 初始值怎么来的”回答“因为是默认值”对话就结束了。原因报告写透了操作步骤却漏了参数从哪来。TTL 字段只有 8 位最大 255Linux 内核默认初始值 64Windows 默认 128所以不同系统的 Ping 结果会不一样。MTU 1500 受以太网标准限制链路层帧最大载荷就是 1500再多就要 IP 分片。解决在报告的每个命令参数下补一句“为什么是这个值”。Ping 用 -s 1400 是为了接近 MTU 但又能完整回来测试端口选 8000 是为了避开常用端口段路由器互联网段用 /30 是地址规划习惯。把“默认值”变成“合理的选择”答辩时就能翻到这一句直接接住追问。提示上面 4.2 和 4.3 是实验报告里出现频率最高的两类问题。提交前如果只做一次自查先查“路由条目是否双向齐全”和“关键截图是否可读”这两项过了报告至少不会在基础层面翻车。5. 把实验报告变成作品集答辩自测清单与三个进阶追问5.1 提交实验报告前的自测三问写完实验报告我习惯放一两天再拿出来用三个问题判断能不能直接交。第一不看 Wireshark能否说清三次握手中第二个包的 Seq 和 Ack 为什么是那两个数值第二不看模拟器拓扑图能否画出三台路由器的网段划分并写出每条静态路由的下一跳 IP第三如果抽掉报告里所有课本默写剩下的截图和注释能不能体现你手动操作过的痕迹。三个问题只要能确定回答“是”报告基本立得住。5.2 三个容易被追问的进阶问题第一个经典追问“PC1 跨网段 Ping PC2在两个网段抓包目的 MAC 分别是网关还是 PC2”答案是在 PC1 所在网段帧的目的 MAC 是默认网关 R1 的 MAC但 IP 头的目的 IP 是 PC2在 PC2 所在网段目的 MAC 是 PC2源 MAC 变成 R3 的接口。这体现的是分层和逐跳转发把它写进 ARP 部分的实验分析里深度立刻不一样。第二个常被问到的点“把静态路由删掉正在 Ping 的连接会立刻断吗”正确理解是TCP 连接不会因为路由表删除瞬间断开TCP 要等待超时重传机制触发后才发现路径失效。如果报告能提一句“路由收敛发生在控制面数据面还有一段时间靠缓存和超时维持”已经超过大部分同学的认知层次。第三个追问方向直接对应运维岗位“线上服务偶发超时手头只有一份 pcap第一步看什么”我的做法是先看 TCP 是否有重传、Dup ACK 和 RTT 突刺再对比 IP 层的 TTL 路径有没有变化。这个思路本身就是计算机网络实验报告在工程里的落地协议状态先于业务表象暴露问题。5.3 为复试和面试留下可复现证据我现在拿到任何一份实验报告模板第一步不是看排版而是把里面提到的实验在本地复现一遍复现不出来的参数直接圈出来问自己是缺少依据还是配置笔误。这些年我一直保留一个习惯实验报告里每个关键命令行旁边都要留一句“我为什么这么写”半年后回看比任何复习资料都管用。网络实验这件事验证远比背诵可靠而一份能扛住追问的实验报告就是你给自己留下的一套可复现证据。这个方法从校园用到工作岗位帮我避开了好几次面试里的手忙脚乱希望这篇笔记的整套思路也能帮到你。本文还有配套的精品资源点击获取