Ip
使用相同的源埠和目標埠連接到本地主機上的伺服器
這是偵聽埠
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 時,哪個套接字接收它?兩個都?