心跳包檢測是一款用e語言編寫的小工具,主要是給服務(wù)器管理員,站長等的網(wǎng)絡(luò)工具,用來檢測心跳包查詢服務(wù)器狀態(tài)等。
網(wǎng)絡(luò)心跳包檢測原理:
1客戶端每隔一個時間間隔發(fā)生一個探測包給服務(wù)器
2客戶端發(fā)包時啟動一個超時定時器
3服務(wù)器端接收到檢測包,應(yīng)該回應(yīng)一個包
4如果客戶機收到服務(wù)器的應(yīng)答包,則說明服務(wù)器正常,刪除超時定時器
5如果客戶端的超時定時器超時,依然沒有收到應(yīng)答包,則說明服務(wù)器掛了
心跳包理論:
之所以叫心跳包是因為:它像心跳一樣每隔固定時間發(fā)一次,以此來告訴服務(wù)器,這個客戶端還活著。事實上這是為了保持長連接,至于這個包的內(nèi)容,是沒有什么特別規(guī)定的,不過一般都是很小的包,或者只包含包頭的一個空包。
在TCP的機制里面,本身是存在有心跳包的機制的,也就是TCP的選項:SO_KEEPALIVE。系統(tǒng)默認(rèn)是設(shè)置的2小時的心跳頻率。但是它檢查不到機器斷電、網(wǎng)線拔出、防火墻這些斷線。而且邏輯層處理斷線可能也不是那么好處理。一般,如果只是用于保活還是可以的。
心跳包一般來說都是在邏輯層發(fā)送空的echo包來實現(xiàn)的。下一個定時器,在一定時間間隔下發(fā)送一個空包給客戶端,然后客戶端反饋一個同樣的空包回來,服務(wù)器如果在一定時間內(nèi)收不到客戶端發(fā)送過來的反饋包,那就只有認(rèn)定說掉線了。