网络端口如何工作?我可以配置客户端和服务器使用的端口吗?

网络端口如何工作?我可以配置客户端和服务器使用的端口吗?

假设我有一个“服务器”程序正在监听地址 1.2.3.4:69(即远程端口 69)

当我从“客户端”程序连接到它时,通常我会指定目标或服务器系统的 IP 地址 + 端口;

但是客户端会使用哪个端口?服务器又如何知道通过哪个端口连接客户端呢?

我知道这个问题很笼统,但我只是想大致了解一下事情是如何运作的。

然后将其扩展到特定协议,例如 FTP(典型端口 21),我可以将其更改为服务器使用端口 69,但客户端使用端口 100 吗?

同样,对于 WinXP 中的远程桌面(典型端口 3389),我知道如何将服务器端口更改为 3389 以外的其他端口,但如何更改客户端使用的端口(如果可能的话)?

答案1

当我从“客户端”程序连接到它时,通常我会指定目标或服务器系统的 IP 地址 + 端口;

是,对的。

但是客户端会使用哪个端口?

客户端通常使用随机端口。更准确地说:为了使 TCP 正常工作,唯一的要求是目标地址、目标端口、源地址、源端口的组合是唯一的 - 因为这用于跟踪 TCP 连接。因此,原则上操作系统可以为每个新连接增加源端口号。实际上,许多操作系统过去都这样做,但它使某些类型的攻击变得更容易,因为攻击者可以预测下一个端口号。因此,大多数现代操作系统现在都使用随机源端口。

那么服务器如何知道通过哪个端口连接回客户端呢?

TCP 数据包包含目标端口和源端口,因此每一方都知道两个端口号。请参见以下图表了解 TCP 数据包中的数据http://en.wikipedia.org/wiki/Transmission_Control_Protocol

然后将其扩展到特定协议,比如 Ftp(典型的端口 21),我可以将其更改为服务器使用端口 69,但客户端使用端口 100 吗?

通常,您可以将服务器配置为使用您选择的任何端口(尽管这取决于单个服务器应用程序)。因此,您可以将 FTP 服务器配置为使用端口 69。据我所知,无法配置客户端端口。对于任何其他协议(例如 RDP),情况也是如此。

无论如何,您为什么要更改客户端端口?

相关内容