港口和安全

网络工程 tcp 协议论 UDP 传输协议 第 4 层
2022-02-18 02:01:36

我正在考虑“端口”如何为网络连接运行并尝试阅读 CCNA 证书。指南以了解详细信息,但是,我需要澄清疑问:

  1. 是否占用具有活动连接的系统/节点的所有 TCP/UDP 端口,表明无法建立其他即将发生的网络连接行为?

  2. 关于上一个问题,如果是这样,我是否可以认为该系统/节点免受敲门的恶意(黑客)网络连接的影响?

  3. 系统/节点中的服务或应用程序能否抢夺当前正在使用的端口?例如,端口 54321 正在被服务使用,但另一个程序控制了它。是否有任何标准来限制这种行为?

  4. 对于同时连接同一个http网页的客户端中的不同浏览器,端口80如何操作?Web服务器是否仍然通过端口80提供连接?或者我误解了什么?

1个回答

端口是某些传输协议(TCP 和 UDP)的传输地址,很像网络地址或数据链路地址。另外,要明白 TCP 和 UDP 使用相同的端口号范围,但它们不是相同的端口;TCP 端口 12345不是UDP 端口 12345。

应用程序将请求 TCP 或 UDP 以获取与传输协议的连接,并获取随机可用端口号,或应用程序专门请求的端口号。在该端口号发送到该传输协议的任何数据都将发送到请求该关联的应用程序进程。

UDP 是一种无连接协议,它只会为相关的应用程序进程发送或接收数据,而不能保证交付。另一方面,TCP 是一种面向连接的协议,它建立连接,为数据的有序传递提供一定的保证。使用 TCP 端口的应用程序进程可以在 TCP 端口上建立多个连接。这在RFC 793,传输控制协议中进行了解释:

多路复用:

为了允许单个主机内的多个进程同时使用 TCP 通信设施,TCP 在每个主机内提供一组地址或端口。与来自互联网通信层的网络和主机地址连接起来,形成一个套接字。一对套接字唯一地标识每个连接。也就是说,一个套接字可以同时用于多个连接。

端口到进程的绑定由每个主机独立处理。然而,将经常使用的进程(例如,“记录器”或分时服务)附加到公众已知的固定套接字被证明是有用的。然后可以通过已知地址访问这些服务。建立和学习其他进程的端口地址可能涉及更多的动态机制。

连接:

上述可靠性和流量控制机制要求 TCP 初始化和维护每个数据流的某些状态信息。这些信息(包括套接字、序列号和窗口大小)的组合称为连接。每个连接都由一对标识其两侧的套接字唯一指定。

当两个进程希望进行通信时,它们的 TCP 必须首先建立连接(初始化每一端的状态信息)。当他们的通信完成时,连接将被终止或关闭以释放资源以供其他用途。

由于必须在不可靠的主机之间以及通过不可靠的互联网通信系统建立连接,因此使用基于时钟的序列号的握手机制来避免连接的错误初始化。

这允许诸如 TCP 端口 80 上的 Web 服务器之类的东西与多个 Web 浏览器创建多个连接,因为每个连接都由源 IP 和 TCP 地址唯一标识。

  1. 是否占用具有活动连接的系统/节点的所有 TCP/UDP 端口,表明无法建立其他即将发生的网络连接行为?

不,UDP 是无连接的,而 TCP 在一个端口上可以有许多连接。

  1. 关于上一个问题,如果是这样,我是否可以认为该系统/节点免受敲门的恶意(黑客)网络连接的影响?

一点都不。

  1. 系统/节点中的服务或应用程序能否抢夺当前正在使用的端口?例如,端口 54321 正在被服务使用,但另一个程序控制了它。是否有任何标准来限制这种行为?

不,分配给应用程序进程的端口不能被任何其他进程使用,直到拥有进程释放它。

  1. 对于同时连接同一个http网页的客户端中的不同浏览器,端口80如何操作?Web服务器是否仍然通过端口80提供连接?或者我误解了什么?

上面的 RFC 对此进行了解释。每个浏览器都有一个随机地址和它自己的 IP 地址,以便与该浏览器的连接与其他浏览器的其他连接区分开来。