目标能够调试机器人网络、抓包分析、配置网络、排查基本网络问题。适合网络基础薄弱以实用为主的学习者。一、基础概念先建立认知框架1.1 网络模型简介不需要死记 OSI 七层记住 TCP/IP 四层即可层次作用典型协议/工具应用层程序直接使用HTTP、ROS、SSH、Telnet传输层端口、可靠性TCP、UDP网络层IP 寻址、路由IP、ICMPping 用的链路层物理网卡、MAC 地址Ethernet、WiFi1.2 必须理解的核心概念IP 地址设备在网络中的地址如192.168.1.100子网掩码决定哪些 IP 在同一个局域网如255.255.255.0即/24网关局域网出口通常是路由器 IP如192.168.1.1端口一个 IP 上区分不同服务的编号0-65535如 HTTP80SSH22MAC 地址网卡硬件地址局域网内唯一标识如aa:bb:cc:dd:ee:ffDNS域名解析把www.google.com转成 IP机器人场景理解机器人和上位机通常在同一局域网通过 IP端口通信ROS 用 11311 端口各种服务各有端口。二、查看网络状态诊断第一步2.1 查看本机网络配置# 查看所有网卡的 IP、MAC 地址ipaddr# 或简写ipa# 旧版命令部分系统ifconfig重点看inetIPv4 地址和子网掩码如192.168.1.100/24etherMAC 地址state UP/DOWN网卡是否启用# 查看路由表知道数据包往哪走iproute# 或route-n# 输出示例# default via 192.168.1.1 dev eth0 - 默认网关# 192.168.1.0/24 dev eth0 - 本地局域网段2.2 ping —— 测试连通性# 基本用法ping192.168.1.1# 指定发送次数ping-c4192.168.1.1# 指定间隔秒ping-i0.5192.168.1.1# 测试 DNS 是否正常pingwww.baidu.com看什么timexxx ms延迟局域网通常 1ms异常则说明链路有问题Request timeout对方不通或防火墙拦截Destination Host Unreachable路由不通检查网关和 IP 配置机器人场景上位机 ping 不通机器人 → 先检查 IP 配置再检查网线/WiFi 连接。2.3 netstat / ss —— 查看端口和连接# 查看所有监听的端口哪些服务在等待连接netstat-tlnp# 或用更快的 ssss-tlnp# 参数说明# -t TCP连接 -u UDP连接 -l 监听状态 -n 显示数字端口 -p 显示进程名# 查看所有已建立的 TCP 连接netstat-tnpss-tnp# 查看某个端口是否被占用netstat-tlnp|grep8080ss-tlnp|grep8080# 查看 UDP 端口ss-ulnp输出解读Proto Local Address Foreign Address State PID/Program tcp 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 192.168.1.10:22 192.168.1.5:54321 ESTABLISHED 5678/sshdLISTEN服务正在监听等待连接ESTABLISHED已建立连接TIME_WAIT连接正在关闭2.4 查看 ARP 表局域网设备发现# 查看 ARP 缓存IP 对应的 MACarp-n# 或ipneigh# 扫描局域网内存活的设备arp-scan-l# 或nmap-sn192.168.1.0/24三、连接测试工具3.1 telnet —— 测试 TCP 端口连通性# 安装Ubuntusudoaptinstalltelnet# 测试某个 IP 的端口是否可达telnet192.168.1.1008080# 输出# Connected to 192.168.1.100. - 端口通服务在运行# Connection refused - 端口不通服务未启动# 无响应/超时 - 网络不通或防火墙拦截退出 telnetCtrl]然后输入quit机器人场景机器人开了一个 9090 端口的 WebSocket Bridge用telnet 机器人IP 9090快速验证端口是否开放。3.2 ncnetcat—— 更强的端口测试# 测试 TCP 端口nc-zv192.168.1.1008080# 测试 UDP 端口nc-zuv192.168.1.1009090# 扫描一段端口nc-zv192.168.1.1008000-9000# 参数-z 扫描不发数据 -v 详细输出3.3 curl —— 测试 HTTP 接口# 测试 HTTP 服务是否正常curlhttp://192.168.1.100:8080/# 显示响应头curl-Ihttp://192.168.1.100:8080/# POST 请求curl-XPOST-d{cmd:stop}http://192.168.1.100:8080/api# 带超时时间curl--connect-timeout5http://192.168.1.100:8080/3.4 ssh —— 远程登录机器人# 登录sshuser192.168.1.100# 指定端口ssh-p2222user192.168.1.100# 免密登录配置ssh-keygen-trsa# 生成密钥对ssh-copy-id user192.168.1.100# 把公钥复制到目标机器# 测试 SSH 连通性不登录ssh-oConnectTimeout5user192.168.1.100exit四、抓包分析4.1 tcpdump —— 命令行抓包# 安装sudoaptinstalltcpdump# 抓取指定网卡的所有包sudotcpdump-ieth0# 抓取指定 IP 的包sudotcpdump-ieth0host192.168.1.100# 抓取指定端口sudotcpdump-ieth0 port8080# 抓取并保存到文件用 Wireshark 分析sudotcpdump-ieth0-wcapture.pcap# 只抓 100 个包sudotcpdump-ieth0-c100# 组合过滤某 IP 的某端口sudotcpdump-ieth0host192.168.1.100 and port8080# 显示详细内容ASCIIsudotcpdump-ieth0-Aport80# 查看所有可用网卡sudotcpdump-D常用过滤语法# TCP 包tcpdump tcp# UDP 包tcpdump udp# 来自某 IPtcpdump src192.168.1.100# 发往某 IPtcpdump dst192.168.1.100# 某网段tcpdump net192.168.1.0/244.2 Wireshark —— 图形化抓包分析# 安装sudoaptinstallwireshark# 启动wireshark核心用法选择网卡 → 开始抓包过滤栏输入过滤条件ip.addr 192.168.1.100— 过滤某 IPtcp.port 8080— 过滤端口http— 只看 HTTPicmp— 只看 ping右键包 →Follow TCP Stream— 看完整会话内容打开 tcpdump 保存的文件wireshark capture.pcap机器人场景抓取机器人和上位机之间的通信分析 ROS topic 数据是否按预期发送。五、网络配置5.1 临时配置 IP重启失效# 设置 IP 和子网掩码sudoipaddradd192.168.1.100/24 dev eth0# 删除 IPsudoipaddr del192.168.1.100/24 dev eth0# 启用/禁用网卡sudoiplinkseteth0 upsudoiplinkseteth0 down# 设置默认网关sudoiprouteadddefault via192.168.1.15.2 永久配置 IPUbuntu/Debian使用 NetplanUbuntu 18.04# 查看配置文件ls/etc/netplan/# 编辑配置文件名可能不同sudonano/etc/netplan/01-netcfg.yaml静态 IP 配置示例network:version:2ethernets:eth0:dhcp4:falseaddresses:-192.168.1.100/24gateway4:192.168.1.1nameservers:addresses:[8.8.8.8,114.114.114.114]DHCP 自动获取配置network:version:2ethernets:eth0:dhcp4:true# 应用配置sudonetplan apply5.3 DNS 配置# 临时修改 DNSsudonano/etc/resolv.conf# 添加# nameserver 8.8.8.8# nameserver 114.114.114.114# 测试 DNS 解析nslookupwww.baidu.comdigwww.baidu.com5.4 防火墙UFW# 查看状态sudoufw status# 允许某端口sudoufw allow8080sudoufw allow8080/tcp# 拒绝某端口sudoufw deny8080# 允许某 IP 访问sudoufw allow from192.168.1.0/24# 开启/关闭防火墙sudoufwenablesudoufw disable六、路由与网络诊断进阶6.1 traceroute —— 追踪路由路径# 安装sudoaptinstalltraceroute# 追踪到目标的路由路径traceroute192.168.1.100traceroutewww.baidu.com# 使用 TCP穿透防火墙更好sudotraceroute-T-p80www.baidu.com看什么每一跳是一个路由器延迟突然变大的那一跳就是问题所在。* * *表示该路由器不响应。6.2 mtr —— ping traceroute 合体sudoaptinstallmtrsudomtr192.168.1.100实时显示每一跳的延迟和丢包率比 traceroute 更直观。6.3 nmap —— 网络扫描sudoaptinstallnmap# 扫描局域网存活主机nmap-sn192.168.1.0/24# 扫描某主机开放的端口nmap192.168.1.100# 扫描指定端口范围nmap-p1-10000192.168.1.100# 扫描常见服务版本nmap-sV192.168.1.100七、机器人网络调试实战场景场景 1上位机连不上机器人排查步骤# Step 1: 检查自己的 IP 是否正确ipaddr# Step 2: ping 机器人 IPping192.168.1.100# Step 3: 如果 ping 通但服务不通检查端口telnet192.168.1.1009090# 或nc-zv192.168.1.1009090# Step 4: 在机器人上检查服务是否在运行sshuser192.168.1.100 ss-tlnp|grep9090# Step 5: 检查防火墙sudoufw status场景 2ROS 通信异常# 检查 ROS_MASTER_URI 和 ROS_IP 是否设置正确echo$ROS_MASTER_URIecho$ROS_IP# 检查 11311 端口是否开放telnet 机器人IP11311# 抓包看 ROS 通信sudotcpdump-ieth0host机器人IP-wros_debug.pcap场景 3网络延迟高/丢包# 持续 ping 看丢包率ping-c100192.168.1.100|tail-5# 用 mtr 定位哪一跳有问题mtr192.168.1.100# 检查网卡错误统计ip-slinkshow eth0# 看 errors 和 dropped 数量场景 4不知道机器人 IP# 扫描局域网nmap-sn192.168.1.0/24# 或者arp-scan-l# 查看 ARP 表需先 ping 广播ping-b192.168.1.255 arp-n八、常用命令速查表命令用途ip addr查看本机 IP 和网卡信息ip route查看路由表ping IP测试连通性ping -c 4 IPping 4 次telnet IP 端口测试 TCP 端口连通nc -zv IP 端口测试端口更快ss -tlnp查看监听中的端口ss -tnp查看已建立的连接netstat -tlnp同上旧版curl http://IP:端口/测试 HTTP 服务ssh userIP远程登录nmap -sn 192.168.1.0/24扫描局域网主机nmap IP扫描主机开放端口tcpdump -i eth0 host IP抓取指定 IP 的包tcpdump -i eth0 -w a.pcap抓包保存文件wireshark图形化抓包分析traceroute IP追踪路由路径mtr IP实时路由丢包分析arp -n查看 ARP 表局域网 IP-MACnslookup 域名测试 DNS 解析sudo ufw status查看防火墙状态九、学习顺序建议第一周理解 IP、子网、网关、端口概念 → 熟练使用ip addr、ping、ss第二周掌握telnet、nc、curl做端口测试 → 学会ssh远程登录第三周学习tcpdump基本抓包 → 安装 Wireshark 做图形化分析第四周学习nmap扫描 →traceroute/mtr路由诊断 → 实战排查机器人网络问题持续练习每次遇到网络问题时按连通性 → 端口 → 服务 → 抓包的顺序排查十、推荐参考资源man 命令任何命令加 man 查官方文档如man tcpdump命令 --help快速查参数Wireshark 官方文档过滤语法非常强大ip命令替代ifconfig/route优先学习ip系列