AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1863810
Accepted
oojafink
oojafink
Asked: 2024-12-06 00:06:16 +0800 CST2024-12-06 00:06:16 +0800 CST 2024-12-06 00:06:16 +0800 CST

Web服务器端口80和服务器端NAT端口转换查询

  • 772

我想要从位于家用路由器后面的家用计算机 (192.168.0.2) 连接到 google.com(ping 返回 216.58.204.78)。192.168.0.2 打开本地 TCP 端口(例如 60000),然后通过我的路由器 NAT 向 216.58.204.78:80 发送一条消息,该端口被转换为 :60010。我知道对 192.168.0.2:60000 的回复实际上将发送到 :60010,我的路由器将使用 NAT 表将回复转发到 192.168.0.2。

我的问题是当该消息到达 Google 端时会发生什么。Google 路由器是否只使用端口 80 将消息发送到 Google 服务器,如果是,Google 服务器回复时会发生什么?服务器是否在其他端口上回复,然后在发送过程中进行转换,因此我的机器的进一步回复不再是端口 80,而是“面向公众”的端口?我有点不明白 Google 端在 NATing 方面发生了什么。

ip
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    grawity
    2024-12-06T04:55:48+08:002024-12-06T04:55:48+08:00

    Google路由器是否只是使用端口80将消息发送到Google服务器,如果是,那么Google服务器回复时会发生什么?

    这种类型的 NAT 通常是有状态的,并跟踪连接或“流”。第一个数据包会导致转换状态被记住(例如,这样路由器就会知道要将回复发送到哪个内部地址),并且两个方向的所有后续数据包都会重新使用相同的映射,只要它们是同一流的一部分。

    例如,在客户端,如果路由器已决定将源从 转换为internal:60000,external:61000它将在整个连接期间始终如一地执行此操作,当然将使用相同的映射将传入的回复转发回 internal:60000。

    如果服务器位于 NAT 之后,情况也是如此:第一个入站数据包建立状态(在这种情况下根据静态“端口转发”规则),并且所有出站回复自动遵循相同的反向映射。

    因此,如果第一个入站数据包是到external:80并被转换为internal:8989,则来自internal:8989(到同一客户端地址:端口)的所有出站回复都将被 NAT 以显示为来自external:80- 源端口不会改变,因为映射已经建立。

    (话虽如此:不要假设服务器根本就位于 NAT 后面!在 Google 的规模下,它们很可能确实位于 NAT 后面,但是 Web 服务器拥有自己的公共 IP 地址而没有任何 NAT 也是很常见的。)

    服务器是否在不同的端口上进行回复,然后在输出过程中进行转换,因此我的机器的进一步回复不再是端口 80,而是“面向公众”的端口?

    不。只有一种协议可以做到这一点 - TFTP - 而我见过的所有其他协议都将从与原始端口相同的端口进行回复。(这实际上意味着 NAT 必须专门识别 TFTP,有时 TFTP 无法通过 NAT 工作。)

    (此外,您描述的方法显然是 TCP/IP 发明之前 ARPANET ICP 的工作方式,但实际上这不再重要了……)

    • 2

相关问题

  • 如何为不同的设备分配一个静态IP地址

  • 动态 IP 地址:是否有针对黑名单的修复?

  • 在 Linux 上的 PostgreSQL 中,编辑 pg_hba.conf 和 postgresql.conf 并重新启动 Postgres 会使我的集群在重新启动时崩溃(使其“关闭”)

  • 为什么 Ultrasurf 不隐藏我的 IP 地址?

  • 是否可以在客户端中使用没有文件系统的 FTP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve