我有幾個關於以下是我發現的連接埠的解釋。
應用層透過連接埠與傳輸層對話。連接埠已編號,標準應用程式始終使用相同的連接埠。
連接埠號碼的使用允許傳輸協定(通常是 TCP)知道資料包內的內容類型,從而允許它在接收側知道應該將接收到的資料傳送到哪個應用程式協定。
在沒有絕對保證的情況下,為什麼要使用連接埠號碼來判斷內部駐留的應用程式資料協定類型?
據我了解,透過連接埠發送的應用程式資料類型沒有限制(這只是一個建議)。另外,為此目的協定資料是否已包含在資料包中的某個位置?
另外,如果您將 HTTP 或某種其他類型的協定傳送到連接埠 25(需要 SMTP)的目的地,資料會發生什麼情況?
第三,如果將資料發送到未與任何程式綁定的端口,因此不會被監聽,會發生什麼情況?
**最後,如果一個連接埠只能綁定到一個程序,那麼依賴傳入 HTTP 資料的多個程序如何同時在我的電腦上運行?
先致謝!
答案1
在沒有絕對保證的情況下,為什麼要使用連接埠號碼來判斷內部駐留的應用程式資料協定類型?
因為猜測是一種糟糕的運行方式,而且你無法阻止,例如,有人惡意發送錯誤的內容。因此,在每個人都表現得很好的情況下它會有所幫助,並且不會讓事情變得更糟。
據我了解,透過連接埠發送的應用程式資料類型沒有限制(這只是一個建議)。
正確的。事實上,這甚至不是一個建議,只是很多人碰巧分享的協議。
另外,為此目的協定資料是否已包含在資料包中的某個位置?
不,至少不是連接埠通常指示的層級:您知道正在傳送哪種更高層級的 IP 協定(例如:TCP、UDP),但不知道其內容是什麼(例如:HTTP、SMTP) 。
另外,如果您將 HTTP 或某種其他類型的協定傳送到連接埠 25(需要 SMTP)的目的地,資料會發生什麼情況?
TCP只是將資料傳遞到應用層,應用層可以對資料做任何它想做的事情。大多數時候,你只會得到錯誤。有時您會遇到可利用的安全漏洞。
有時,您會因不正確的客戶端而得到良好的行為,例如當您不對連接埠使用 SSL 時,某些 HTTPS 伺服器將給出純文字 HTTP 錯誤。
第三,如果將資料發送到未與任何程式綁定的端口,因此不會被監聽,會發生什麼情況?
您從接收系統收到 ICMP 錯誤訊息。從技術上講,接收者可以做任何牠喜歡做的事情,但實際上,這就是發生的事情。
最後,如果一個連接埠只能綁定到一個程序,那麼依賴傳入 HTTP 資料的多個程序如何同時在我的電腦上運行?
當您的瀏覽器與遠端伺服器建立 HTTP 連接時,它會使用隨機本機端口,並與遠端伺服器上的已知端口(80 或 443)進行通訊。在這種情況下,每個不同的出站連接都是唯一的。 (不過,從技術上來說,就伺服器而言,不一定是這樣。)
在伺服器端,當監聽時,只有一個進程可以接受某個連接埠上的新連線(在 Unix/BSD 套接字中),但它可以將已建立的連線傳遞給其他進程來提供服務。由於該集合是唯一的,因此可以將流量路由到正確的連接。