功能及作用
一般說來,無論何時一個報文段發往基準的連線(referenced connection)出現錯誤,TCP都會發出一個復位報文段(這裡提到的“基準的連線”是指由目的IP位址和目的連線埠號以及源IP位址和源連線埠號指明的連線。)
使用場景
到不存在的連線埠的連線請求
產生復位的一種常見情況是當連線請求到達時,目的連線埠沒有進程正在監聽。對於UDP,當一個數據報到達目的連線埠時,該連線埠沒在使用,它將產生一個ICMP連線埠不可達的信息。而TCP則使用復位。
異常終止一個連線
終止一個連線的正常方式是一方傳送FIN。有時這也稱為有序釋放(orderly release),因為在所有排隊數據都已傳送之後才傳送FIN,正常情況下沒有任何數據丟失。但也有可能傳送一個復位報文段而不是FIN來中途釋放一個連線。有時稱這為異常釋放(abortive release)。
異常終止一個連線對應用程式來說有兩個優點:
(1)丟棄任何待發數據並立即傳送復位報文段;
(2)RST的接收方會區分另一端執行的是異常關閉還是正常關閉。應用程式使用的API必須提供產生異常關閉而不是正常關閉的手段。
需要注意的是RST報文段不會導致另一端產生任何回響,另一端根本不進行確認。收到RST的一方將終止該連線,並通知套用層連線復位。
檢測半打開連線
如果一方已經關閉或異常終止連線而另一方卻還不知道,我們將這樣的T C P連線稱為半打開(Half-Open)的。任何一端的主機異常都可能導致發生這種情況。只要不打算在半打開連線上傳輸數據,仍處於連線狀態的一方就不會檢測另一方已經出現異常。
半打開連線的另一個常見原因是當伺服器主機突然掉電而不是正常的結束服務應用程式後再關機,伺服器主機重啟後,從客戶向伺服器傳送另一行字元。由於伺服器的TCP已經重新啟動,它將丟失復位前連線的所有信息,因此它不知道數據報文段中提到的連線。TCP的處理原則是接收方以復位作為應答。