Linux下TCP的keepalive相關參數學習

來源:互聯網
上載者:User

標籤:keepalive   tcp   

一 基本原理

TCP的Keepalive可以簡單理解成為keep tcp alive,用來檢測TCP sockets的串連是否正常或是已經斷開。

Keeplived的原理很簡單,當建立一個TCP串連時,發送端就會建立一些計時器,其中一些計時器就是處理keeplaive相關問題的。當keepalive的計時器計數到0時,發送端就會向對端發送一些不含資料的keepalive資料包並開啟ACK標誌。如果得到keepalive探測包的回複,就可以認為當前的TCP串連正常,不用擔心使用者層面的具體實現。事實上,TCP允許處理資料流,而不是資料包,所以對於使用者程式來說零位元組的資料包沒有危害。

開啟keepalive會對防火牆或者路由器產生額外的流量。

keepalive主要承擔兩個任務:

  1. 檢測死掉的對端串連

    keepalive可以用於在對端死掉並發送通知之前檢測到對端的串連狀態。核心錯誤或者強制終止對端的應用程式進程都可能造成這種情況發生。還有一種情況使用keepalive來檢測對端是否死掉是對端依然存活但是串連到對端之前的網路已經斷開。

    假想主機A和主機B之前一個簡單的TCP串連:在A與B之間有一個簡單的三向交握,A發送SYN到B,然後B發送SYN+ACK到A,最後A發送ACK到B。現在就建立起了一個穩定的TCP串連,等待某方通過這個通道傳輸資料。現在問題就來了:拔掉主機B的電源,主機B在沒有任何通知主機A當前串連即將關閉的情況會立即關機。對於主機A,正準備接收資料,但是不知道主機B已經關機。現在主機B開機,主機A和主機B又處於正常狀態,主機A知道還有一個與主機B的活動串連,但是主機B不知道。


  2. 在網路斷開的情況下阻止與對端的TCP串連斷開。








參考資料:

http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/index.html


本文出自 “Linux SA John” 部落格,請務必保留此出處http://john88wang.blog.51cto.com/2165294/1622146

Linux下TCP的keepalive相關參數學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.