
在閱讀了有關封包和電路交換的內容後,我了解到伺服器透過將已建立的客戶端連線傳遞給子進程來維護與連接埠的多個連線;連接路由中涉及的所有節點都維護一個連接 ID 表,以便資料包可以正確地轉送到下一個節點。
不過我對此仍然有幾個問題:
一旦與另一個程式建立了連接,資料包除了連接 ID 號碼之外還需要更多的標頭資料嗎?
建立連線後,例如連接埠 80;數據是否仍然通過該端口,或者建立的連接 ID 是否指定了一個新的開放端口以用於進一步的通信?
對應於我的問題在這裡;不同連接之間是否存在實際的實體隔離?還是它純粹是理論/虛擬的?
答案1
您似乎將電路交換想法與 TCP/IP 混淆了。
談論連接埠 80 意味著 TCP 和 IP 上的 HTTP 協定。使用 TCP/IP,中間節點(路由器)不需要追蹤「連線 ID」。動態維護的 IP 位址範圍路由表用於轉送封包。連續的資料包不必遵循相同的路徑。
伺服器使用客戶端 IP 位址和 TCP 連接埠號碼以及伺服器的連接埠號碼(和伺服器 IP 位址,伺服器可以有多個 IP 位址)來追蹤 TCP 連接。連接是透過這四個資訊的組合來識別的。客戶端連接埠號碼通常由客戶端偽隨機選擇。
請注意,UDP 是無連接的,沒有 UDP 連接的概念。許多 Internet 應用層協定使用 UDP 作為傳輸層協定。
一旦與另一個程式建立了連接,資料包除了連接 ID 號碼之外還需要更多的標頭資料嗎?
TCP/IP 封包中的 TCP 標頭和 IP 標頭本身不包含「連線 ID」。
建立連線後,例如連接埠 80;數據仍然通過該連接埠嗎?
是的。
或者建立的連接 ID 是否指定了一個新的開放連接埠以用於進一步的通訊?
正如我上面所說,TCP/IP 中不存在連線 ID。有時,更高層級的協定會在其他連接埠(例如 FTP 的控制和資料連接埠)上建立通訊。
與我的問題相對應;不同連接之間是否存在實際的實體隔離?
通常不會。一台伺服器可以有多個 NIC,為不同的客戶端群組提供服務。
還是它純粹是理論/虛擬的?
連接埠號碼等只是封包標頭中的數字。
答案2
在閱讀了有關封包和電路交換的內容後,我了解到伺服器透過將已建立的客戶端連線傳遞給子進程來維護與連接埠的多個連線;連接路由中涉及的所有節點都維護一個連接 ID 表,以便資料包可以正確地轉送到下一個節點。
這一段實在是令人困惑的。首先你指的是網路層的切換。然後您引用在傳輸層上建立的連線。然後你以某種方式將它們組合在一起,儘管它們實際上是不同的層。考慮一下電路交換可能只是一個想法,過去可能使用過,也可能沒有使用過。然而,一旦您提到端口,您就指的是根本不使用電路交換的 TCP/IP...
一旦與另一個程式建立了連接,資料包除了連接 ID 號碼之外還需要更多的標頭資料嗎?建立連線後,例如連接埠 80;數據是否仍然通過該端口,或者建立的連接 ID 是否指定了一個新的開放端口以用於進一步的通信?
您指的是與程式的連接,將使用 TCP/IP 連接埠。在這種情況下,資料包中不會附加任何連線 ID。在電路交換的情況下這是必要的。
不同連接之間是否存在實際的實體隔離?還是它純粹是理論/虛擬的?
一切都透過同一條電纜進行,因此可以將其視為虛擬的而不是實體的。
已建立的連接只是表示「我將透過此地址上的此帖子進行通信」的一種方式。是的,連接只是一個 IP 位址和連接埠對...
不要只使用維基百科來深入了解這一點,試著深入研究一本關於電腦網路的書...