Ip

使用相同的源埠和目標埠連接到本地主機上的伺服器

  • April 17, 2016

這是偵聽埠80的簡單伺服器localhost

nc -4 --listen 127.0.0.1 80

這是客戶端使用與伺服器localhost的目標埠相同的源埠連接到伺服器:

nc -4 --source-port 80 --source 127.0.0.1 127.0.0.1 80

我得到錯誤:

libnsock mksock_bind_addr(): Bind to 127.0.0.1:80 failed (IOD #1): Address already in use (98)

根據規定:{ SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }必須是唯一的,這個連接的創建應該被允許。在第一次嘗試創建連接之前沒有這樣的元組。為什麼不允許這樣做?我正在使用核心 4.4.6 執行 Fedora 23。

你試圖做的事情沒有任何意義。您正在嘗試使用相同的 5 元組創建兩個 TCP 套接字,{ SRC-IP, SRC-PORT, DST-IP, DST-PORT, PROTO }因此這兩個套接字彼此無法區分。

可以這樣想:如果允許,那麼,當一個 TCP 數據包從 127.0.0.1:80 到達並發往 127.0.0.1:80 時,哪個套接字接收它?兩個都?

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