ᕕ( ᐛ )ᕗ Jimyag's Blog

网络相关的概念解释

OSI 七层模型

+-----------------------------+
| 7. 应用层 Application Layer |  HTTP, FTP, SMTP, DNS, DHCP, TFTP, NFS, etc.
+-----------------------------+
| 6. 表示层 Presentation Layer|  ASCII, EBCDIC, JPEG, MPEG, etc.
+-----------------------------+
| 5. 会话层 Session Layer     | 建立、维护、终止会话
+-----------------------------+
| 4. 传输层 Transport Layer   |  TCP, UDP
+-----------------------------+
| 3. 网络层 Network Layer     |  IP, ICMP, ARP, RARP, etc.
+-----------------------------+
| 2. 数据链路层 Data Link Layer |  Ethernet, IEEE 802.3, etc.
+-----------------------------+
| 1. 物理层 Physical Layer    |  RJ-45, coaxial cable, etc.
+-----------------------------+

ARP 协议

ARP(Address Resolution Protocol)地址解析协议,是根据 IP 地址获取物理地址的一个网络协议。它是在网络层和数据链路层之间协作的一个协议,用于解决 IP 地址到 MAC 地址的映射问题。

IP 数据包想送到目标机器 -> 但物理网络只能通过 MAC 识别 -> 于是问一下 ARP,“这个 IP 对应的 MAC 是谁?” -> ARP 回复后就可以构造数据链路层帧来传输了。

假如 a 是 192.168.2.100 要发包给 192.168.2.231 时,a 查看自己的 arp 表中没有 192.168.2.231 的 MAC 地址,于是 a 会广播一个 ARP 请求,询问 192.168.2.231 的 MAC 地址。

arp -an
sudo tcpdump -e -n arp
00:47:56.424448 8c:de:f9:3c:cc:bf > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.168.2.231 tell 192.168.2.100, length 46

主机 b 收到 ARP 请求后,会回复一个 ARP 响应,告诉 a 192.168.2.231 的 MAC 地址是 36:63:a3:b3:89:b1。


00:48:08.312069 36:63:a3:b3:89:b1 > 8c:de:f9:3c:cc:bf, ethertype ARP (0x0806), length 42: Reply 192.168.2.231 is-at 36:63:a3:b3:89:b1, length 28

a 收到 ARP 响应后,会更新自己的 arp 表,然后就可以直接发送数据了。

arp -an

VLAN 和 VxLAN

VLAN 和 VxLAN

VLAN(Virtual Local Area Network)是一种二层网络分段技术,通过打上 VLAN ID(802.1Q 标签)将一个物理网络划分为多个逻辑广播域,从而提升网络的灵活性与安全性,减少广播域范围。

VXLAN(Virtual eXtensible LAN)是一种基于三层网络实现的虚拟二层网络封装技术,它通过 UDP 封装原始的二层以太网帧,允许跨三层网络传输二层通信,用于构建大规模的“Overlay 网络”。

右图中红框标出的部分是一个使用 OSPF 构建的三层网络,它作为 VXLAN 的 Underlay 网络,负责承载 VXLAN 封装数据的转发路径。这个三层网络也可以使用其他协议如 IS-IS、BGP、MPLS、Segment Routing 等构建。

中间路由网络就是三层的链路,都配置有 ip。上面的 10.1.1.1/24 想要访问下面的 10.1.1.2/24 时,要先发送一个 ARP 的包,找到 .2 的 MAC 地址。

但是在中间的 OSPF 网络中,要把发送的二层的数据包放到三层中传递,就要把原来二层的数据打包起来,在前面加上三层的头部,再把封装好的三层的数据,在下面的 OSPF 中的传递到对应的节点,到达对应地方后,再把三层的数据包拆开,把二层的数据包取出来,再进行二层的传递,交给目标的终端。

在 VxLAN 中会先把二层数据打包、加上 VxLAN 的头部、加上三层的头部,之后路由到对应的节点上去,在对应的节点上进行解封装。

VxLAN 中的每个互联的节点叫做 VTEP(Virtual Tunnel End Point),VTEP 是 VxLAN 的端点,负责封装和解封装 VxLAN 的数据包。这些 VTEP 都是可以互联的,所以 VxLAN 可以实现跨物理网络的通信。

VXLAN 允许在三层 IP 网络上承载虚拟的二层网络,这种结构常被称为“大二层网络”。通过对原始二层帧进行封装后在三层网络中传递,实现了 Overlay 网络的典型特征:逻辑网络独立于物理拓扑。

当左边的 VLAN 网络 10.1.1.1/24 要 ping 10.1.1.2/24

10.1.1.1 发送的数据包

红框里面从下到上,显示是一个 ICMP 协议的数据,被网络层的 IPv4 做了封装,又被数据链路层的以太二头部做了封装。

这个数据由 pc_11 交给下游的交换机时,会加上对应的 Vlan 标记。

交换机上的数据

从交换机之间传输过程中可以看到,在 IPv4 封装的基础上,又加上了 Vlan 标记。接着才会被以太网头部封装。

数据到了 15 交换机,从 15 交换机传给 PC 12 时,会把其中的 Vlan 标记去掉,把原始数据给到 PC 12 的网卡。

PC 12 收到

VxLAN 的 VTEP 发送出去的数据包是:

VxLAN 的 VTEP 发送出去的数据包

他把原来的 ICMP 发过来的数据做了完整的打包,最下面的以太网头还是之前 ICMP 的,先是加上了 VxLAN 的头部,表明里面是那个 VNI 的,再做了一次 UDP 的封装,再做了外层的 IPv4 的封装,又做了外层的以太头部的封装。

外层的 IPv4 封装是为了在不同的 VTEP 之间进行传递。

图片来源于 https://www.bilibili.com/video/BV1EL5KzqEyo

overlay 网络

overlay(覆盖)网络是一种虚拟网络,它将物理网络的多个物理设备连接起来,形成一个逻辑上的网络。和它的名字一样,他是基于物理网络之上的一个虚拟网络。

overlay 网络的实现方式有多种,常见的有 VXLAN、GRE、IPsec 等。

#网络 #VLAN #VXLAN