介绍
在本教程中,我们将讨论端口的概念以及它们如何与 IP 地址配合使用。如果您没有阅读我们关于 IP 地址的文章,需要复习一下,可以点击此处找到该文章 。如果您了解 IP 地址的概念,那么让我们转到 TCP 和 UDP 端口以及它们的工作原理。
连接到互联网的设备和计算机使用称为 TCP / IP 的协议相互通信。当纽约的一台计算机想要将一段数据发送到其他的计算机时,它必须知道它想要将信息发送到的目标 IP 地址。该信息通常通过两种方法发送,UDP 和 TCP。
两个互联网主力:UDP 和 TCP
UDP?TCP?我知道你感到困惑,但我保证我会用非常基本的术语来解释这一点,以便你能理解这个概念。
TCP 代表 传输控制协议。使用此方法,发送数据的计算机直接连接到它正在向其发送数据的计算机,并在传输期间保持连接。使用此方法,两台计算机可以保证数据已安全正确地到达,然后断开连接。这种传输数据的方法往往更快,更可靠,但会给计算机带来更高的负载,因为它必须监视连接和通过它的数据。与这种方法的现实生活比较是拿起电话并打电话给朋友。你们进行了一次对话,当它结束时,你们俩都挂断了电话,释放了连接。
UDP 代表 用户数据报协议。使用这种方法,发送数据的计算机将信息打包成一个漂亮的小包,并将其释放到网络中,希望它能到达正确的地方。这意味着 UDP 不像 TCP 那样直接连接到接收计算机,而是将数据发送出去,并依靠发送计算机和接收计算机之间的设备来获取数据应该正确去的地方。这种传输方法不能保证您发送的数据将到达其目的地。另一方面,这种传输方法具有非常低的开销,因此非常适用于对第一次尝试工作不那么重要的服务。
现在您已经了解了什么是 TCP 和 UDP,我们可以开始详细讨论 TCP 和 UDP 端口了。让我们进入下一节,我们可以更好地描述端口的概念。
TCP 和 UDP 端口
如您所知,Internet 上的每台计算机或设备都必须为其分配一个唯一的编号,称为 IP 地址。此 IP 地址用于从连接到 Internet 的数百万台其他计算机中识别您的特定计算机。当信息通过互联网发送到您的计算机时,您的计算机如何接受该信息?它通过使用 TCP 或 UDP 端口接受该信息。
理解端口的一种简单方法是将您的 IP 地址想象为电缆盒,端口是该电缆盒上的不同通道。有线电视公司知道如何根据与有线电视盒关联的唯一序列号(IP地址)将电缆发送到有线电视盒,然后您会在不同的频道(端口)上收到各个节目。
端口的工作方式相同。您有一个 IP 地址,然后该 IP 地址上有多个端口。当我说很多时,我的意思是很多。总共可以有 65,535 个 TCP 端口和另外 65,535 个 UDP 端口。当计算机上的程序通过 Internet 发送或接收数据时,它会将该数据发送到远程计算机上的 IP 地址和特定端口,并在其自己计算机上通常随机的端口上接收数据。如果它使用 TCP 协议发送和接收数据,那么它将连接自身并将其自身绑定到 TCP 端口。如果它使用 UDP 协议发送和接收数据,它将使用 UDP 端口。下面的图 1 是拆分为多个 TCP 和 UDP 端口的 IP 地址的重新说明。请注意,一旦应用程序将自身绑定到特定端口,任何其他应用程序都不能使用该端口。先到先得。
图 1.带端口的 IP 地址
这一切可能仍然让你感到困惑,这没有什么错,因为这是一个复杂的概念。因此,我将为您提供一个示例,说明这在现实生活中是如何工作的,以便您可以更好地理解。我们将在示例中使用 Web 服务器,因为您都知道 Web 服务器是运行应用程序的计算机,该应用程序允许其他计算机连接到它并检索存储在其中的网页。
为了使 Web 服务器接受来自远程计算机(如您自己)的连接,它必须将 Web 服务器应用程序绑定到本地端口。然后,它将使用此端口侦听并接受来自远程计算机的连接。Web 服务器通常绑定到 TCP 端口 80(这是 http 协议默认使用的端口),然后等待并侦听来自远程设备的连接。连接设备后,它会将请求的网页发送到远程设备,完成后断开连接。
另一方面,如果您是连接到Web服务器的远程用户,它将反向工作。您的 Web 浏览器将从特定端口号范围内随机选择一个。
TCP 端口,并尝试连接到 Web 服务器 IP 地址上的端口 80。建立连接后,Web 浏览器将发送对特定网页的请求,并从 Web 服务器接收该请求。然后,两台计算机都将断开连接。
现在,如果您想在同一台 Web 服务器上运行 FTP 服务器,该服务器允许您从远程计算机传输和接收文件,该怎么办?FTP 服务器使用 TCP 端口 20 和 21 来发送和接收信息,因此您不会与 TCP 端口 80 上运行的 Web 服务器发生任何冲突。因此,FTP 服务器应用程序在启动时会将自身绑定到 TCP 端口 20 和 21,并等待连接以发送和接收数据。
大多数主要应用程序都有一个特定的端口,它们会侦听该端口,并向名为 IANA 的组织注册此信息。随着开发人员向 IANA 注册其应用程序使用的端口,两个程序尝试使用同一端口并因此导致冲突的可能性将会降低。