什麼是端口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(傳入和傳出的消息)上的流量,以幫助防範這些漏洞。