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

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

相关推荐
安 当 加 密26 分钟前
基于USB Key的Web系统双因素认证解决方案:构建安全与便捷的登录体系
运维·网络·安全
学习嵌入式的小羊~2 小时前
视频图像刷新到HTTP的原理
网络·网络协议·http
瞬 季2 小时前
计算机网络-应用层
网络·计算机网络
薛定谔的码*3 小时前
计算机三级网络技术备考(5)
网络·智能路由器
网络设计ensp3 小时前
企业网设计
网络·智能路由器
鸭梨山大。4 小时前
linux命令-iptables与firewalld 命令详解
linux·运维·网络
半夏知半秋4 小时前
linux下的网络抓包(tcpdump)介绍
linux·运维·服务器·网络·笔记·学习·tcpdump
fatsheep洋4 小时前
全网最详解答OSPF基础
网络·ospf
zzy20887402715 小时前
网络初级复习作业
网络
渗透测试老鸟-九青5 小时前
我与红队:一场网络安全实战的较量与成长
运维·服务器·网络·经验分享·安全·web安全·代码审计