tcp
長短連線
1、什麼是
tcp長連線
從應用層來看,就是
client
到server
建立一次連線,傳送多個資料報,直到不再與
server
通訊時關閉連線。
connect----send----recv----send----recv----... ...----close。
從傳輸層來看,使用的是
keep alive timer
實現(tcp
對每個連線建立
7個定時器:
connection establishment
、retransmission
、delayed ack
、persist
、keep alive
、fin_wait_2
、time_wait
),keep alive
定時器會在應用層沒有資料傳送時每隔
2小時傳送乙個
tcp包,序列號是當前
segment sequence-1
,包內容為空,然後接收
ack。
目的:1、
防止對方掉電或者
crash
後能釋放連線;
2、通過nat
**或者防火牆的時候,由於
nat和防火牆會因為記憶體大小的原因而丟棄不活躍的連線,這就導致連線丟失,而
keep alive
定時器到期後傳送的
tcp包使連線在
nat或者防火牆上排到連線佇列的前面,避免被
nat或者防火牆釋放連線。
2、什麼是tcp
短連線
從應用層看,就是
client
發哦server
建立一次連線,通訊一次,斷開連線。
connect----send----recv----close connect----send----recv----close
如果需要實現不釋放連線而傳送多次資料,需要在應用層實現心跳傳送。
3、優缺點:
長連線:一旦建立連線,以後傳送資料就避免了三次握手連線和四次握手關閉的開銷,但是需要額外傳送
keep alive
定時器到期傳送的
tcp包;
短連線:每次傳送資料都需要先三次握手建立連線,傳送資料後需要四次握手關閉連線,每次傳送資料都需要額外開銷,無維護連線的額外開銷。
TCP報文結構和長短連線
一 報文結構介紹 在開始講tcp連線過程時,還是先看看tcp報文的格式如圖1所示。ip資料報此時由ip頭部 tcp頭部 tcp資料組成。不帶選項的tcp頭部是20位元組長,而帶選項的,tcp頭部最長可達60位元組。常見的選項包括最大的大小 mss 時間戳 傳輸控制時使用 視窗縮放 流量控制時使用 選...
長短輪詢,長短連線
長短輪詢 相對於 客戶端動作來講是沒有區別的,都是不停的去請求,區別在於後端的反應和前端的行為。由於都比較占用服務端資源,就不說這些缺點了 短輪詢 是前端不停的請求,後端有沒有資料都會返回,前端拿到的是否為空資料也都繼續請求,因此,前端的資料不太好。長輪詢 也是前端不停的請求,後端去判斷 有資料返回...
Socket程式設計 長短連線
長連線和短連線是由客戶端決定的 短連線是客戶端每做乙個通訊就連線一次 如果是頻繁的業務模型,長連線比較好 寫乙個短連線的的例子 include include include include include include include include include include includ...