如果路由器上没有开放端口,设备如何从 HTTP 请求中获得响应?

网络工程 ip tcp
2022-02-27 00:50:38

我不太了解 TCP/IP 的工作原理,所以请在这里多多包涵。

我想知道,当您的计算机从(该设备上的)随机端口向服务器上的端口 80 发出 HTTP 请求时,它如何从该 HTTP 请求中获取响应,即服务器如何将请求的数据发送回请求路由器上没有开放端口的设备?

据我所知,对于任何外部设备(局域网外)与局域网内的设备通信,路由器上必须有一个开放端口,将路由器的公共 IP 指向局域网设备上的某个端口,所以网络服务器如何返回 LAN 设备请求的数据?

我认为这与 TCP 套接字的方式有关,但我并不真正了解它们是如何工作的。

另外,如果这是重复的,我很抱歉,我无法在谷歌上找到我的问题的任何答案(这可能只是因为我的问题措辞)。

2个回答

路由器根据 IP 地址路由 IP 数据包,它们不知道传输协议(TCP、UDP 等)或传输地址(端口)。您似乎关心 NAT 的 NAPT 变体,这是完全不同的东西,尽管路由器或防火墙通常是运行 NAPT 的方便场所。路由器将在没有 NAPT 的情况下完美地路由数据包。

您需要了解 NAPT 以及它是如何工作的,以了解它的单向性质,以及转发(而不是打开)端口对它意味着什么。

NAPT 为如何转发流量维护表(TCP、UDP 和 ICMP 的每个协议一个)。内部发起的数据包将创建一个动态表条目,其中包含源 IPv4 和目标 IPv4 以及传输协议地址,允许从外部 IPv4 和传输地址返回到内部 IPv4 的流量,以及所使用协议的表条目中的传输地址。端口转发所做的是在 NAPT 协议表中创建一个手动条目。

通常在路由器上配置静态路由,以确保将公共 IP 地址转换为 Web 服务器的私有 IP 地址。如果路由器在设置中部署为外围设备,则必须在路由器上进行静态 nat 配置,并配置访问列表以控制入站和出站流量。如果配置了访问列表,则端口 80 应允许路由器访问列表中的端口接受从外部网络到 LAN 网络的 HTTP 请求。

如果将任何防火墙部署为网络拓扑中的外围设备,则应为入站流量配置静态 Natting,应为出站流量配置 PAT、NAT 过载、隐藏 NAT。防火墙安全策略应允许特定端口 80 为

Source interfàce : egress interface(ISP)

Souce address : ANY

Destination interfàce :ingress interfàce (LAN)

Destination address : webserver natted public ip

Port : TCP -80

Action : allowed

Note : To establish this connectivity to ensure services on port 80 is listening on destination web server , you can check status of this services by selftelneting on specific on webserver