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