分析幾種TCP狀態轉換中的非正常轉換
阿新 • • 發佈:2018-12-05
1、伺服器從listen狀態變成close狀態的原因:
伺服器在監聽埠的時候,此時有些資源載入的有問題導致服務沒開啟,此時伺服器會從listen狀態變成closed狀態。
因此,伺服器在初始化時候,最好不要開啟聯網的埠。
2、伺服器從listen狀態轉成syn sent狀態的原因:
這個狀態比較奇怪,伺服器在監聽的時候,卻向其他地方傳送訊息。我本來是監聽別人的,卻主動去連線別人。
出現這種問題,是因為程式碼的編碼有問題。
3、RST狀態
情況一:
比如說伺服器要開啟80埠,由於某種原因,我們並沒有開啟這個服務。應用程式預設尋找80埠,但是找不到對應的服務,此時底層會給服務傳送一個RST
情況二:
請求超時時。當連線的處理時間超過了設定的時間,客戶端或者服務端會給對方傳送一個RST,表示不要連線了。著可能使我們的程式設定上有一些bug導致的。
情況三:
應用程式有bug。處理了一部分訊息之後,程式誤以為客戶端出現問題,然後主動停掉了對於客戶端的服務。此時處理了一半的訊息就斷了
情況四:
客戶端有一段時間沒有向伺服器傳送訊息,此段時間內伺服器重啟了一下,客戶端並不知情。此時客戶端再次傳送訊息給伺服器,伺服器接受不了客戶端發來的訊息。此時,伺服器會給客戶端傳送RST ,讓連結重置。