HTTP1.0 中默認(rèn)是在每次請求/應(yīng)答,客戶端和服務(wù)器都要新建一個(gè)連接,完成之后立即斷開連接,這就是短連接。當(dāng)使用Keep-Alive模式時(shí),Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對服務(wù)器的后繼請求時(shí),Keep-Alive功能避免了建立或者重新建立連接,這就是長連接。其使用方法如下:
HTTP1.0版本是默認(rèn)沒有Keep-alive的(也就是默認(rèn)會發(fā)送keep-alive),所以要想連接得到保持,必須手動配置發(fā)送Connection: keep-alive字段。若想斷開keep-alive連接,需發(fā)送Connection:close字段;
HTTP1.1規(guī)定了默認(rèn)保持長連接,數(shù)據(jù)傳輸完成了保持TCP連接不斷開,等待在同域名下繼續(xù)用這個(gè)通道傳輸數(shù)據(jù)。如果需要關(guān)閉,需要客戶端發(fā)送Connection:close首部字段。
Keep-Alive的建立過程:
客戶端向服務(wù)器在發(fā)送請求報(bào)文同時(shí)在首部添加發(fā)送Connection字段
服務(wù)器收到請求并處理 Connection字段
服務(wù)器回送Connection:Keep-Alive字段給客戶端
客戶端接收到Connection字段
Keep-Alive連接建立成功
服務(wù)端自動斷開過程(也就是沒有keep-alive):