5

好的,计算机有端口供应用程序将数据从外部世界传输到防火墙,然后再传输到计算机。

那么Firefox和Internet Explorer如何在同一台计算机上使用相同的端口?

以及为什么我们不能使用端口 80 将来自所有地方的所有流量传递到计算机中。

那么为什么我们需要特定的端口呢?

4

4 回答 4

5

通常重要的不是本地端口。这是远程端口。

因此,当您打开浏览器并访问站点时,您正在建立从您端的(有点)随机端口到服务器端的端口 80 的连接。服务器在同一连接上回复您。Web 服务器使用 TCP/IP,所以这就是所谓的建立连接。如果您要查看在网络流量期间连接到的服务器上的 netstat -an,这正是您会看到的:

tcp        0      0 ::ffff:192.168.1.223:22     ::ffff:192.168.1.230:2369   ESTABLISHED

该行表示我的本地计算机已在端口 22 上建立了与远程计算机的连接。我的本地计算机选择了一个随机的传出端口 2369 来建立此连接。在这种情况下,这是与我在地下室的网络服务器的 ssh 连接。

此处列出了服务器应用于特定服务的端口,但如果您要控制连接的两端,如果您愿意,没有什么能阻止您在端口 8383 上运行网络服务器。只是不要指望其他人在没有你告诉他们的情况下得到它。(或在端口扫描中发现)。

如果您在计算机上运行网络服务器,它将打开端口 80 并侦听连接。每个 IP 地址只能监听一项服务,因此您不能同时运行两个 Web 服务器。如果您随后连接到本地网络服务器,同样的事情。您将打开一个随机的本地端口并连接到同一 IP 上的本地端口 80。

打开随机本地端口允许您与已知远程端口(如 80)建立多个本地连接。

有 65536 个端口可用,因此您不太可能用完,但许多端口都有“众所周知的”用途,因此在连接结束时应避免使用。一般来说,1023 以上的一切都是公平的游戏。(所有需要任何特权的服务都在 1023 以下的端口上运行)

这是一个 TCP/IP 连接。TCP/IP 具有内部语言以确保信息的可靠传递,并在每个连接打开时进行握手以确保数据可以传输。

另一种常见的连接类型是 UDP。UDP 不建立连接,因此速度更快,延迟更低,但使用它的程序必须能够丢失信息并且仍然可以工作。它基本上是一个发送数据和祈祷协议。许多在线游戏都是这样工作的。

于 2009-10-30T01:38:36.153 回答
2

每个连接都有一个源端口和目标端口。这就是允许您从您的机器到(例如)在端口 80 上运行的 Web 服务器的多个连接。连接由 SourceIP:SourcePort 和 DestIP:DestPort 唯一标识。

因此,在您的示例中,Firefox 和 IE 将在远程 Web 服务器上使用相同的端口(端口 80),但在您的计算机上将使用不同的端口来区分它们。

尝试netstat在命令提示符下运行以查看当前连接。

于 2009-10-30T01:39:00.513 回答
0

端口可以​​用于任何事情,但是在某些端口上存在协议约定。

您可以将 80 用于其他功能,有些人这样做是一种绕过防火墙的简单方法......

但是,只有 1 个应用程序可以在端口上侦听。

于 2009-10-30T01:37:18.403 回答
0

一些netstat输出可以告诉你发生了什么:

C:\Temp> netstat -an

  TCP 192.168.XXX.150:1493 74.125.45.100:80 已建立
  TCP 192.168.XXX.150:1504 69.59.196.213:80 已建立
  TCP 192.168.XXX.150:1507 74.125.91.138:80 已建立
  TCP 192.168.XXX.150:1510 65.55.11.162:80 已建立
  TCP 192.168.XXX.150:1518 69.59.196.211:80 已建立
  TCP 192.168.XXX.150:1519 69.59.196.216:80 已建立
  TCP 192.168.XXX.150:3711 64.208.186.96:80 CLOSE_WAIT

请注意,该192.168.XXX.150地址是我的计算机在家庭网络上的地址。80IP 地址后面的 4 位数字是我的计算机用来与一堆不同服务器上的端口通信的本地端口。

于 2009-10-30T01:53:00.907 回答