本地主機上的TCP套接口是否可以接收來自先前連接的數據包?如果是這樣,那麼任何假定這種情況不會發生的程序都會被破壞。特別是,任何假定localhost上的套接字永遠不會從它應該連接的對等體之外的任何其他數據接收任何數據的程序都會中斷。本地主機上的套接字是否可以接收來自先前連接的數據包?
編輯:我知道這不是假設發生。但是,我認爲如果以前的套接字不在TIME_WAIT中足夠長時間,它會發生可能的。我正在處理的應用程序要求此絕不會發生在本地主機上 —否則,它受制於任意代碼執行漏洞。
本地主機上的TCP套接口是否可以接收來自先前連接的數據包?如果是這樣,那麼任何假定這種情況不會發生的程序都會被破壞。特別是,任何假定localhost上的套接字永遠不會從它應該連接的對等體之外的任何其他數據接收任何數據的程序都會中斷。本地主機上的套接字是否可以接收來自先前連接的數據包?
編輯:我知道這不是假設發生。但是,我認爲如果以前的套接字不在TIME_WAIT中足夠長時間,它會發生可能的。我正在處理的應用程序要求此絕不會發生在本地主機上 —否則,它受制於任意代碼執行漏洞。
如果您還沒有與TIME_WAIT
設置好惹的,並把它忘在它的默認值,它是兩次最大段生存時間(MSL),並且因此不可能從段先前的連接要在網絡中持續足夠長的時間才能通過同一端口上的新套接字接收。
TCP將初始序列號隨機化的事實是另一個防禦。陳舊分段的序號很可能不適合當前的接收窗口。
無關和非規範性的參考。 「TCP套接字是基於連接的」這一事實並沒有真正回答這個問題,即關於連接的問題。 – EJP
報價答案。一旦連接,它們只能發送/接收來自特定的遠程機器。我不明白這怎麼回答不了這個問題。 – GAntoine
您似乎並不瞭解TIME_WAIT的目的,以及爲什麼這是必要的,這裏不是向您解釋它的地方。只要說它是*必須提供*關於connecton完整性的保證,你只是斷言是這種情況。這就是OP在他的問題中提到的原因。如果TIME_WAIT期間太短,則無法提供擔保,您的回答和引用將是錯誤的。事實上,他們只是揮手致意。 – EJP