java解析tcp包 TCP中已有SO_KEEPALIVE選項,為什么還要在應(yīng)用層加入心跳包機制?
TCP中已有SO_KEEPALIVE選項,為什么還要在應(yīng)用層加入心跳包機制?應(yīng)用層不能使用TCP層的頭,因為在應(yīng)用層可以看到的是傳輸層的數(shù)據(jù)部分。有時應(yīng)用層需要維護與服務(wù)器的弱鏈接,例如半小時刷新。雖
TCP中已有SO_KEEPALIVE選項,為什么還要在應(yīng)用層加入心跳包機制?
應(yīng)用層不能使用TCP層的頭,因為在應(yīng)用層可以看到的是傳輸層的數(shù)據(jù)部分。有時應(yīng)用層需要維護與服務(wù)器的弱鏈接,例如半小時刷新。雖然傳輸層可以始終保持連接狀態(tài),但服務(wù)器有時承受不起長連接的負擔(dān),最好通過應(yīng)用層來完成。當(dāng)網(wǎng)絡(luò)擁塞時,連接過程很容易超時和中斷。TCP通過設(shè)置keepalive來調(diào)節(jié)重傳數(shù)據(jù)的頻率。
事實上,下級可以執(zhí)行的功能是上級所需要的。