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