傳輸層

TCP 連線終止(connection teardown)

禮貌地結束一通電話,意思是雙方各自道別、並等聽到對方的道別才掛斷——否則有人會在話講到一半時被切斷。TCP 也用這種有禮的方式關閉連線。因為 TCP 連線是全雙工的(資料在兩個方向各自獨立流動),每個方向都要分別關閉,所以乾淨的關閉需要一小段交換,而不是單單一聲「喀」。

機制用到 FIN 旗標,意思是「我沒有更多資料要送了」。通常一端送出一個 FIN;另一端以 ACK 確認,並可能繼續送它自己剩下的資料(連線此時是半關閉的——一個方向結束、一個方向還開著)。當那一端也送完時,它送出自己的 FIN,由先前那一端確認。所以完整的優雅關閉大致是 FIN、ACK、FIN、ACK——四個區段,雖然中間兩個有時會合併。還有一個突兀的替代方案:一個 RST(重置)區段會立刻把連線甩上,用在出了某種錯時。

為什麼重要:有秩序的終止確保兩端對「對話已結束」取得共識,且過程中沒有在途的位元組遺失——兩個方向在關閉前都有機會送出它們最後的資料。有個細節直接由此而來:先關閉的那一端不會瞬間消失。它會短暫地停留在 TIME-WAIT 狀態,以吸收任何落單的區段、並確保它最後那個 ACK 被收到,這樣連線的「四元組」就不會太快被重用。

用戶端下載完畢,送出 FIN。伺服器確認它、把最後幾個位元組沖出,再送出自己的 FIN;用戶端確認那個。現在兩個方向都關閉了。接著用戶端(主動關閉者)在 TIME-WAIT 中等待一陣子,才完全釋放連線。

FIN、ACK、FIN、ACK——每個方向輪流關閉。

優雅關閉(FIN 交換)讓緩衝的資料排空;RST 是突兀的中止,可能丟棄在途的資料。看到 RST 不一定是錯誤——防火牆與負載平衡器有時會用它來拆掉閒置的連線。

又称
connection closeFIN handshake連線終止連線關閉