《圖解HTTP》知識點摘錄

大地發表於2018-03-13

前言

如果沒有體系化的認知,瞭解的資訊越多也就越迷茫!如果對本質的認知就是錯的,瞭解的資訊越多偏差也就越大!資訊絕對不等於認知,網際網路碎片化資訊究竟有多少價值需要認真篩選

之前就想了解一下關於計算機網路方面的知識,網上搜來搜去就是那兩本書,一本是《HTTP權威指南》,這本書的厚度快趕上新華字典了;另一本是《TCP/IP講解,卷1》,看完之後,我就呵呵了!

《圖解HTTP》知識點摘錄
最近看了上野宣(日本作家)寫的《圖解HTTP》,打算把書中的知識點簡單的歸類總結一下,或者叫摘抄一下更為合理,方便自己後期複習。本來自己是搞移動端的,可漸漸發現了瓶頸,如果想要在專業技術的道路上走的踏實,還是繞不開HTTP協議,繞不開更加系統和低層的計算機知識,大學的時候總覺得自己學的東西都太理論化,根本應付不了實際的專案工程,最近的感觸卻完全相反,理論是可以指導實踐的,試想:如果大學也開通了廚師專業,大學肯定要從廚師的階級屬性、社會使命學起,甚至還要兼顧這個職業的歷史演變等,學的時候枯燥無味,感覺這跟新東方開學就給你發兩把菜刀直接顛勺的教學效率肯定不能比,現在想想感覺還是太嫩了,給自己不學習找理由已經到了不惜要自暴自棄的地步了,加之社會總有說大學生不如XX之類的新聞,搞得自己更是自行慚穢.....
《圖解HTTP》知識點摘錄
算了,不扯了,直接上乾貨吧,技多不壓身~

第一章 瞭解Web及網路基礎

1.1 網路基礎 TCP/IP

TCP/IP協議族裡可分為應用層、傳輸層、網路層和資料層。

應用層

應用層決定了向使用者提供應用服務時通訊的活動。TCP/IP協議族內預存了各類通用的應用服務。比如FTP(File Transfer Protocol,檔案傳輸協議)和DNS(Domain Name Sysytem,域名系統),HTTP協議也處於該層。

傳輸層

傳輸層對上層應用層,提供處於網路連線中的兩臺計算機之間的資料傳輸。在傳輸層有兩個性質不同的協議:TCP(Transmission Control Protocol,傳輸控制協議)和UDP(User Data Protocol,使用者資料包協議)。

網路層

網路層用來處理在網路上流動的資料包。資料包是網路傳輸的最小資料單位,該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,比把資料包傳送給對方。

鏈路層(又名資料鏈路層,網路介面層)

用來處理連結網路的硬體部分。包括控制作業系統、硬體的裝置驅動、NIC(Network Interface Card,網路介面卡,即網路卡),及光纖等物理可見的部分。

1.2 傳送HTTP大體流程

1、客戶端在應用層(HTTP協議)發出一個想看某個Web頁面的HTTP請求;
2、為了傳輸方便,在傳輸層(TCP協議)把從應用層收到的資料(HTTP請求報文)進行分割,並在各個報文上打上標記序號及埠號後轉發給網路層;
3、在網路層(IP協議,Internet Protocol),增加作為通訊目的地的MAC地址後轉發給鏈路層。這樣一來,發往網路的通訊請求就準備齊全了;
4、接收端的伺服器在鏈路層收到資料,按序往上層傳送,一直到應用層。當傳輸到應用層,才能算真正接收到由客戶端傳送過來的HTTP請求。

大體流程圖

1.3 與HTTP關係密切的協議:IP、TCP和DNS

負責傳輸的IP協議

按層次分,IP(Internet Protocol)網際協議位於網路層,IP協議的作用是把各種資料包傳送給對方。而要保證確實傳送到對方那裡,則需要滿足各類條件,其中兩個重要的條件是IP地址和MAC地址(Media Access Control Address)。

IP地址和MAC地址: 指明瞭節點被分配到的地址,MAC地址是指網路卡所屬的固定地址,IP地址可以和MAC地址進行配對。IP地址可變換,但MAC地址基本上不會更改。

使用ARP協議憑藉MAC地址進行通訊

IP間的通訊依賴MAC地址。在網路上通訊雙方在同一區域網內的情況很少,一般是經過多臺計算機和網路裝置中轉才能連線到對方。而在進行中轉時,會採用ARP協議(Address Resolution Protocol)。ARP是一種用以解釋地址的協議,根據通訊方的IP地址就可以反查出對應方的MAC地址

確保可靠性的TCP協議

