拓冰建站拓冰建站
首页 / 资讯中心 / 正文

广工2015计算机网络实验报告复现指南:eNSP组网、Wireshark抓包与Socket编程

简介这份资源是广东工业大学2015年计算机网络课程的实验报告PDF面向计算机科学与技术等专业学生及需要完成同类网络实验的学习者可用于参考实验流程、报告结构与配置思路。报告围绕GNS3安装使用与交换机技术展开涵盖网络拓扑搭建、网络设备基础操作、交换机基本配置、VLAN基础配置及VLAN间通信等实验内容并记录了同VLAN与不同VLAN间PC连通性测试、Wireshark抓包分析Trunk流量等过程包含拓扑截图、命令行输出与结果说明便于对照理解实验步骤与验证方法。资源包共1个文件为PDF格式大小约1.17MB单文件结构清晰适合直接查阅或打印参考。目前已有71人学习适合正在学习计算机网络实验、需要撰写实验报告或复习VLAN与交换机配置的读者参考使用。1. 广工2015年计算机网络实验报告一份PDF背后到底藏着哪些硬核实验如果你手头正躺着一份《广工2015年计算机网络实验报告.pdf》大概率你面对的不是“读文档”这件事而是“照着把实验做出来、把报告写出来、把答辩应付过去”这三座大山。这份报告在网络上流传很广很多同学拿到它第一反应是当模板抄但真正做过一遍的人都知道里面涉及的组网配置、协议抓包、Socket编程、路由与交换实验每一个环节都有自己独立的踩坑点。它本质上是一份实验指导结果记录的合集覆盖了从物理层到应用层的典型验证型实验适合计算机网络课程的本科生、专升本同学以及需要快速补齐动手环节的考研复试选手。我见过太多人把PDF翻了三遍还是不知道从哪台机器开始敲命令所以这篇笔记不聊虚的直接按“实验环境怎么搭、每个实验怎么做、参数怎么调、哪里最容易翻车”的顺序把这份报告里最值得复现的几条主线拆开讲清楚。你不需要有真实的广工实验室环境用虚拟机加模拟器就能跑通八成以上的内容。2. 实验环境搭建从零把拓扑跑起来的最小步骤2.1 为什么优先选eNSP加VMware组合广工2015年那份报告里的实验大致分两类一类是协议分析类比如用Wireshark抓HTTP、TCP三次握手、ARP请求另一类是组网配置类比如静态路由、VLAN划分、NAT转换。前者对硬件没要求一台能跑抓包软件的电脑就行后者需要网络设备模拟器。当年实验室用的是真实路由器和交换机现在复现最稳的方案是华为eNSP做网络仿真VMware Workstation跑两台Linux或Windows虚拟机做端系统。选eNSP而不是GNS3或Packet Tracer原因很直接报告里的命令行语法是华为VRP风格display、system-view、interface这些关键词和eNSP完全对得上用Packet Tracer会碰到命令不兼容的玄学问题。VMware这边建议用桥接模式或者仅主机模式别用NAT否则抓包时看到的源IP全是转换后的地址分析TCP握手会把自己绕进去。安装顺序有讲究先装VMware再装eNSP最后装Wireshark。eNSP自带一个精简版Wireshark但版本太老抓HTTPS流量时解密字段不全建议单独装新版Wireshark并在eNSP里把抓包工具路径指向它。虚拟机镜像用Ubuntu 18.04或CentOS 7都行内存给2GB以上网络适配器选“仅主机模式”这样虚拟机和eNSP里的设备能互通又不会干扰宿主机的外网连接。2.2 最小拓扑的搭建与连通性验证先搭一个能跑通静态路由的最小拓扑两台路由器R1、R2背靠背相连R1下挂一台虚拟机PC1R2下挂PC2。eNSP里拖出两台AR2220路由器用GE0/0/0口互联再各拖一台PC。启动设备后按下面的命令配IP和路由。# R1配置 system-view sysname R1 interface GigabitEthernet0/0/0 ip address 10.0.12.1 30 interface GigabitEthernet0/0/1 ip address 192.168.1.1 24 quit ip route-static 192.168.2.0 24 10.0.12.2 # R2配置 system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 30 interface GigabitEthernet0/0/1 ip address 192.168.2.1 24 quit ip route-static 192.168.1.0 24 10.0.12.1逻辑说明R1和R2之间的30位掩码只提供两个可用地址这是点对点链路的常见做法省IP。静态路由的目的网段写对端下挂的PC网段下一跳写对端互联口地址。参数上唯一容易错的是掩码24位对应255.255.255.030位对应255.255.255.252写错会导致路由表里出现直连路由冲突。配完后在PC1上ping 192.168.2.2通了你就算把报告里“静态路由配置”那一节复现完了。如果不通先display ip routing-table看路由有没有生效再检查接口是不是被shutdown了eNSP里接口默认是开启的但虚拟机网卡有时要手动up。3. 协议抓包实验Wireshark过滤与TCP三次握手分析3.1 抓包位置的选择与过滤表达式报告里有一节专门讲TCP三次握手很多人抓了半天只看到一堆背景流量。抓包位置决定你能看到什么在eNSP里右键链路选“开始抓包”抓的是设备之间的流量在虚拟机里抓抓的是端系统发出的流量。建议两边都抓一次做对比。Wireshark的过滤表达式是核心技能报告里没细写但你不写过滤根本没法分析。常用表达式如下tcp.port 80 # 只看HTTP的TCP流 tcp.flags.syn 1 # 只看SYN包定位握手起点 ip.addr 192.168.1.2 # 只看某台主机的所有流量 http.request # 只看HTTP请求 arp # 只看ARP广播参数说明tcp.flags.syn 1会同时匹配SYN和SYNACK因为两者的SYN标志位都是1。想精确区分用tcp.flags 0x02看纯SYNtcp.flags 0x12看SYNACK。这个细节在报告里没提但答辩时老师一问“你怎么区分第二次握手和第一次”答不上来就很尴尬。3.2 三次握手的时序还原与常见误判在PC1上用浏览器访问PC2的Web服务同时Wireshark抓包。过滤tcp.port 80后你应该看到三个包SYN、SYNACK、ACK。点开第一个包Sequence number是相对值Wireshark默认显示Relative sequence numbers这是为了方便阅读但报告里如果要求写绝对序号要去Edit→Preferences→Protocols→TCP里把Relative sequence numbers取消勾选。三次握手的核心参数是MSS、Window size和SACK permitted这些在TCP选项字段里。MSS通常1460Window size受接收缓冲区影响SACK表示支持选择性确认。常见误判把HTTP GET请求当成握手的一部分。握手只到ACK为止第四个包才是HTTP请求。另一个坑是抓包时虚拟机开了IPv6你会看到一堆ICMPv6的邻居请求过滤表达式要加ip限定只看IPv4。如果抓不到SYN检查虚拟机的防火墙是不是把80端口挡了Ubuntu下用sudo ufw status看一眼CentOS用firewall-cmd --list-all。4. Socket编程实验用Python复现C/S通信与多线程处理4.1 从单线程到多线程的服务端改造报告里Socket编程部分用的是C语言但如果你只是想快速验证通信逻辑Python更省事代码量少一半排错也直观。先写一个最基础的单线程TCP服务端再改成多线程支持多个客户端同时连接。单线程版本只能处理一个客户端第二个连上来会阻塞这是报告里没强调但实验验收时必问的点。# 单线程服务端 import socket server socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((0.0.0.0, 8888)) server.listen(5) print(Server listening on 8888) conn, addr server.accept() print(fConnected by {addr}) while True: data conn.recv(1024) if not data: break conn.sendall(data.upper()) conn.close()逻辑说明SO_REUSEADDR解决重启服务时“Address already in use”的报错这是血泪经验不加的话每次调试都要等一分钟。recv(1024)表示一次最多收1024字节发大文件时要循环收。sendall保证数据全部发出用send可能只发一部分。参数上listen(5)的5是半连接队列长度不是最大连接数别搞混。4.2 多线程版本与客户端压力测试改成多线程只需要把accept后的处理丢进线程。下面这个版本能同时服务多个客户端每个客户端一个线程。import socket import threading def handle_client(conn, addr): print(fNew thread for {addr}) try: while True: data conn.recv(1024) if not data: break conn.sendall(data.upper()) finally: conn.close() server socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((0.0.0.0, 8888)) server.listen(10) while True: conn, addr server.accept() t threading.Thread(targethandle_client, args(conn, addr)) t.daemon True t.start()参数说明daemonTrue让主线程退出时子线程自动结束不加的话CtrlC之后进程会挂住。listen(10)在并发高时可以减少连接被拒的概率。客户端测试用telnet 127.0.0.1 8888或者写个Python脚本开十个线程同时发数据观察服务端是否每个连接都有独立回显。如果出现数据串线说明多个线程共用了同一个conn检查accept是不是在循环外只执行了一次。5. 避坑与排查实验报告里不会写的五个翻车现场5.1 现象eNSP设备启动后一直显示“#”号原因eNSP依赖VirtualBoxVirtualBox版本和eNSP不兼容或者Hyper-V没关。Windows 10/11默认开启Hyper-V会和VirtualBox抢虚拟化权限。解决在“启用或关闭Windows功能”里把Hyper-V和Windows沙盒全部取消勾选重启后再启动eNSP。如果还不行卸载VirtualBox换eNSP自带版本别自己升级。5.2 现象Wireshark抓不到任何包原因抓包接口选错了。eNSP里抓包要右键具体链路不是右键设备。虚拟机里抓包要选对网卡桥接模式下选VMnet0仅主机模式选VMnet1。解决在Wireshark的接口列表里看哪个接口有流量波动选那个。如果所有接口都没波动检查虚拟机网卡是不是被禁用了。5.3 现象Socket客户端连不上服务端原因服务端bind的地址是127.0.0.1只监听本地回环外部连不进来。或者防火墙没放行端口。解决bind用0.0.0.0监听所有网卡。Linux下临时关防火墙sudo systemctl stop firewalldWindows下在高级安全防火墙里加一条入站规则放行8888端口。测试时先用netstat -an | grep 8888确认端口处于LISTEN状态。5.4 现象静态路由配了但ping不通原因路由是双向的只配了一侧。或者下一跳地址写成了对端接口IP但掩码不匹配。解决两台路由器都要配来回路由。用display ip routing-table检查目的网段是否出现在路由表里用display interface brief检查接口物理状态和协议状态是否都是UP。如果协议状态是DOWN检查时钟频率串口链路一端要配clock rate。5.5 现象报告里的截图和你的结果不一样原因报告是2015年的软件版本和现在不同Wireshark的界面、eNSP的命令回显格式都有变化。解决不要追求截图一模一样抓住协议字段和配置逻辑一致就行。答辩时老师看的是你懂不懂原理不是像素级复刻。把关键字段用红框标出来旁边写上你的分析比原图更有说服力。6. 进阶技巧用脚本批量验证实验与报告数据整理如果你想把这份报告里的实验全部自动化验证一遍最省时间的做法是写一个Python脚本用paramiko库SSH登录到eNSP里的路由器批量下发display命令并抓取回显。eNSP支持Telnet和SSH但默认只开了Telnet要在路由器上先配SSH用户。下面这个脚本演示如何批量获取接口状态和路由表把结果存成文本直接贴进报告的数据整理部分。import paramiko import time def fetch_router_info(host, username, password, commands): client paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(host, usernameusername, passwordpassword, timeout10) shell client.invoke_shell() time.sleep(1) shell.recv(65535) results {} for cmd in commands: shell.send(cmd \n) time.sleep(1) output shell.recv(65535).decode(utf-8, errorsignore) results[cmd] output client.close() return results commands [display ip interface brief, display ip routing-table] info fetch_router_info(192.168.1.1, admin, admin123, commands) for cmd, out in info.items(): print(f {cmd} ) print(out)参数说明timeout10是连接超时eNSP设备响应慢可以调到20。invoke_shell模拟交互式终端适合display这类需要分屏的命令如果回显太长会卡在---- More ----可以在命令后加| no-more关闭分屏比如display current-configuration | no-more。这个脚本跑通后你可以把五个实验的验证命令全部塞进commands列表一次性抓完所有数据报告里的“实验结果”章节直接引用输出比手动截图快十倍。我自己的习惯是每做完一个实验立刻把配置文件和抓包文件按“实验名_日期”的格式存档因为eNSP的配置不保存的话关机就丢Wireshark的抓包文件不存下次要重新复现。2015年的报告里很多实验步骤写得比较简略真正动手时你会发现细节全在命令回显里把回显存好写报告和答辩都有底气。希望帮到你。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门