以太网(Ethernet)是一种局域网(LAN)技术标准,用于在局域网内通过有线连接传输数据。而局域网(Local Area Network,LAN)则是一个更广泛的概念,指覆盖较小地理范围的网络,如家庭、办公室或校园内的网络。局域网可以使用不同的技术,包括以太网、Wi-Fi等。
1. 以太网和局域网
- 定义与范围:
-
以太网是具体的网络技术,属于OSI模型的物理层和数据链路层,主要用于有线连接。
-
局域网是网络类型,根据覆盖范围定义,可以使用多种技术,如以太网、Wi-Fi、令牌环等。
- 传输介质:
-
以太网通常使用双绞线、同轴电缆或光纤。
-
局域网可能使用有线(如以太网)或无线(如Wi-Fi)介质。
- 协议标准:
-
以太网遵循IEEE 802.3标准。
-
局域网可能涉及多种协议,如TCP/IP、Wi-Fi(IEEE 802.11)等。
- 速度和性能:
-
以太网速度从10 Mbps到100 Gbps不等,延迟低。
-
局域网的性能取决于采用的技术,如Wi-Fi的速度通常低于有线以太网。
—————————————————————————————————————————————
-
以太网(Ethernet)
- 具体技术标准:一种有线局域网(LAN)技术,用于通过电缆(如双绞线、光纤)连接设备。
- 协议标准:基于 IEEE 802.3 标准,定义了物理层和数据链路层的通信规则。
- 典型场景:办公室、数据中心的有线网络连接。
-
局域网(LAN, Local Area Network)
- 广义概念:指覆盖较小地理范围(如家庭、办公室、校园)的计算机网络。
- 技术多样性:可以使用多种技术实现,包括以太网、Wi-Fi(无线局域网)、令牌环等。
- 范围限制:通常覆盖范围在几米到几公里内。
| 特性 | 以太网 | 局域网(LAN) |
|---|---|---|
| 本质 | 具体的有线网络技术标准 | 网络类型(可包含多种技术) |
| 传输介质 | 双绞线、光纤、同轴电缆 | 有线(如以太网)或无线(如 Wi-Fi) |
| 协议标准 | IEEE 802.3 | 不依赖单一协议(如 Wi-Fi 用 IEEE 802.11) |
| 速度 | 10 Mbps 到 100 Gbps | 取决于技术(如 Wi-Fi 6 可达 9.6 Gbps) |
| 典型应用 | 企业内网、服务器机房 | 家庭网络、办公室无线覆盖 |
2. 其他关键网络连接知识
1. 广域网(WAN, Wide Area Network)
- 定义:覆盖广阔地理区域(如城市、国家、全球)的网络,通常由多个局域网通过路由器连接。
- 技术:使用光纤、卫星、5G 等长距离传输技术。
- 典型协议:MPLS、SD-WAN、IPsec。
- 例子:互联网、跨城市的企业专网。
2. Wi-Fi(无线局域网)
- 标准:基于 IEEE 802.11 系列协议(如 802.11n/ac/ax)。
- 频段:2.4 GHz 和 5 GHz,6 GHz(Wi-Fi 6E)。
- 优势:无需布线,移动性强;劣势:易受干扰,安全性需加密(如 WPA3)。
3. TCP/IP 模型
-
四层结构:
- 应用层(HTTP、FTP、DNS)
- 传输层(TCP、UDP)
- 网络层(IP、ICMP)
- 网络接口层(以太网、Wi-Fi)
-
作用:定义数据如何封装、寻址、传输和路由。
4. 子网划分(Subnetting)
- 目的:将大型网络分割为多个子网,提高效率和安全性。
- 工具:子网掩码(如
255.255.255.0)和 CIDR 表示法(如192.168.1.0/24)。 - 例子:将
192.168.1.0/24划分为192.168.1.0/26四个子网。
5. NAT(网络地址转换)
- 功能:将私有 IP 地址(如
192.168.x.x)映射为公有 IP,实现多设备共享上网。 - 类型:静态 NAT(一对一)、动态 NAT(多对多)、PAT(端口地址转换,多对一)。
6. VPN(虚拟专用网络)
- 作用:通过加密隧道在公共网络(如互联网)上建立安全连接。
- 协议:IPsec、OpenVPN、WireGuard。
- 用途:远程办公、绕过地域限制。
7. DHCP(动态主机配置协议)
- 功能:自动为设备分配 IP 地址、子网掩码、网关和 DNS。
- 过程:DISCOVER → OFFER → REQUEST → ACK。
8. DNS(域名系统)
- 作用:将域名(如
www.example.com)解析为 IP 地址(如93.184.216.34)。 - 层级:根域名服务器 → 顶级域(如
.com)→ 权威域名服务器。
| 网络类型 | 覆盖范围 | 技术示例 | 典型速度 | 应用场景 |
|---|---|---|---|---|
| 局域网 | 小范围(< 1 km) | 以太网、Wi-Fi | 1 Mbps – 100 Gbps | 家庭、办公室 |
| 城域网 | 城市范围 | 光纤、微波 | 10 Gbps – 100 Gbps | 城市级企业互联 |
| 广域网 | 跨区域或全球 | 光纤、卫星、SD-WAN | 1 Mbps – 100 Gbps | 互联网、跨国企业网络 |
| 个域网 | 个人设备(< 10 m) | 蓝牙、ZigBee、NFC | 1 Kbps – 2 Mbps | 智能家居、可穿戴设备 |
3. 开发板连接 PC 的 MQTT Broker
Windows PC 上存在 多个网络适配器,每个适配器分配了不同的 IPv4 地址。
| IP 地址 | 对应网络适配器 | 用途 |
|---|---|---|
192.168.157.1 | VMware Network Adapter VMnet1 | 仅用于 VMware 虚拟机 Host-Only 网络(虚拟机与主机通信,不对外联网) |
192.168.237.1 | VMware Network Adapter VMnet8 | 用于 VMware 虚拟机 NAT 模式(虚拟机通过主机共享上网) |
192.168.5.10 | 以太网适配器(有线网络) | 开发板通过网线直连或连接到同一有线网络的 IP 地址 |
192.168.0.3 | 无线局域网适配器(Wi-Fi) | 连接家庭/办公室 Wi-Fi 网络的 IP 地址 |
开发板需要连接 PC 的 MQTT Broker,但遇到了 ping 失败和通信问题。原因如下:
(1) 开发板与 PC 的网络适配器不在同一子网
- 开发板的 IP:
192.168.5.9(假设通过有线网络连接到 PC)。 - PC 的有线网络 IP:
192.168.5.10→ 正确,属于同一子网(192.168.5.0/24)。 - PC 的无线网络 IP:
192.168.0.3→ 错误,属于不同子网(192.168.0.0/24)。
(2) 防火墙或路由配置错误
-
开发板无法 Ping 通 PC(192.168.5.10) :
可能是 Windows 防火墙阻止了入站 ICMP 请求,或开发板未正确配置网关/路由。 -
PC 可以 Ping 通开发板(192.168.5.9) :
表示开发板的网络接口已启用,且物理连接正常,但可能存在单向通信限制(如防火墙规则)。
(1) 如果开发板通过有线连接(网线直连或同一路由器)
-
PC端IP地址:
192.168.5.10(有线网络适配器) -
验证方法:
- 在PC上关闭Wi-Fi,确保开发板和PC通过网线连接到同一路由器。
- 开发板的IP地址应设置为
192.168.5.x网段(如192.168.5.20)。 - 在开发板上执行
ping 192.168.5.10,确认网络可达。
(2) 如果开发板通过Wi-Fi连接同一无线网络
-
PC端IP地址:
192.168.0.3(无线网络适配器) -
验证方法:
- 确保开发板连接到
192.168.0.x网段的Wi-Fi。 - 开发板的IP地址应设置为
192.168.0.x(如192.168.0.100)。 - 在开发板上执行
ping 192.168.0.3,确认网络可达。
- 确保开发板连接到
(3)虚拟网络连接
VMnet1 和 VMnet8 是VMware虚拟机专用网络,除非开发板运行在虚拟机中并通过虚拟网络桥接,否则这些地址无法被物理开发板访问。
———————————————————————————————————————————————
| 连接方式 | IP地址类型 | 速度 | 典型场景 | 复杂度 |
|---|---|---|---|---|
| 以太网有线 | 局域网私有IP | 高(1 Gbps+) | 固定设备、高速数据传输 | 低 |
| Wi-Fi无线 | 局域网私有IP | 中(100 Mbps) | 移动设备、无布线环境 | 中 |
| USB网络共享 | 本地链路/静态IP | 中(480 Mbps) | 调试、无网络接口时的临时连接 | 中 |
| 蓝牙网络 | 局域网私有IP | 低(2 Mbps) | 低功耗设备、近距离控制 | 高 |
| 移动网络 | 公网IP | 可变 | 远程监控、物联网设备 | 高 |
| 串口转IP | 本地链路地址 | 低(<1 Mbps) | 无网络接口的嵌入式设备 | 高 |
| IPv6本地链路 | IPv6本地链路地址 | 高 | IPv6环境下的直接通信 | 低 |
4. NAT网卡和桥接网卡
NAT 网卡和桥接网卡是两种常见的网络连接模式,用于控制虚拟机与物理网络的通信方式。
4.1 NAT 网卡(Network Address Translation)
核心原理
- IP 共享:虚拟机通过宿主机的 IP 地址访问外部网络(类似家庭路由器的工作方式)。
- 隔离性:虚拟机位于宿主机的私有子网中,外部网络无法直接访问虚拟机。
- 地址转换:宿主机会将虚拟机的网络请求转换为自己的 IP 地址,再转发到外部网络。
NAT, Network Address Translation, 指网络地址转换。使用 NAT 网卡时, Ubuntu 要访问外网,是委托 Windows 发出数据包, Windows 接收到回应后再转发给 Ubuntu。外界看到的都是 Windows,看不到 Ubuntu。使用 NAT 时,只要 Windows 能上网, Ubuntu 就必定能上网, 无需设置 Ubuntu 的网络。
| 优点 | 缺点 |
|---|---|
| 虚拟机共享宿主机 IP,无需额外配置 | 外部网络无法直接访问虚拟机 |
| 网络隔离性强,安全性高 | 虚拟机和宿主机之间需手动配置端口转发 |
| 适合单向上网场景(如开发测试) | 性能略低于桥接模式 |
4.2 添加NAT网卡
4.3 桥接网卡(Bridged Networking)
核心原理
- 直接接入物理网络:虚拟机的网卡直接连接到物理网络,如同宿主机的一个独立设备。
- 独立 IP:虚拟机会从物理网络的 DHCP 服务器获取 IP 地址(与宿主机同级)。
- 透明通信:外部设备可直接访问虚拟机,无需通过宿主机。
使用桥接网卡时, Ubuntu 就是使用一个真实的网卡:开发板的网线也连接到这个真实的网卡上,这样 Windows、 Ubuntu、开发板就都可以用这个网卡互通了
| 优点 | 缺点 |
|---|---|
| 虚拟机直接接入物理网络,性能高 | 需要物理网络支持(如 DHCP、交换机配置) |
| 外部设备可直接访问虚拟机 | 可能引发 IP 冲突(需管理 IP 分配) |
| 适合需要暴露服务的场景(如服务器) | 安全性较低(虚拟机暴露在网络中) |
4.4 添加桥接网卡
4.5 NAT 与桥接的对比
| 特性 | NAT 模式 | 桥接模式 |
|---|---|---|
| IP 地址 | 宿主机分配的私有 IP(虚拟子网) | 物理网络分配的独立 IP |
| 网络可见性 | 外部网络不可见虚拟机 | 虚拟机对物理网络完全可见 |
| 配置复杂度 | 简单(自动完成) | 较复杂(需物理网络支持) |
| 安全性 | 高(隔离性强) | 低(直接暴露) |
| 性能 | 中等(需地址转换) | 高(直连物理网络) |
| 典型场景 | 开发测试、单向上网 | 服务器、局域网设备互联 |
5. 防火墙是啥?
防火墙(Firewall)是计算机或网络中的一种安全系统,用于监控和控制进出网络的流量。它通过预定义的安全规则,决定允许或阻止特定数据包的传输,主要功能包括:
- 过滤恶意流量:阻止黑客攻击、病毒传播等。
- 控制访问权限:限制外部设备访问内部网络的特定服务(如 HTTP、SSH)。
- 日志记录:记录网络连接尝试,便于安全审计
当开发板通过局域网连接到 PC 端的 MQTT Broker(如 Mosquitto)时,防火墙可能阻止通信。MQTT 协议默认使用 TCP 端口 1883(非加密)或 8883(SSL)。若防火墙未放行这些端口,会导致以下问题:
- 连接被拒绝:开发板的
mosquitto_pub命令无法到达 Broker。 - 超时错误:防火墙静默丢弃数据包,开发板等待响应超时。
以下是具体原因和解决方案:
5.1 临时关闭防火墙
5.2 正确配置防火墙(以开放 1883 端口为例)
Windows 系统
- 通过命令行开放端口:
#允许入站 TCP 1883 端口
netsh advfirewall firewall add rule name="MQTT" dir=in action=allow protocol=TCP localport=1883
# 允许出站 TCP 1883 端口(通常不需要,按需设置)
netsh advfirewall firewall add rule name="MQTT-Out" dir=out action=allow protocol=TCP localport=1883
-
通过图形界面配置:
- 打开 控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置。
- 选择 入站规则 → 新建规则 → 端口 → TCP 1883 → 允许连接。
- 重复步骤创建 出站规则(可选)。
-
验证规则生效:
netsh advfirewall firewall show rule name="MQTT"
Linux 系统(以 Ubuntu 为例)
- 使用
ufw工具:
# 允许 1883 端口
sudo ufw allow 1883/tcp
# 启用防火墙(若未启用)
sudo ufw enable
# 查看规则
sudo ufw status
-
使用
iptables(传统方法) :# 允许入站 TCP 1883 sudo iptables -A INPUT -p tcp --dport 1883 -j ACCEPT # 保存规则(根据发行版) sudo iptables-save | sudo tee /etc/iptables/rules.v4
防火墙管理优先级:配置规则 > 临时关闭 > 长期关闭。