路由器是如何实现内外网转换的?

当客户端位于一个局域网(LAN)内并使用私有 IP 地址(例如 192.168.1.10)时,通常需要通过一个连接到公共网络的路由器进行外部通信。由于私有 IP 地址不能直接与互联网通信,路由器通常会通过 端口地址转换 (PAT)网络地址转换 (NAT) 来处理流量,使得局域网内部的多个设备共享一个公共 IP 地址访问外部网络。

场景设置:

  • 客户端(LAN 内部设备):

    • IP 地址:192.168.1.10
    • 端口号:50000(客户端的随机端口)
  • 路由器(网关设备):

    • 公共 IP 地址:203.0.113.1(此为路由器与外部网络(如互联网)连接的 IP 地址)
  • 目标服务器(互联网服务器):

    • 公共 IP 地址:198.51.100.10
    • 端口号:80(例如 HTTP 服务)

过程描述:端口地址转换(PAT)

  1. 客户端发送请求(发起连接)

    • 客户端(192.168.1.10)希望访问位于互联网上的服务器(198.51.100.10)的 HTTP 服务(端口 80)。
    • 客户端在本地应用程序中发起连接,向服务器的 IP 地址 198.51.100.10 发送一个 HTTP 请求,源端口号是客户端随机选择的 50000

    客户端发送的原始数据包:

    • 源 IP 地址:192.168.1.10
    • 源端口号:50000
    • 目标 IP 地址:198.51.100.10
    • 目标端口号:80

    路由器接收到这个数据包后,由于客户端的 IP 地址是私有地址(192.168.1.10),路由器需要执行 NAT 操作。

  2. 路由器进行 NAT/PAT 转换

    • 路由器对数据包进行 源地址转换 (Source NAT),将私有 IP 地址 192.168.1.10 替换为路由器的公共 IP 地址 203.0.113.1
    • 同时,路由器还会为每个不同的内部客户端连接选择一个唯一的 外部端口号 ,以便将来能够区分多个来自不同客户端的连接。在这个例子中,路由器可能将 50000 端口号映射到 10000 端口,作为该连接的公共端口号。

    路由器转换后的数据包:

    • 源 IP 地址:203.0.113.1(路由器的公共 IP)
    • 源端口号:10000(路由器映射的外部端口号)
    • 目标 IP 地址:198.51.100.10(服务器的 IP)
    • 目标端口号:80

    路由器将转换后的数据包发送到目标服务器 198.51.100.10 的 HTTP 服务端口 80

  3. 服务器响应请求

    服务器 198.51.100.10 收到客户端请求后,返回相应的 HTTP 响应包。由于数据包的目标端口号是 80,服务器知道这个请求是一个 HTTP 请求,便处理该请求并发送回响应。

    服务器发送的响应数据包:

    • 源 IP 地址:198.51.100.10(服务器的 IP)
    • 源端口号:80(HTTP 服务端口)
    • 目标 IP 地址:203.0.113.1(路由器的公共 IP)
    • 目标端口号:10000(映射的端口)

    服务器的数据包将通过路由器发送回客户端。

  4. 路由器进行逆向 NAT 转换

    路由器收到来自服务器的数据包时,会进行 目标地址转换 (Destination NAT),将目标 IP 地址 203.0.113.1 和端口号 10000 替换回正确的内部地址和端口号。

    路由器通过 NAT 表格查找该数据包的源端口号(10000),并将其映射回原始请求的客户端 IP 地址和端口号(192.168.1.10:50000)。

    路由器转换后的数据包:

    • 源 IP 地址:198.51.100.10(服务器的 IP)
    • 源端口号:80(HTTP 服务端口)
    • 目标 IP 地址:192.168.1.10(客户端的私有 IP)
    • 目标端口号:50000(客户端原始端口)

    然后,路由器将数据包发送回客户端 192.168.1.10 的端口 50000

  5. 客户端接收响应

    客户端 192.168.1.10 收到来自服务器的响应数据包,并成功与服务器完成通信。

相关推荐
iナナ5 小时前
传输层协议——UDP和TCP
网络·网络协议·tcp/ip·udp
华强笔记6 小时前
Linux内存管理系统性总结
linux·运维·网络
iY_n8 小时前
Linux网络基础
linux·网络·arm开发
EggrollOrz8 小时前
网络编程day3
网络
想睡hhh9 小时前
网络基础——Socket编程预备
网络
zzc92110 小时前
Wireshark获取数据传输的码元速率
网络·测试工具·wifi·wireshark·路由器·802.11n·物理层参数
搬码临时工10 小时前
端口映射原理操作详解教程:实现外网访问内网服务,本地路由器端口映射公网ip和软件端口映射域名2种方法
网络·tcp/ip·智能路由器
当你需要个夏天21710 小时前
软考网工选择题-1
网络·智能路由器·选择题·软考网工
极客范儿10 小时前
新华三H3CNE网络工程师认证—等价路由
网络·智能路由器
Mr_Xuhhh10 小时前
NAT、代理服务、内网穿透
网络·网络协议·http·https·udp·智能路由器