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

当客户端位于一个局域网(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 收到来自服务器的响应数据包,并成功与服务器完成通信。

相关推荐
Anthony_2317 分钟前
一、网络通信的本质与OSI模型
网络·网络协议·tcp/ip·http·https·udp·ssl
河码匠32 分钟前
VXLAN 简介、实现虚拟机跨物理机通信和网络隔离
网络·vxlan
旖旎夜光2 小时前
Linux(11)(中)
linux·网络
猿码优创2 小时前
过滤境外ip和域名访问的解决方案
网络·网络协议·tcp/ip·安全·阿里云
code bean4 小时前
深入理解:NO_PROXY 如何绕过代理
网络·代理
lkbhua莱克瓦244 小时前
深入理解HTTP协议:从理论到SpringBoot实践
网络·笔记·后端·网络协议·http·javaweb
华硕之声4 小时前
苏式废土美学游戏
网络·数据·华硕
@@123456胡斌4 小时前
渗透文件内容
网络
欧洵.5 小时前
从输入URL到页面展示:完整过程拆解
网络
沉默-_-5 小时前
微信小程序网络请求 wx.request 详解
网络·学习·微信小程序·小程序