TCP長鏈接的相關問題

 1、TCP長鏈接 編程

在編程中,每每須要創建一條TCP鏈接,並進行長時間的處理。所謂的TCP長鏈接並無確切的時間限制,而是說這條鏈接須要處理不僅一項事務,鏈接的時間也不能肯定。或者說只處理一項事務,但鏈接的時間比較長。 網絡

 

正常狀況下,一條TCP鏈接創建後,只要雙不提出關閉請求而且不出現異常狀況,這條鏈接是一直存在的,操做系統不會自動去關閉它,甚至通過物理網絡拓撲的改變以後仍然能夠使用。因此一條鏈接保持幾天、幾個月、幾年或者更長時間都有可能,只要不出現異常狀況或由用戶(應用層)主動關閉。 socket

2、TCP鏈接的正常中斷 ide

TCP鏈接在事務處理完畢以後,由一方提出關閉鏈接請求,雙方經過四次握手(創建鏈接是三次握手,固然能夠經過優化TCP/IP協議棧來減小握手的次數來提升性能,但這樣會造成不規範或者不優雅的通訊)來正常關閉鏈接 性能

3、TCP鏈接的異常中斷 優化

致使TCP鏈接異常中斷的因素以下: spa

物理鏈接被中斷 操作系統

操做系統down orm

程序崩潰 blog

等等。

4、如何檢測TCP鏈接已經中斷

對於實時性要求較高的網絡通訊程序,每每須要更加及時的獲取已經中斷的鏈接,從而進行及時的處理。但若是對方的鏈接異常中斷,每每是不能及時的獲得對方鏈接已經中斷的信息,操做系統檢測鏈接是否中斷的時間間隔默認是比較長的,即使它可以檢測到,但卻不符合咱們的實時性需求,因此須要咱們進行手工去不斷探測。

探測的方式有兩種:

1、改變socketkeepalive選項,以使socket檢測鏈接是否中斷的時間間隔更小,以知足咱們的及時性需求。

2、在應用層使用heartbeat來主動檢測。

 

原文連接:http://blog.163.com/tianle_han/blog/static/6617826201023053857239/

相關文章
相關標籤/搜索