简介:这份《计算机网络实验报告_双机互联》PDF面向高校计算机网络课程学生及初学组网技术的读者,围绕对等网环境下的双机互联实验展开,帮助读者理解局域网配置、网络参数设置与连通性测试等基础技能。报告完整记录了实验目的、对等网概念、网络规划、硬件连接、协议安装、IP地址与计算机标识设置、ping命令测试及资源共享等环节,并配有拓扑图与操作截图,可作为课程实验参考或自学对照材料。资源包共1个PDF文件,大小约1.02MB,内容紧凑,适合打印或电子阅读。目前已有249人学习浏览,说明其在同类实验报告中具有一定参考价值。读者可借此掌握星型拓扑组网、网线制作标准、TCP/IP协议配置及共享文件夹访问等实用知识,快速完成实验报告撰写与操作复盘。
1. 双机互联实验:一根网线背后的三层排障逻辑
两台电脑用一根网线直连,互相 ping 通,这件事听起来像是计算机网络课的第一节实验。但我见过太多人在这个实验上翻车——网线插好了,IP 也配了,ping 就是不通,然后开始怀疑网线是坏的、网卡是坏的、系统是坏的。实际上,双机互联这个实验之所以经典,是因为它用最小的拓扑暴露了网络通信最核心的三层逻辑:物理层链路是否建立、数据链路层是否协商成功、网络层地址是否在同一网段。任何一层出问题,ping 都会失败,但失败的现象和排查手段完全不同。这篇内容面向正在做计算机网络实验的学生和需要快速搭建双机直连环境的工程师,把从硬件选型到 ping 通验证的完整路径拆开讲清楚,同时把那些实验报告里不会写的踩坑点摊开来说。
2. 双机互联的物理层与链路层:线序、网卡与协商
2.1 直通线还是交叉线:先搞清楚你的网卡支不支持自动翻转
双机互联最底层的坑就在网线上。早期做这个实验,两台电脑网卡直连必须用交叉线(一端 568A 线序,另一端 568B 线序),因为普通网卡的 TX 和 RX 引脚是固定的,发和收必须交叉对接。但现在的网卡基本都支持 Auto-MDIX(自动翻转),插直通线也能通。问题是,你实验室那台老机器支不支持,不插上去试是不知道的。
我一般的做法是:先拿一根普通直通线插上试,不通再换交叉线。如果手头没有交叉线,可以买一个几块钱的 RJ45 交叉转接头,比重新压线省事。判断网卡是否支持 Auto-MDIX,在 Linux 下可以用ethtool看:
# 查看网卡是否支持自动翻转(Auto-MDIX) ethtool eth0 | grep -i "auto-negotiation\|mdix" # 输出中如果有 "Auto-MDIX: on" 或类似字段,说明支持如果输出里没有 MDIX 相关信息,说明这张网卡大概率不支持,老老实实上交叉线。Windows 下可以在设备管理器的网卡属性里看高级选项,有些驱动会暴露「Auto MDI/MDIX」开关。
线序方面,568B 的标准是:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。568A 是把橙和绿两组对调。交叉线就是一头 568B 一头 568A。如果你自己压线,记住一个原则:1-3、2-6 交叉,其余不变。
2.2 网卡状态与链路协商:看灯、看速率、看双工
线插上之后,第一件事不是配 IP,而是确认物理链路有没有起来。网口旁边的指示灯是最直接的信号:插上线之后灯亮,说明物理层通了;灯不亮,要么线坏,要么网口坏,要么网卡被禁用。
Linux 下用ip link看接口状态:
# 查看所有网络接口的状态 ip link show # 关注 eth0(或有线网卡名)的 state 字段 # UP 表示接口已启用,DOWN 表示未启用 # 如果显示 NO-CARRIER,说明物理链路没通如果接口是 DOWN,先启用:
sudo ip link set eth0 up然后看链路协商结果:
# 查看链路速率和双工模式 ethtool eth0 | grep -i "speed\|duplex\|link detected" # 正常应该显示 Speed: 1000Mb/s, Duplex: Full, Link detected: yes这里有个常见问题:两台机器协商出来的速率不一致,比如一台 1000M 全双工,另一台 100M 半双工。这种情况虽然有时也能通,但丢包率会很高,ping 会出现间歇性超时。解决办法是手动指定速率和双工模式:
# 手动设置速率和双工模式(需要网卡驱动支持) sudo ethtool -s eth0 speed 1000 duplex full autoneg off注意,两端要设成一样的。如果设完直接不通了,用ethtool -s eth0 autoneg on恢复自动协商。
Windows 下在「网络和共享中心」→「更改适配器设置」→ 右键网卡 →「属性」→「配置」→「高级」选项卡里,可以找到「速度和双工」的设置项,手动改成一致的值。
2.3 用 ping 验证链路层之前,先确认 ARP 能不能解析
很多人配完 IP 就直接 ping,不通就懵了。其实在 ping 之前,有一个更底层的验证步骤:看 ARP 表能不能解析到对方的 MAC 地址。因为 ping 走的是 IP 层,但 IP 包要封装成帧发出去,必须先通过 ARP 拿到对方的 MAC 地址。如果 ARP 都解析不了,ping 必然不通。
# 先 ping 一下对方 IP,触发 ARP 解析 ping -c 1 192.168.1.2 # 然后查看 ARP 表 arp -a # 或者 ip neigh show # 如果对方 IP 对应的 MAC 地址显示为 incomplete 或 00:00:00:00:00:00,说明 ARP 没解析成功ARP 解析失败的原因通常是:物理链路没通、IP 不在同一网段、或者对方开了防火墙屏蔽了 ARP。先排除前两个,再查防火墙。
3. 网络层配置:IP 地址、子网掩码与路由表
3.1 IP 地址怎么配:同一网段是硬性要求
双机互联不需要网关,不需要 DNS,但两台机器的 IP 必须在同一网段。什么叫同一网段?就是把 IP 和子网掩码做按位与运算之后,网络号相同。
举个例子:A 机 IP 192.168.1.1,掩码 255.255.255.0,网络号是 192.168.1.0;B 机 IP 192.168.1.2,掩码 255.255.255.0,网络号也是 192.168.1.0。同一网段,能通。
如果 B 机配成 192.168.2.2,掩码 255.255.255.0,网络号变成 192.168.2.0,和 A 机不在同一网段,ping 就不通。这时候有人会想加一条路由,但双机直连没有路由器,加了路由也没有下一跳,所以最直接的办法就是把 IP 改到同一网段。
Linux 下配 IP:
# 临时配置 IP(重启后失效) sudo ip addr add 192.168.1.1/24 dev eth0 # 查看配置结果 ip addr show eth0Windows 下在网卡属性里选「Internet 协议版本 4 (TCP/IPv4)」,手动填 IP 和掩码,网关留空。
提示:如果两台机器都开了 Wi-Fi,有线网卡也配了同网段 IP,可能会出现路由冲突。建议做这个实验时先禁用 Wi-Fi,避免流量走错接口。
3.2 子网掩码写错有多致命:一个 /24 写成 /25 的翻车记录
子网掩码写错是实验报告里最高频的翻车点之一。我见过有人把 255.255.255.0 写成 255.255.255.128,结果两台机器一个能通一个不能通。原因很简单:/25 的掩码把 192.168.1.0/24 切成了两个子网,192.168.1.0~127 和 192.168.1.128~255。如果 A 机 IP 是 192.168.1.1/25,B 机是 192.168.1.200/25,它们就不在同一子网了。
排查方法:用ipcalc或在线工具算一下网络号。
# 计算网络号 ipcalc 192.168.1.1/25 # 输出会显示 Network: 192.168.1.0/25 ipcalc 192.168.1.200/25 # 输出会显示 Network: 192.168.1.128/25 # 两个网络号不同,说明不在同一子网双机互联实验里,最稳妥的掩码就是 255.255.255.0(/24),别搞花活。
3.3 路由表怎么看:确认流量走的是哪张网卡
配完 IP 之后,系统会自动生成一条直连路由。用ip route查看:
# 查看路由表 ip route show # 正常应该有一条类似这样的记录: # 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1这条记录的意思是:目标网段 192.168.1.0/24 的流量,走 eth0 接口,源地址是 192.168.1.1。如果路由表里没有这条记录,或者走的是别的接口(比如 wlan0),ping 就会从错误的接口发出去,自然不通。
如果发现路由走错了接口,可以手动加一条:
# 添加直连路由 sudo ip route add 192.168.1.0/24 dev eth0Windows 下用route print查看路由表,用route add添加。
4. 防火墙与安全软件:ping 不通的头号嫌疑犯
4.1 Windows 防火墙默认拦 ping:入站规则怎么改
Windows 防火墙默认会拦截 ICMP 回显请求,也就是说,对方 ping 你,你的机器收到了包但不回。现象就是:你能 ping 通对方,对方 ping 不通你。这不是网络问题,是防火墙问题。
解决办法:在「高级安全 Windows Defender 防火墙」→「入站规则」里,找到「文件和打印机共享 (回显请求 - ICMPv4-In)」,启用它。或者直接用命令行:
# 启用 ICMPv4 入站回显请求规则 netsh advfirewall firewall set rule name="文件和打印机共享 (回显请求 - ICMPv4-In)" new enable=yes如果找不到这条规则,可以手动创建:
# 创建允许 ICMP 入站的规则 netsh advfirewall firewall add rule name="Allow ICMPv4-In" protocol=icmpv4:8,any dir=in action=allow4.2 Linux 的 iptables 与 firewalld:临时放行 ICMP
Linux 这边,如果开了 firewalld 或 iptables 规则,也可能拦 ICMP。先看 firewalld 状态:
# 查看 firewalld 状态 sudo systemctl status firewalld # 如果正在运行,临时放行 ICMP sudo firewall-cmd --add-icmp-block-inversion --permanent sudo firewall-cmd --reload或者直接临时关闭防火墙做测试:
# 临时停止 firewalld(仅用于实验排查) sudo systemctl stop firewalld # 测试完记得重新启动 sudo systemctl start firewalldiptables 的话,查看当前规则:
# 查看 iptables 规则 sudo iptables -L -n # 如果 INPUT 链有 DROP 或 REJECT 规则,临时清空 sudo iptables -F注意:清空 iptables 规则只在实验环境下做,生产环境千万别这么干。
4.3 第三方安全软件:那些悄悄拦包的「管家」
国内很多机器上装了安全管家类软件,这些软件有自己的网络防护模块,会拦截 ICMP 或 ARP。现象是:防火墙关了,iptables 也清了,ping 还是不通。这时候检查一下任务栏,看有没有安全软件在跑。临时退出这些软件再试,如果通了,就是它们在拦。
我一般做实验前会先把这些软件退掉,省得排查半天以为是网络问题。
5. 双机互联避坑指南:5 个高频翻车现场
5.1 现象:网线插上灯不亮,换线也不行
原因:网口坏了,或者网卡被禁用。有些笔记本的网口有物理开关,或者 BIOS 里禁用了有线网卡。
解决:先看设备管理器(Windows)或lspci(Linux)里有没有识别到网卡。如果识别到了但灯不亮,换一台机器试同一个网口,确认是网口问题还是网卡问题。笔记本的话检查 BIOS 里有没有禁用 LAN。
5.2 现象:ping 显示「一般故障」或「传输失败」
原因:这是 Windows 下常见的 ICMP 错误提示,通常意味着路由不可达或 ARP 解析失败。最常见的原因是 IP 不在同一网段,或者子网掩码写错。
解决:用ipconfig /all确认两台机器的 IP 和掩码,手动算一下网络号是否一致。然后用arp -a看对方 IP 有没有解析出 MAC 地址。如果 ARP 表里是空的或 incomplete,检查物理链路和防火墙。
5.3 现象:能 ping 通 IP,但 ping 不通主机名
原因:双机互联没有 DNS 服务器,主机名无法解析。这不是网络故障,是正常现象。
解决:如果确实需要用主机名互访,改 hosts 文件。Windows 在C:\Windows\System32\drivers\etc\hosts,Linux 在/etc/hosts,加一行192.168.1.2 对方主机名。
5.4 现象:ping 时通时不通,丢包严重
原因:链路协商不稳定,或者网线质量差。劣质网线在千兆速率下容易丢包。
解决:先用ethtool看协商速率和双工模式,两端是否一致。如果不一致,手动指定。如果一致但还是丢包,换一根质量好点的网线,或者把速率降到 100M 试试。
5.5 现象:一台能 ping 通另一台,反过来不行
原因:单向不通,通常是防火墙只拦了一个方向,或者路由表不对称。
解决:先在能通的那台机器上 ping 对方,确认双向。然后在不通的那台机器上检查防火墙入站规则,以及ip route看有没有到对方网段的路由。Windows 下还要检查是不是网络位置被设成了「公用网络」,公用网络模式下防火墙更严格。
6. 进阶验证:用 tcpdump 抓包看清 ping 的每一步
ping 通了不代表你理解了整个过程。如果想真正搞清楚双机互联的通信细节,抓包是最直接的手段。在 Linux 上用 tcpdump 抓 ICMP 和 ARP:
# 抓取 eth0 上的 ICMP 和 ARP 包 sudo tcpdump -i eth0 -n -e icmp or arp # -n 不解析主机名,-e 显示 MAC 地址然后在另一台机器上 ping 过来,你会看到类似这样的输出:
ARP, Request who-has 192.168.1.1 tell 192.168.1.2, length 28 ARP, Reply 192.168.1.1 is-at aa:bb:cc:dd:ee:ff, length 28 IP 192.168.1.2 > 192.168.1.1: ICMP echo request, id 1, seq 1, length 64 IP 192.168.1.1 > 192.168.1.2: ICMP echo reply, id 1, seq 1, length 64这四行输出完整展示了 ping 的底层流程:先 ARP 请求拿 MAC 地址,ARP 应答返回,然后 ICMP 请求发出,ICMP 应答返回。如果 ARP 那两行没有出现,说明链路层就没通;如果 ARP 有但 ICMP 没有,说明 IP 层或防火墙有问题。
Windows 下可以用 Wireshark 做同样的抓包,过滤条件写icmp || arp。
抓包还有一个好处:能看清 ping 包的大小和 TTL。默认 ping 包是 64 字节,TTL 在 Linux 上通常是 64,Windows 上是 128。如果 TTL 异常小,说明中间经过了多跳路由,那你的「双机直连」可能并不是真的直连。
我自己的习惯是,每次做双机互联实验,ping 通之后都会抓一次包,确认 ARP 和 ICMP 的交互过程符合预期。这个习惯帮我排掉过好几次「以为通了其实走错接口」的玄学问题。希望帮到你。
本文还有配套的精品资源,点击获取