Linux

一個埠可以使用多個介面進行通信嗎?

  • May 18, 2018

我對以下命令的理解:

tcpdump -i any -nn port X
  • tcpdump-> 啟動服務以擷取數據包。
  • -i any -> 在任何/所有介面上。
  • -nn -> 不要將主機地址轉換為名稱(避免 DNS 查找),也不要轉換協議和埠號。
  • port X-> 將此規則應用於埠 X

假設以上是正確的,我覺得這個命令意味著埠(程序的邏輯端點)X 可以使用任何可用的介面來與另一個程序/設備等進行通信……並且這個 tcp 轉儲將擷取所有所有這些可用介面上的數據包。

有什麼方法可以查看給定埠可用的所有可用介面的列表(命令?)?

埠號是 TCP 和 UDP 數據包標頭的一部分,使用的埠號與用於通信的物理介面幾乎正交。(另一方面,介面通常與 IP 地址相關聯,但這也不是必需的。)

一個應用程序可以綁定到單個 IP 地址/介面,然後您可以最終將兩個應用程序綁定到不同的 IP 地址,使用相同的埠號。或者,單個應用程序可以分別綁定到不同的介面,並在所有介面上使用相同的埠號。或者使用不同的。埠號和介面存在於不同的層,因此對於特定介面可以使用哪些埠沒有限制。

另請注意,TCP 和 UDP 的埠號都介於 1 (0) 和 65535 之間,但數字空間不同。一個應用程序可以使用 TCP 埠 1234,而另一個應用程序使用 UDP 埠 1234。


關於術語,說一個埠“使用”一個介面,或者一個介面對特定埠“可用”沒有多大意義。埠號只是標識符,它們不會“做”任何事情。

儘管您的最後一句話似乎也將埠與命令混為一談,這有點不准確。許多應用程序都有一個眾所周知的埠(SSH 使用 TCP/22,HTTP 使用 TCP/80 等),但沒有什麼可以強制執行的:您可以在埠 2222 上執行 SSH 伺服器,而在埠 22 上執行完全不同的東西。

引用自:https://unix.stackexchange.com/questions/444542