Skip to content

IPv4 示例

本章描述了一个简化的示例,说明用户尝试访问网站时,IPv4 网络如何进行通信。这涉及几个关键的协议和过程。

  • 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。

当用户的计算机 (PC) 启动并连接到网络时:

  1. PC 在本地网络上广播一个 DHCPDISCOVER 消息以寻找 DHCP 服务器。
  2. DHCP 服务器(通常集成在家庭路由器中)发送 DHCPOFFER 消息响应,提供可用的 IP 地址、子网掩码、默认网关 IP、DNS 服务器 IP 以及租期。
  3. PC 通过向服务器发送 DHCPREQUEST 消息来接受此提议。
  4. DHCP 服务器发送 DHCPACK(确认)消息确认租约。PC 现在已配置好进行网络通信。
  5. (或者,网络设置可以手动/静态配置,但 DHCP 更常用于终端用户设备。)

用户在其 Web 浏览器中输入 www.example.com:

  1. PC 需要 www.example.com 的 IP 地址。它首先检查其本地 DNS 缓存。
  2. 如果在缓存中找不到,PC 会向通过 DHCP 获取的 DNS 服务器地址发送一个针对 www.example.com 的 DNS 查询。
  3. DNS 服务器(或一系列 DNS 服务器)解析该域名,并将对应的公共 IP 地址(例如 93.184.216.34)返回给 PC。

步骤 3:准备发送数据包(为网关进行 ARP)

Section titled “步骤 3:准备发送数据包(为网关进行 ARP)”

PC 现在有了 www.example.com 的目标 IP 地址。

  1. PC 将目标 IP 地址(例如 93.184.216.34)与其自己的 IP 地址和子网掩码进行比较,以确定目标是在本地网络还是远程网络。在此例中,目标是远程网络。
  2. 为了将数据包发送到远程网络,PC 必须将其发送到其默认网关(例如家庭路由器)。PC 通过 DHCP 知道网关的 IP 地址。
  3. PC 需要网关的 MAC 地址来创建用于本地交付的以太网帧。它检查其 ARP 缓存,查找网关 IP 到 MAC 地址的映射条目。
  4. 如果在缓存中找不到,PC 会在本地网络上广播一个 ARP request:“gateway_IP_address 是谁?请告诉 my_IP_address。”
  5. 网关(路由器)发送包含其 MAC 地址的 ARP reply 进行响应。
  6. PC 将此 IP 到 MAC 的映射存储在其 ARP 缓存中。
  1. PC 创建一个 IP 数据包,其中包含:
    - 源 IP:PC 的私有 IP(例如 192.168.1.100)
    - 目标 IP:www.example.com 的公共 IP(例如 93.184.216.34)。
  2. 此 IP 数据包被封装在以太网帧中,其中包含:
    - 源 MAC:PC 的 MAC 地址
    - 目标 MAC:网关(路由器)的 MAC 地址。
  3. 该帧被发送到网关路由器。
  4. 路由器解封装 IP 数据包。由于数据包目标是互联网且源 IP 是私有的,路由器执行 NAT:
    - 它将源 IP(PC 的私有 IP)替换为其自身的公共 IP 地址。
    - 它将此转换记录在其 NAT 表中(通常包括端口号,以便处理多个内部设备和返回流量)。
  5. 然后,路由器根据其路由表确定到 www.example.com 的下一跳,并将(现在已进行 NAT 的)数据包转发到路径中的下一个路由器。
  6. 这个 MAC 地址在每个 Layer 2 跳都会改变的过程,以及(通常)源和目标 IP 地址保持不变(源端的 NAT 除外),会跨互联网持续进行,直到数据包到达托管 www.example.com 的服务器。

来自 www.example.com 的返回流量将以路由器的公共 IP 为目标。路由器使用其 NAT 表将目标 IP 转换回 PC 的私有 IP,并将数据包转发到本地网络上的 PC。

此示例突显了 IP 地址如何用于端到端路由,而 MAC 地址如何用于本地网段上的逐跳交付,以及 DHCP、DNS 和 ARP 等协议如何协同工作以实现通信。