网络简要学习
设备 A 想把数据发给设备 B,先判断 B 是不是“本地人”。如果是同一个子网,就直接找 B;如果不是,就把数据交给网关,让网关继续转发。
IP 用来标识最终要找谁。
MAC 用来标识下一跳发给谁。
子网掩码用来判断目标是不是本地人。子网掩码用来判断两个 IP 是不是在同一个局域网里。
网关用来访问外部网络。
路由表用来决定下一跳是谁。
"主机"就是网络里的具体设备,比如电脑、手机、服务器、摄像头、PLC、每台主机一般至少有: IP 地址 子网掩码 默认网关 DNS MAC 地址 例如设备 A: IP:192.168.1.10 子网掩码:255.255.255.0 网关:192.168.1.1 MAC:AA-AA-AA-AA-AA-AA工控机等。 每台主机一般至少有: IP 地址 子网掩码 默认网关 DNS MAC 地址 例如设备 A: IP:192.168.1.10 子网掩码:255.255.255.0 网关:192.168.1.1 MAC:AA-AA-AA-AA-AA-AA“网络”就是一组能互相通信的设备。 比如: 192.168.1.0/24 表示一个局域网,里面通常有这些主机: 192.168.1.1 192.168.1.2 192.168.1.3 ... 192.168.1.254 这个网络的地址范围是: 192.168.1.0 - 192.168.1.255 其中: 192.168.1.0 网络地址 192.168.1.255 广播地址 192.168.1.1-254 可用主机地址网关 网关就是“离开当前网络的门”。 比如 A 的配置: IP:192.168.1.10 掩码:255.255.255.0 网关:192.168.1.1 如果 A 要访问:192.168.1.20 A 发现对方和自己同网段,直接发给 B。 如果 A 要访问: 192.168.2.20 8.8.8.8 www.baidu.com A 发现对方不在本地网段,就把数据发给:192.168.1.1 这个 192.168.1.1 通常是路由器、三层交换机、防火墙或者网关设备。 网关现实中指的是 通常说的“默认网关”,一般是主机以外的三层设备,比如: 路由器 三层交换机 防火墙 工控网关 Linux 网关服务器 例如: A:192.168.20.100/24 网关:192.168.20.1 这里 192.168.20.1 通常是另一台设备的 IP。 但也有特殊情况:本机也可以充当网关。比如一台 Linux 主机有两张网卡: eth0:192.168.20.100/24 eth1:10.10.10.1/24 如果它开启了 IP 转发,它就可以帮别的设备转发数据,此时它对别的设备来说就是网关。 但对“本机自己访问外网”来说,默认网关一般不会配置成自己,而是配置成能帮它继续转发的下一跳设备。 一句话: 网关不是一个固定硬件名,而是“下一跳路由设备”的角色。ARP 全称是 Address Resolution Protocol,地址解析协议。 它解决的问题是: 我知道对方 IP,但我不知道对方 MAC,怎么办? 在以太网里,真正发出去的数据帧需要目标 MAC 地址。 所以当 A 想发给同网段的 B: A:192.168.20.100 B:192.168.20.158 A 会广播一句: 谁是 192.168.20.158?请告诉 192.168.20.100 B 收到后回答: 我是 192.168.20.158,我的 MAC 是 xx:xx:xx:xx:xx:xx 然后 A 把这个对应关系缓存起来: 192.168.20.158 -> B 的 MAC 这个缓存叫 ARP 表。 可以理解为: IP 地址:你家地址 MAC 地址:你本人身份证/门牌的底层标识 ARP:在本地小区里喊一声,问这个 IP 是谁 注意:ARP 只在同一个二层广播域里工作。跨网段时,A 不会 ARP 远端 B,而是 ARP 网关。真实的网络交互 情况一:A 和 B 在同一个子网 A:192.168.1.10/24 B:192.168.1.20/24 网关:192.168.1.1 A 要访问 B。 第一步,A 判断 B 是否和自己同网段: A 网络:192.168.1.0/24 B 网络:192.168.1.0/24 发现是同一个网络。 第二步,A 需要知道 B 的 MAC 地址。 因为在局域网里,真正发送数据靠的是 MAC 地址,不是只靠 IP。 于是 A 发 ARP 广播: 谁是 192.168.1.20?请告诉 192.168.1.10 交换机会把这个广播发给同一局域网里的设备。 B 收到后回复: 我是 192.168.1.20,我的 MAC 是 BB-BB-BB-BB-BB-BB 第三步,A 发送数据: 源 IP:192.168.1.10 目标 IP:192.168.1.20 源 MAC:A 的 MAC 目标 MAC:B 的 MAC 交换机根据目标 MAC,把帧转发给 B。 注意:这个过程中 网关不参与。 情况二:A 和 B 不在同一个子网 A:192.168.1.10/24 网关:192.168.1.1 B:192.168.2.20/24 A 要访问 B。 第一步,A 判断 B 是否和自己同网段: A 网络:192.168.1.0/24 B 网络:192.168.2.0/24 发现不是同一个网络。 第二步,A 决定把数据交给网关: 192.168.1.1 但 A 还是要先知道网关的 MAC 地址。 于是 A 发 ARP: 谁是 192.168.1.1?请告诉 192.168.1.10 网关回复: 我是 192.168.1.1,我的 MAC 是 GG-GG-GG-GG-GG-GG 第三步,A 把数据发给网关。 这里很关键: 源 IP:192.168.1.10 目标 IP:192.168.2.20 源 MAC:A 的 MAC 目标 MAC:网关的 MAC 也就是说: IP 目标还是 B,但 MAC 目标是网关。 第四步,网关收到后,查看自己的路由表,发现 192.168.2.0/24 怎么走,然后转发出去。 如果 B 就在网关的另一个接口下,网关会再 ARP 找 B 的 MAC,然后发给 B。 发送到 B 时变成: 源 IP:192.168.1.10 目标 IP:192.168.2.20 源 MAC:网关另一个接口的 MAC 目标 MAC:B 的 MAC 所以跨网段通信时: IP 地址通常端到端不变 MAC 地址每经过一跳都会变 这是理解网络交互的核心。