1、http是如何使用tcp鏈接的?程序員
http鏈接本質就是tcp鏈接和一些使用鏈接的規則。全部的http通信都是由tcp/ip來承載的。tcp/ip是全球計算機及網絡設備都在使用的一種經常使用的分組交換的網絡分層協議集。客戶端程序打開一條tcp/ip鏈接。鏈接到可能運行在世界任何地方的服務器應用程序。web
1.tcp流是分段的,由ip分組傳送算法
網絡協議棧服務器
http要傳送一條報文的時候,會以流的形式將報文數據的內容經過一條打開的TCP鏈接按照順序傳輸。TCP收到數據流後,會將數據流分紅被稱之爲段的小數據塊,並將段封裝在ip分組中,經過網絡
因特網進行傳輸,見下圖。這些工做都是TCP/IP軟件來處理的,HTTP程序員什麼都看不到。tcp
2.一個tcp鏈接是由4個值來識別的,<源ip地址:源端口 目的ip地址:目的端口> tcp 是經過端口號來保持全部這些鏈接的正確運行的。優化
3. tcp客戶端和服務器是經過tcp套接字接口來進行通信的,以下圖所示:blog
對上圖的說明:接口
web服務器等待鏈接(S4),客戶端根據URL斷定出IP地址和端口號,並創建一條到服務器的TCP鏈接C3,鏈接創建成功,客戶端發送http請求C5,服務器讀取請求S6,ip
服務器對請求進行處理,執行請求的動做S7,客戶端讀取數據C6,客戶端處理數據。
2、TCP鏈接的時延、瓶頸、存在的障礙
1.tcp鏈接創建握手
2.tcp慢啓動擁塞機制
3.數據彙集的Nagle算法
4.用於捎帶確認 的TCP確認suanfa
5.TIME_WAIT 時延和端口耗盡
3、HTTP鏈接的優化
1.並行鏈接
並行鏈接可能會提升頁面的訪問速度,可是並行鏈接不必定很快
2.持久鏈接keep-alive
3.管道化鏈接 http/1.1
4、關閉鏈接
1.任意時刻能夠關閉鏈接
2.Content-Length及截尾
3.鏈接關閉容限、重試及冪等性
4.正常關閉