为什么互联网通信可以在两个客户端之间进行?

Why does internet communication work between two clients?

注意:我的术语和理解很可能不正确,请教我!

TL;DR

为什么我不能在没有端口转发的情况下通过 Internet 从一个客户端连接到另一个客户端?
这与将两个客户端连接在一起的任何网站/基于 Internet 的软件有何不同?

我读了什么

Two solutions - the simplest is a port forwarding rule on his firewall, the second is as you suggest an external server that both clients connect to.

Accessing a computer from outside the local network is possible, but it normally depends on the policy of the institution where you work. The easiest way is to have port forwarding...

我的理解

路由器保护所有客户端计算机免受外部连接(例如防火墙)的影响。这会阻止两个客户端通过 Internet 连接,即使他们知道彼此的 IP 地址,除非您明确告诉您的路由器让他们通过端口转发之类的方式进行通信。

我一直认为网站只是 运行 安装在某处计算机上的服务器。但显然这是不正确的,因为我们刚刚确定计算机上的服务器 运行ning 无法通过 Internet 连接到另一台计算机,因为防火墙。

问题(看起来很多其实是重复的)

客户端连接的外部服务器(具有外部 IP 并通过路由器的防火墙接受)与客户端连接的外部服务器(具有外部 IP 但不被接受)有何不同通过路由器的防火墙)?

本质上我的计算机运行宁服务器和网络域服务器(计算机)之间有什么区别。

网域服务器的ISP、路由器、防火墙和我自己的电脑有什么不同

我在网上租用的电脑 运行 连接我的服务器程序,世界上任何人都可以连接到我自己的电脑 运行 连接我的服务器程序,但没有人可以连接到(在我的局域网之外)。

为什么我自己的电脑无法运行任何人都可以连接的服务器。中央服务器和我局域网中计算机上的服务器有什么区别?

总的来说,我认为您的困惑是基于我们可以在互联网上做什么vs典型的互联网用户的配置和包是什么。

在进一步讨论之前,我不会假设典型 IPv4 选项而不是 IPv6 来回答您的问题。

当我们谈论 public 服务器 IP 时,我们实际上是指 静态的、拥有的外部 IP 地址 。这些是不会更改并由组织控制的 IP 地址。这就是为什么他们通常有一个通过 DNS 与之关联的域名。互联网上发送到该地址的所有流量都会进入他们的设备(租用或其他方式)。因此,他们可以选择 allow/dissallow 流量以到达实际对数据执行某些操作的服务器。

What is different about the ISP, router, firewall of a web domain server from my own computer.

您的互联网是通过一个动态的、经过 NAT(可能 CG-NAT )、public 的 IP 地址。您的 public 地址会定期更改。这实现起来更便宜,并且假设您只想建立出站连接(获取网站,而不是主机网站)。当您希望它侦听端口时,您必须明确告诉它更改其行为。

What is the difference between a computer I rent online running my server program which anybody in the world can connect to and my own computer running my server program which nobody can connect to (outside my LAN).

它有一个静态 public IP。

Why is it impossible for my own computer to run a server which anybody can connect to

事实并非如此。正如您提到的,如果您的运营商允许端口转发,您可以打开一个端口到互联网。您还可以使用更高级的策略,例如 Nat-punching.

结束语 向您的互联网提供商询问静态 IP 计划的费用(不需要购买)是了解他们如何提供真正的 服务器 外部 IP 的好方法。

IPv6 也试图让 NAT 成为可选的,任何人都可以托管任何东西。运营商采用它的速度非常慢。

在您的家庭网络中,您有一个家庭路由器。这个家用路由器使用一种称为 NAT 的技术,它会断开您的互联网连接,然后 duct-tapes 它大部分会重新连接在一起。它这样做是因为没有足够的 IP 地址供每个人拥有。

NAT 拦截来自您的计算机、phone 等的连接,并使它们看起来像是来自家用路由器。网络之外的一切都认为您的网络是一台具有一个 IP 地址(路由器的 IP 地址)的计算机(即路由器)。据互联网所知,您的计算机不存在,您的phone、笔记本电脑或平板电脑也不存在。

您无法从 Internet 连接到您的计算机,因为您的计算机在 Internet 上实际上没有 IP 地址。哦,当然,你的计算机 认为 它确实是 - 那些 192.168 东西之一 - 但这基本上只是 NAT 路由器和你的计算机之间的假装游戏。

网络外的人只能连接到路由器,因为那是互联网上真正存在的唯一IP地址。所以如果你想 运行 服务器,他们必须连接到路由器,你必须告诉路由器如何处理该连接。这是端口转发。否则,路由器无法知道如何处理连接请求。

在理想情况下,您的台式计算机将只有一个 IP 地址,如果您想连接到您的台式计算机,您将连接到台式计算机的 IP 地址,就是这样。这就是 IP 地址短缺之前的情况。这也是今天 IPv6 的现状,那里并不缺乏。如果您没有 IPv6,请询问您的 ISP。如果您的 ISP 不支持 IPv6,那么他们的服务很糟糕,您应该使用其他服务。


当您租用服务器时,他们不会将 rented-out 服务器放在 NAT 路由器后面,因为它们毫无用处。您可以租用的每台服务器都有自己的 IP 地址。

您的 ISP 可能也有 NAT 路由器,因为甚至没有足够的 IP 地址供每个 house 获得一个。加倍 NAT,加倍破坏。而且您的 ISP 不会 在他们的上设置端口转发。在这种情况下,如果您礼貌地询问并付给他们一大笔钱,他们可能会给您自己的 IP 地址(将您的路由器连接到 Internet)。您仍然希望在路由器上使用 NAT,否则您需要为更多的 IP 地址支付更多的钱。