1. 程式人生 > >分析幾種TCP狀態轉換中的非正常轉換

分析幾種TCP狀態轉換中的非正常轉換

 

1、伺服器從listen狀態變成close狀態的原因:

 

伺服器在監聽埠的時候,此時有些資源載入的有問題導致服務沒開啟,此時伺服器會從listen狀態變成closed狀態。

因此,伺服器在初始化時候,最好不要開啟聯網的埠

 

 

2、伺服器從listen狀態轉成syn sent狀態的原因:

這個狀態比較奇怪,伺服器在監聽的時候,卻向其他地方傳送訊息。我本來是監聽別人的,卻主動去連線別人。

出現這種問題,是因為程式碼的編碼有問題

 

 

3、RST狀態

 

情況一:

比如說伺服器要開啟80埠,由於某種原因,我們並沒有開啟這個服務。應用程式預設尋找80埠,但是找不到對應的服務,此時底層會給服務傳送一個RST

情況二:

請求超時時。當連線的處理時間超過了設定的時間,客戶端或者服務端會給對方傳送一個RST,表示不要連線了。著可能使我們的程式設定上有一些bug導致的。

情況三:

應用程式有bug。處理了一部分訊息之後,程式誤以為客戶端出現問題,然後主動停掉了對於客戶端的服務。此時處理了一半的訊息就斷了

情況四:

客戶端有一段時間沒有向伺服器傳送訊息,此段時間內伺服器重啟了一下,客戶端並不知情。此時客戶端再次傳送訊息給伺服器,伺服器接受不了客戶端發來的訊息。此時,伺服器會給客戶端傳送RST ,讓連結重置。