什么是端口0用于?

端口0不是一个真正的端口号,但有一个目的

与大多数端口号不同,端口0是TCP / IP网络中的保留端口,这意味着它不应用于TCPUDP消息。

端口0在网络编程中具有特殊意义,特别是用于请求系统分配的动态端口的Unix套接字编程。 端口0就像通配符端口,告诉系统找到合适的端口号。

TCP和UDP中的网络端口范围从0到65535.范围在0到1023之间的端口号被定义为系统端口或众所周知的端口。 互联网号码分配机构(IANA)维护互联网上这些端口号的预期用途的正式列表,并且系统端口0不被使用。

网络编程中端口0的工作原理

配置新的网络套接字连接要求在源端和目标端分配一个端口号。 始发方(源)发送的TCP或UDP消息包含两个端口号,以便消息接收方(目的地)可以向正确的协议端点发出响应消息。

IANA已为网络服务器(端口80)等基本互联网应用程序预先分配了指定的系统端口,但许多TCP和UDP网络应用程序没有自己的系统端口,并且每次开始运行时必须从其设备的操作系统获取一个端口。

为了分配其源端口号,应用程序调用诸如bind()之类的TCP / IP网络功能来请求一个。 应用程序可以提供一个固定的(硬编码)号码来绑定(),如果他们喜欢请求一个特定的号码,但这样的请求可能会失败,因为系统上的其他正在运行的应用程序当前可能正在使用它。

或者,它可以提供端口0来将bind()作为其连接参数。 这会触发操作系统在TCP / IP动态端口号范围内自动搜索并返回合适的可用端口。

请注意,应用程序实际上不会授予端口0,而是授予其他一些动态端口。 这种编程习惯的优点是效率。 应用程序可以依靠操作系统来执行此操作,而不是每个应用程序都必须实现并运行用于尝试多个端口的代码,直到获得有效的代码。

Unix,Windows和其他操作系统在处理端口0时稍有不同,但是适用相同的通用约定。

端口0和网络安全

通过互联网发送给监听端口0的主机的网络流量可能会由网络攻击者产生,或者由于程序编写不正确而意外产生。 主机为响应端口0流量而生成的响应消息可帮助攻击者更多地了解这些设备的行为和潜在网络漏洞。

许多互联网服务提供商(ISP)阻止端口0(传入和传出的消息)上的流量,以帮助防范这些漏洞。