按層次分,TCP位於傳輸層,提供可靠的位元組流服務。所謂位元組流服務是指為了方便傳輸,將大塊資料分割成以報文段為單位的資料包進行管理。TCP協議為了更容易傳送大資料才把資料分割,而且TCP協議能夠確認資料最終是否送達到對方。

TCP的三次握手:確保資料能到達目標

1、傳送端首先傳送一個帶SYN(synchronize)標誌的資料包給對方;
2、接受端收到後,回傳一個帶有SYN/ACK(acknowledgement)標誌的資料包以示傳達確認訊息;
3、最後,傳送端再回傳一個帶ACK標誌的資料包,代表“握手?”結束。

負責域名解析的DNS服務

DNS(Domain Name System)服務是和HTTP協議一樣位於應用層的協議,他提供域名到IP地址之間的解析服務。例如把www.hackr.jp解析成對應的IP地址20X.189.105.112

第二章 簡單的HTTP協議

請求報文是由請求方法、請求URI(統一資源識別符號,URL:統一資源定位符)、協議版本、可選的請求收不欄位和內容實體構成。

2.3 HTTP是不儲存狀態的協議

HTTP是一種不儲存狀態,即無狀態協議。HTTP協議自身不對請求和響應之間的通訊狀態進行儲存,不做持久化處理。所以為了儲存狀態引入了cookie技術,後面細講。

2.4 告知伺服器意圖的HTTP方法

1、GET:獲取資源; 2、POST:傳輸實體主體 3、PUT:傳輸檔案 4、HEAD:獲得報文首部,告知通訊狀態 5、DELETE:刪除檔案 6、OPTIONS:詢問支援的方法 7、TRACE:追蹤路徑

2.5 使用Cookie的狀態管理

Cookie會根據從伺服器端傳送的響應報文內的一個叫做Set-Cookie的首部欄位資訊,通知客戶端儲存Cookie,當下次客戶端再往該伺服器傳送請求時,客戶端會自動在請求報文中加入Cookie值後傳送出去。伺服器端根據客戶端發過來的cookie對比伺服器上的記錄,最後得到之前的狀態資訊。即:

  • 1、請求報文(沒有Cookie資訊的狀態);
  • 2、響應報文(服務端生成Cookie資訊);
  • 3、請求報文(自動傳送儲存著的Cookie資訊)。

web網站為了管理使用者的狀態會通過web瀏覽器,把一些資料臨時寫入使用者的計算機內,接著當使用者訪問該web網站時,可通過通訊方式取回之間發放的cookie;

Cookie屬性

《圖解HTTP》知識點摘錄

第三章 返回結果的HTTP狀態碼以及Host

狀態碼

《圖解HTTP》知識點摘錄

Host

《圖解HTTP》知識點摘錄

第四章 確保Web安全的HTTPS

HTTP的缺點:

  • 通訊使用明文(不加密),內容可能會被竊聽;
  • 不驗證通訊方的身份,因此有可能遭遇偽裝;
  • 無法證明報文的完整性,所以有可能已遭到篡改。

HTTP + 加密 + 認證 + 完整性保護 = HTTPS

《圖解HTTP》知識點摘錄

1、客戶端通過傳送Client Hello報文開始SSL通訊,報文中包含客戶端支援的SSL的指定版本、加密元件(Cipher Suite)列表(所使用的加密演算法及金鑰長度等);

2、伺服器可進行SSL通訊時,會以Server Hello報文作為應答,和客戶端一樣,在報文中包含SSL版本及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件內篩選出來的;

3、之後伺服器傳送Certificate報文,報文中包含公開金鑰證書;

4、最後伺服器傳送Server Hello Done報文通知客戶端,最初階段的SSL握手協商部分結束;

5、SSL第一次握手結束後,客戶端以Client Key Exchange報文作為應答,報文中包含通訊加密中使用的一種被稱為Pre-mastersecret的隨機密碼串,該報文已用步驟3中的公開金鑰進行加密;

6、接著客戶端繼續傳送Change Cipher Spec報文,該報文會提示伺服器,在此報文之後的通訊會採用Pre-master secret金鑰進行加密;

7、客戶端傳送Finished報文,該報文包含連結至今全部報文的整體校驗值,這次握手協商是否能夠成功,要以伺服器是否能夠正確解密該報文作為判定標準;

8、伺服器同樣傳送Change Cipher Spec報文;

9、伺服器同樣傳送Finished報文;

10、伺服器和客戶端的Finshed報文交換完畢後,SSL連線就算建立完成。當然,通訊會受到SSL的保護,從此處開始進行應用層協議的通訊,即傳送HTTP請求;

11、應用層協議通訊,即傳送HTTP響應;

12、最後由客戶端斷開連線,斷開連線時,傳送close_notify報文,上圖做了一些省略,這步之後再傳送TCP FIN報文來關閉與TCP的通訊;

相關文章