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