端口转发的目的

端口转发的目的

以下文章讨论网络地址转换(NAT)和端口转发。

什么是端口转发以及它有什么用途?

当 NAT 似乎能很好地完成工作时,端口转发有什么意义呢?路由器只需要知道将数据包导向哪台计算机,对吗?假设它将数据包导向适当的计算机,但不知道端口号——目标计算机不知道如何处理数据包(不管有没有端口号)吗?如果您使用端口转发,难道您不需要知道目标计算机吗?

答案1

NAT 可以很好地完成工作,但是端口转发有不同的工作为了理解这一点,记住传入连接和传出连接之间的区别非常重要。

假设你和我要打电话。我可能会给你打电话,或者你也可能给我打电话。无论哪种情况,我们都可以来回发送消息(句子),但谁先打电话是有区别的。如果我给你打电话,对我来说是外拨连接,对你来说是来拨连接。要做到这一点,我需要先知道你的电话号码。当你拿起电话时,你会得到我的来电显示(也就是我的电话号码)。为了解释清楚,我们假设你需要知道我的电话号码以便与我交谈。

现在想象一下,我们的电话通过另外两部电话(路由器)路由,这两部电话连接到许多人:

You <----> Router 1 <----> Router 2 <----> Me
              ^               ^
              |               |
              v               v
             Many            Many
            Others          Others

事情变得更加复杂的是,我只知道路由器 1 的电话号码,而不知道您的个人号码。相反,您只知道路由器 2 的电话号码,而不知道我的个人号码。当我给您打电话时,我们遇到了两个问题:

  1. 路由器 1 需要以某种方式知道呼叫必须转给您,而不是转给它所连接的许多其他呼叫之一。
  2. 路由器 2 需要以某种方式知道,当你回复时,该句子必须发送给我,而不是发送给其他人。

端口转发解决了问题 1。按照惯例,有关超级用户的呼叫是通过端口 42 进行的。您告诉路由器 1 将所有有关超级用户的呼叫转发给您,因此当我通过端口 42 呼叫路由器 1 时,我就可以与您通话。如果您没有明确告诉路由器 1 这样做,我们就无法呼叫。

NAT 解决问题 2。路由器 2 假装是呼叫者,因为如果呼叫者 ID 未知(我的电话号码),您和路由器 1 都不会接听电话。然后它会记住我是实际的呼叫者,因此当路由器 2 收到来自路由器 1 的响应时,它知道将其发送给我。

互联网上的情况几乎完全相同。您只需在脑海中将电话替换为计算机,将电话号码和来电显示替换为 IP 地址,将未知电话号码替换为保留的 IP 地址(例如 192.168.*.* 范围)。

相关内容