1. 程式人生 > >http權威指南讀書筆記第一天

http權威指南讀書筆記第一天

									網路協議讀書筆記:

第一節:http簡介 http請求報文

在這裡插入圖片描述

HTTP 是個應用層協議 因特網傳輸協議 TCP/IP 無差錯的資料傳輸; • 按序傳輸(資料總是會按照發送的順序到達); • 未分段的資料流(可以在任意時刻以任意尺寸將資料傳送出去)。

網路協議棧 在這裡插入圖片描述 在 HTTP 客戶端向伺服器傳送報文之前,需要用網際協議(Internet Protocol,IP) 地址和埠號在客戶端和伺服器之間建立一條 TCP/IP 連線。 建立一條 TCP 連線的過程與給公司辦公室的某個人打電話的過程類似。 預設埠號是 80

http傳輸過程 在這裡插入圖片描述 Web 瀏覽器和 Web 伺服器 是如何相互發送報文來實現基本事務處理的 代理 位於客戶端和伺服器之間的 HTTP 中間實體。 代理 還可以對請求和響應進行過濾。

快取 HTTP 的倉庫,使常用頁面的副本可以儲存在離客戶端更近的地方。 Web 快取(Web cache)或代理快取(proxy cache)是一種特殊的 HTTP 代理服務 器,可以 將經過代理傳送的常用文件複製儲存起來 客戶端從附近的快取下載文件會比從遠端 Web 伺服器下載快得多 閘道器 連線其他應用程式的特殊 Web 伺服器。 閘道器(gateway)是一種特殊的伺服器,作為其他伺服器的中間實體使用。通常用於 將 HTTP 流量轉換成其他的協議 在這裡插入圖片描述 隧道 對 HTTP 通訊報文進行盲轉發的特殊代理。 建立起來之後,就會在兩條連線之間對原始資料進行盲轉發的 HTTP 應用程式 HTTP 隧道的一種常見用途是通過 HTTP 連線承載加密的安全套接字層(SSL, Secure Sockets Layer)流量,這樣 SSL 流量就可以穿過只允許 Web 流量通過的防 火牆了 理解:http隧道可以看作為是用於突破防火牆限制的管道,它不會窺探管道內裝載什麼,可以用作木馬傳輸的工具,正常情況下用作ssl資料穿過防火牆。

在這裡插入圖片描述 Agent 代理 使用者 Agent 代理(或者簡稱為 Agent 代理)是代表使用者發起 HTTP 請求的客戶端程 序。 所有釋出 Web 請求的應用程式都是 HTTP Agent 代理。 發起自動 HTTP 請求的半智慧 Web 客戶端(爬蟲)在這裡插入圖片描述

第二節:連線管理

HTTP 連線實際上就是 TCP 連線和一些使用連線的規則。 TCP 的資料是通過名為 IP 分組(或 IP 資料報)的小資料塊來發送的。 HTTP 就是“HTTP over TCP over IP”這個“協議棧”中的最頂層 了。其安全版本 HTTPS 就是在 HTTP 和 TCP 之間插入了一個(稱為 TLS 或 SSL 的)密碼加密層

在這裡插入圖片描述 HTTP 要傳送一條報文時,會以流的形式將報文資料的內容通過一條開啟的 TCP 連 接按序傳輸。TCP 收到資料流之後,會將資料流砍成被稱作段的小資料塊,並將段 封裝在 IP 分組中,通過因特網進行傳輸 每個 TCP 段都是由 IP 分組承載,從一個 IP 地址傳送到另一個 IP 地址的。每個 IP 分組中都包括: 一個IP分組首部(通常為20位元組); 一個 TCP 段首部(通常為 20 位元組); 一個 TCP 資料塊(0 個或多個位元組)。 IP 首部包含了源和目的 IP 地址、長度和其他一些標記。TCP 段的首部包含了 TCP 埠號、TCP 控制標記,以及用於資料排序和完整性檢查的一些數字值。 在這裡插入圖片描述

tcp效能篇: 在這裡插入圖片描述 事務處理時間可能 是很短的。除非客戶端或伺服器超載,或正在處理複雜的動態資源,

HTTP 事務的時延有以下幾種主要原因。 (1) 客戶端首先需要根據 URI 確定 Web 伺服器的 IP 地址和埠號。如果最近沒有對 URI 中的主機名進行訪問,通過 DNS 解析系統將 URI 中的主機名轉換成一個 IP 地址可能要花費數十秒的時間 3。 (2) 接下來,客戶端會向伺服器傳送一條 TCP 連線請求,並等待伺服器回送一個請 求接受應答。每條新的 TCP 連線都會有連線建立時延。這個值通常最多隻有一 兩秒鐘,但如果有數百個 HTTP 事務的話,這個值會快速地疊加上去。 (3) 一旦連線建立起來了,客戶端就會通過新建立的 TCP 管道來發送 HTTP 請求。 資料到達時,Web 伺服器會從 TCP 連線中讀取請求報文,並對請求進行處理。 (4) 然後,Web 伺服器會回送 HTTP 響應,這也需要花費時間。 這些 TCP 網路時延的大小取決於硬體速度、網路和伺服器的負載,請求和響應報文 的尺寸,以及客戶端和伺服器之間的距離。TCP 協議的技術複雜性也會對時延產生 巨大的影響。

最常見的 TCP 相關時延, 其中包括: TCP 連線建立握手; TCP 慢啟動擁塞控制; 資料聚集的 Nagle 演算法; 用於捎帶確認的 TCP 延遲確認演算法; TIME_W AIT 時延和埠耗盡。 tcp三次握手 在這裡插入圖片描述 TCP 連線握手需要經過以下幾個步驟。 (1) 請求新的 TCP 連線時,客戶端要向伺服器傳送一個小的 TCP 分組(通常是 40 ~ 60 個位元組)。這個分組中設定了一個特殊的 SYN 標記,說明這是一個連線請求。

(2) 如果伺服器接受了連線,就會對一些連線引數進行計算,並向客戶端回送一個 TCP 分組,這個分組中的 SYN 和 ACK 標記都被置位,說明連線請求已被接受

(3) 最後,客戶端向伺服器回送一條確認資訊,通知它連線已成功建立 現代的 TCP 棧都允許客戶端在這個確認分組中傳送資料。 小的 HTTP 事務可能會在 TCP 建立上花費 50%,或更多的時間 。可以通過重用現存連線,來減小這種 TCP 建立時延所造成 的影響 。

.