IPv4 示例
IPv4 - 通信示例
Section titled “IPv4 - 通信示例”本章描述了一个简化的示例,说明用户尝试访问网站时,IPv4 网络如何进行通信。这涉及几个关键的协议和过程。
关键网络组件
Section titled “关键网络组件”- MAC Address (Media Access Control Address): 固化在网卡(NIC - 网络接口卡)上的 48 位硬件地址。用于同一本地网络段(第 2 层)上设备之间的通信。
- IP Address (Internet Protocol Address): 用于识别网络上的设备并在不同网络(第 3 层)间路由数据包的 32 位逻辑地址。
- ARP (Address Resolution Protocol): 在本地网络内部使用,用于将已知的 IP 地址解析为其对应的 MAC 地址。对于设备在同一物理网段上发送数据帧至关重要。
- DHCP (Dynamic Host Configuration Protocol): 自动化为客户端设备分配 IP 地址、子网掩码、默认网关地址和 DNS 服务器地址。这简化了网络管理。
- DNS (Domain Name System): 将人类可读的域名(例如 www.example.com)转换为计算机用于相互连接的数字 IP 地址。
- Default Gateway (Router): 连接本地网络到其他网络(如互联网)的设备(通常是路由器)。目标是远程网络的主机将其数据包发送到其默认网关。
- NAT (Network Address Translation): 一种技术,通常在路由器中实现,允许私有网络中(使用私有 IP 地址)的多个设备在访问互联网时共享一个公共 IP 地址。它在出站报文(outgoing packets)中将私有源 IP 转换为公共 IP,在入站报文(incoming packets)中进行反向转换。
假设家庭网络上的一个用户想访问 www.example.com。
步骤 1:获取网络配置 (DHCP)
Section titled “步骤 1:获取网络配置 (DHCP)”当用户的计算机 (PC) 启动并连接到网络时:
- PC 在本地网络上广播一个 DHCPDISCOVER 消息以寻找 DHCP 服务器。
- DHCP 服务器(通常集成在家庭路由器中)发送 DHCPOFFER 消息响应,提供可用的 IP 地址、子网掩码、默认网关 IP、DNS 服务器 IP 以及租期。
- PC 通过向服务器发送 DHCPREQUEST 消息来接受此提议。
- DHCP 服务器发送 DHCPACK(确认)消息确认租约。PC 现在已配置好进行网络通信。
- (或者,网络设置可以手动/静态配置,但 DHCP 更常用于终端用户设备。)
步骤 2:解析域名 (DNS 查询)
Section titled “步骤 2:解析域名 (DNS 查询)”用户在其 Web 浏览器中输入 www.example.com:
- PC 需要
www.example.com的 IP 地址。它首先检查其本地 DNS 缓存。 - 如果在缓存中找不到,PC 会向通过 DHCP 获取的 DNS 服务器地址发送一个针对
www.example.com的 DNS 查询。 - DNS 服务器(或一系列 DNS 服务器)解析该域名,并将对应的公共 IP 地址(例如 93.184.216.34)返回给 PC。
步骤 3:准备发送数据包(为网关进行 ARP)
Section titled “步骤 3:准备发送数据包(为网关进行 ARP)”PC 现在有了 www.example.com 的目标 IP 地址。
- PC 将目标 IP 地址(例如 93.184.216.34)与其自己的 IP 地址和子网掩码进行比较,以确定目标是在本地网络还是远程网络。在此例中,目标是远程网络。
- 为了将数据包发送到远程网络,PC 必须将其发送到其默认网关(例如家庭路由器)。PC 通过 DHCP 知道网关的 IP 地址。
- PC 需要网关的 MAC 地址来创建用于本地交付的以太网帧。它检查其 ARP 缓存,查找网关 IP 到 MAC 地址的映射条目。
- 如果在缓存中找不到,PC 会在本地网络上广播一个 ARP request:“gateway_IP_address 是谁?请告诉 my_IP_address。”
- 网关(路由器)发送包含其 MAC 地址的 ARP reply 进行响应。
- PC 将此 IP 到 MAC 的映射存储在其 ARP 缓存中。
步骤 4:发送数据包和 NAT
Section titled “步骤 4:发送数据包和 NAT”- PC 创建一个 IP 数据包,其中包含:
- 源 IP:PC 的私有 IP(例如 192.168.1.100)
- 目标 IP:www.example.com的公共 IP(例如 93.184.216.34)。 - 此 IP 数据包被封装在以太网帧中,其中包含:
- 源 MAC:PC 的 MAC 地址
- 目标 MAC:网关(路由器)的 MAC 地址。 - 该帧被发送到网关路由器。
- 路由器解封装 IP 数据包。由于数据包目标是互联网且源 IP 是私有的,路由器执行 NAT:
- 它将源 IP(PC 的私有 IP)替换为其自身的公共 IP 地址。
- 它将此转换记录在其 NAT 表中(通常包括端口号,以便处理多个内部设备和返回流量)。 - 然后,路由器根据其路由表确定到
www.example.com的下一跳,并将(现在已进行 NAT 的)数据包转发到路径中的下一个路由器。 - 这个 MAC 地址在每个 Layer 2 跳都会改变的过程,以及(通常)源和目标 IP 地址保持不变(源端的 NAT 除外),会跨互联网持续进行,直到数据包到达托管
www.example.com的服务器。
来自 www.example.com 的返回流量将以路由器的公共 IP 为目标。路由器使用其 NAT 表将目标 IP 转换回 PC 的私有 IP,并将数据包转发到本地网络上的 PC。
此示例突显了 IP 地址如何用于端到端路由,而 MAC 地址如何用于本地网段上的逐跳交付,以及 DHCP、DNS 和 ARP 等协议如何协同工作以实现通信。