1. 程式人生 > >讀書筆記---<<圖解HTTP>>(一)

讀書筆記---<<圖解HTTP>>(一)

system .com service ssi 服務器 重復 文件 中轉站 http協議

一、了解Web及網絡基礎

1. 網絡基礎TCP/IP

通常使用的網絡包括互聯網都是在TCP/IP協議族的基礎上運作的,而HTTP屬於它內部的一個子集。

1.1 TCP/IP協議族

技術分享圖片

像這樣吧與互聯網關聯的協議集合起來的總稱為TCP/IP,這只是一種說法,還有其他的幾種說法,比如TCP/IP指TCP和IP協議等等,這裏就不深究了。

1.2 TCP/IP分層管理

記得大學的時候學的是OSI七層模型,在這本書上講的是TCP/IP四層模型:應用層、傳輸層、網絡層和數據鏈路層。

應用層

應用層決定了向用戶提供應用服務時通信的活動。

FTP和DNS服務就是其中的兩類,HTTP也屬於該層。

傳輸層

傳輸層對上層應用層,提供網絡連接中兩臺計算機之間的數據傳輸。

傳輸層有兩個性質不同的協議:TCP和UDP

網絡層

網絡層用來處理網絡上流動的數據包,數據包是網絡傳輸的最小數據單位,該層規定了通過怎樣的路徑(傳輸路線)到達對方計算機,並把數據包傳遞給對方。

鏈路層

用來處理連接網絡的硬件部分。

1.3 TCP/IP通信傳輸流

技術分享圖片

發送端從應用層往下走,接收端則往應用層往上走。

流程:發送端的客戶端在應用層(HTTP協議)發出一個想看某個Web頁面的請求。

為了傳輸方便,傳輸層(TCP協議)把從應用層處收到的數據(HTTP請求報文)進行分割,並在每個報文上打上標記序號及端口號後轉發給網絡層。

網絡層(IP協議)增加作為通信目的地的MAC地址後轉發給鏈路層。

接收端的服務器在鏈路層接受到數據,按序往上層發送,一直到應用層。

2. 與HTTP關系密切的協議:IP,TCP和DNS

2.1 負責傳輸的IP協議

IP協議的作用是把各種數據包傳送給對方。為保證正確送達,其中兩個正確的條件就是IP地址和MAC地址。

IP地址指明了節點被分配的地址,MAC是網卡的固定地址。IP地址會和MAC地址進行配對。

IP間通信依賴MAC地址。畢竟通信雙方在同一局域網內的情況很少,通常需要多臺計算機和網絡設備轉換才能連接到對方,而進行中轉時,會利用下一站中轉設備的MAC地址來搜索下一個中轉目標,此時采用ARP協議。ARP協議是一種用解析地址的協議,通過IP地址反查出對應的MAC地址。

有點像送快遞,寄快遞---集散中心---中轉站---集散中心---收快遞

2.2 確保可靠性的 TCP 協議

TCP提供可靠的字節流服務,字節流服務是指,為了方便傳輸,將大塊數據分割成以報文段為單位的數據包進行管理。

可靠性--->三次握手

發送端首先發送一個帶 SYN 標誌的數據包給對方。接收端收到後, 回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息。最後,發送端再回傳一個帶 ACK 標誌的數據包,代表“握手”結束。

2.3 負責域名解析的 DNS 服務

為了方便用戶記憶,DNS協議提供通過域名查找IP或逆向查找。

3 URI和URL

URI 統一資源標識符

URL 統一資源定位符

URN 統一資源名稱

技術分享圖片

URL是URI的一種實現,是URI的一個子集。舉個例子,假如大家名字都不能重復的話,根據名字就能標識出唯一的一個人,那麽名字就是URI的一個實例,但是現實生活中名字肯定會重復,所以身份證號才是URI,通過身份證號就能標識出唯一的一個人。而URL是通過描述人位置的的方式來確定一個人,比如某某協議://地球/中國/上海/浦東新區/xx小區/xxx,另一種方式就是通過身份證號來確定這個人了,兩種方式都屬於URI。

二、簡單的HTTP協議

1. HTTP協議用於客戶端和服務端之間的通信

客戶端包括請求行、請求頭、請求體。

服務端包括想響應行、響應頭、響應體。

技術分享圖片

其中,①②③是請求行,分別是請求方法,資源名稱,HTTP版本號,④是請求頭,⑤是請求體。

2. HTTP是不保存狀態的協議

協議本身不保留任何請求和發送的信息,這是為了處理大量事務,確保協議的可伸縮性,而特意把HTTP設計的如此簡單。

但是為了實現保持狀態的功能,便引入了Cookie機制。

3. 告知服務器意圖的HTTP方法

GET:獲取資源

POST:傳輸實體主體

PUT:傳輸文件,像FTP協議的文件上傳一樣

HEAD:獲得報文首部,和GET方法一樣,只是不返回報文主體部分。用於確認URI的有效性及資源更新日期等。

DELETE:刪除文件,與PUT相反的方法。

OPTIONS:詢問支持的方法,查詢針對URI指定的資源支持的方法。

技術分享圖片

TRACE:追蹤路徑,讓Web服務端將之前的請求通信環回給客戶端的方法。容易引發XST攻擊,通常不會用到。

CPMMECT:要求用隧道協議連接代理。要求與代理服務器使用隧道協議進行TCP通信,通常使用SSL和TLS協議把通信內容加密後經過網絡隧道傳輸。

技術分享圖片

目前大部分用的HTTP協議都是1.1版本。

4. 持久連接節省通信量

HTTP協議初始版本中,每進行一次HTTP通信就要斷開一次TCP連接。

技術分享圖片

隨著HTTP普及,文檔中包含大量圖片的情況多了起來,通信量大幅度增加。

4.1 持久連接

技術分享圖片

在HTTP/1.1中,所有的默認連接都是持久連接。

Connection:keep-alive

Keep-Alive: timeout=20 表示時間為20s的持久連接。

4.2 管線化

從前發送請求後需要等待並收到響應才能發送下一個請求。管線化技術出現後,不用等待響應亦可直接發送下一個請求。

4.3 使用Cookie的狀態管理

Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的 首部字段信息,通知客戶端保存 Cookie。當下次客戶端再往該服務器 發送請求時,客戶端會自動在請求報文中加入 Cookie 值後發送出 去。

服務器端發現客戶端發送過來的 Cookie 後,會去檢查究竟是從哪一 個客戶端發來的連接請求,然後對比服務器上的記錄,最後得到之前 的狀態信息。

IP(Internet Protocol)

FTP(File Transfer Protocol,文件傳輸協議)

DNS(Domain Name System,域名系統)

TCP(Transmission Control Protocol,傳輸控制協議)

UDP(User Data Protocol,用戶數據報協議)

MAC 地址(Media Access Control Address)

字節流服務(Byte Stream Service)

SSL(Secure Sockets Layer,安全套接層)

TLS(Transport Layer Security,傳輸層安全)

SYN(synchronize)

ACK(acknowledgement)

URL(Uniform Resource Locator)

URN ( Universal Resource Name)

讀書筆記---<<圖解HTTP>>(一)