圖解HTTP-讀書筆記

前言:
最近這段時間慢慢的在補充基礎知識,其中最先開始看的一本書就是【圖解HTTP】這本書非常適合新手入門,里面的內容把廣泛上需要了解的HTTP相關知識點都講,又不會讓讀者記得泛泛或者小兒科,以下是我在閱讀的時候做的讀書筆記以加深印象已經理解。

IMG_1188.JPG
第一章 了解Web及網絡基礎
  • Web使用一種名為HTTP(HyperText Transfer Protocol,超文本傳輸協議)的協議作為規范,完成客戶端到服務器端一系列運作流程,也就是說,Web是建立在HTTP協議上通信的。

  • 通常互聯網是在 TCP/IP 協議族的基礎上運作的,HTTP屬于這個族的一個子集。

  • TCP/IP 協議很重要的一個概念就是分層。按層次分別為:
    應用層 >>> 傳輸層 >>> 網絡層 >>> 鏈路層。
    一個HTTP請求發出后,大致的流程即是這樣的:
    首先客戶端在應用層發出一個想看某個Web頁面的HTTP請求 >>>
    為方便傳輸,傳輸層把從應用層收到的數據(HTTP請求報文)分割成多個數據包并標記序號后,轉發給網絡層 >>>
    在網絡層增加作為通信目的地的MAC地址后轉發給鏈路層。
    至此,發往網絡的通信請求就準備好了。

  • 發送端或者接收端,層與層之間傳遞數據時,每一層會被打上或消去該層所屬的首部信息。

  • DNS(Domain Name System)服務是和 HTTP 協議一樣位于應用層的協議。它提供域名到 IP 地址的解析服務。

  • TCP 協議位于傳輸層,提供可靠的字節流服務。因為傳輸層將數據分割,TCP 協議采用三次握手(three-way handshaking)策略以確保數據準確送達:首先發送一個帶有 SYN 標志的數據包給對方 >>>
    接收端收到后回傳一個帶有 SYN/ACK 標志的送達確認信息 >>>
    最后發送端再回傳一個帶有 ACK 標志的數據包。
    至此,“握手”結束。

  • IP 協議位于網絡層。作用是把各種數據包發送給對方。在此期間,會通過一個 ARP 協議將 IP 地址解析為 MAC 地址。

第二章 簡單的HTTP協議
  • HTTP 協議規定,請求從客戶端發出,最后服務器端響應請求并返回。也就是說,一定是從客戶端開始建立通信,服務器端沒有接收到請求之前不會發送響應。

  • 請求報文是由請求方法、請求URI、協議版本、請求首部字段(可選)和內容實體構成的。

GET /html/index.html HTTP/1.1
Host: ddrenched.com
name=ddrenched
  • 響應報文是由協議版本、狀態碼、狀態碼原因短語、響應首部字段(可選)和主體構成。
HTTP/1.1 200 OK
Date: Fri, 30 Jua 2017 10:59:19 GMT
<html>
...
  • HTTP 是不保存狀態的協議:不對請求和響應的通信狀態進行保存。
    每當有新的請求發送時,就會有對應的新響應產生。
    這是為了快速處理大量任務。

  • HTTP 方法

    • GET:獲取資源。該方法用來請求訪問已經 URI 識別的資源。
    • HEAD:獲取報文首部。和 GET 方法一樣,只是不返回報文主 體。常用來確認 URI 的有效性和資源的更新時間等。
    • POST:傳輸實體資源。該方法用來傳輸實體的主體。雖然 GET 方法也可以傳輸實體的主體,但一般用 POST 方法。
    • PUT:用來傳輸文件。要求在請求報文的主體中包含內容,然后保存到請求的 URI 指定的位置。
    • DELETE:用來刪除文件。與PUT方法相反,DELETE 方法按照請求 URI 刪除指定資源。
    • OPTION:用來查詢請求的 URI 資源支持的方法。
  • CONNECT:要求與代理服務器通信時建立隧道,實現用隧道協議進行 TCP 通信。主要是為了使用 SSL(Secure Socket Layer,安全套接)和 TLS(Transport Layer Security,傳輸層安全)協議把信息內容加密后經網絡隧道傳輸。

  • 持久連接:只要任意一方(客戶端和服務器端)沒有明確提出斷開連接,則保持 TCP 連接狀態。
    在 HTTP1.1 中,所有連接默認都是持久的。

  • Cookie 技術通過在請求和響應報文中寫入 Cookie 信息來控制客戶端狀態。
    Cookie 會根據服務器端發送的響應報文內的一個叫 Set-Cookie 的首部字段,通知客戶端保存 Cookie。當下次客戶端發送請求到服務器端時,客戶端會在報文中加入 Cookie 值再發送出去。

第4章 返回結果的 HTTP 狀態碼
  • 狀態碼的職責是描述客戶端發出請求的返回結果,狀態碼以三位數字和原因短語組成。
    數字中的第一位指定了響應類別:

  • 1XX:Informationao(信息性狀態碼)接受的請求正在處理

  • 2XX:Success(成功狀態碼)請求正常處理完畢

  • 3XX:Redirection(重定向狀態碼)需要附加操作以完成請求

  • 4XX:Client Error(客戶端錯誤狀態碼)服務器無法處理請求

  • 5XX:Server Error (服務器錯誤狀態碼)服務器處理請求錯誤

  • 2XX 成功

    • 200 OK:客戶端發來的請求被服務器正常處理了。
    • 204 No Content:服務器正常處理,但返回的響應報文實體中沒有主體。
  • 3XX 重定向

    • 301 Moved Permanently:永久性重定向。表示請求的的資源已被分配了新的 URI,以后應使用資源現在所指的 URI。
      如果已經把資源對應的 URI 保存為書簽,這時應該按照 Location 首部字段提示的 URI 重新保存。
    • 302 Found:臨時性重定向。表示請求的資源已被分配了新的 URI,希望用戶(本次)使用新的 URI 訪問。
      和301狀態碼相似,但302只是臨時的,比如 URI 被保存成書簽,但不會像301那樣去更新書簽。
    • 303 See Other:表示由于對應的資源存在著另一個 URI,應使用 GET 方法定向獲取請求資源。
    • 304 Not Modified:表示客戶端發送附帶請求時(If-Match,If-None-Match,If-Modified-Since,If-Unmodified-Since,If-Range,中任一首部),服務器端允許請求訪問資源,但因發生了未滿足條件的情況,直接返回304。
      304狀態碼返回時,不包含任何響應主體部分。
      304雖然被劃分在3XX中,其實和重定向沒什么關系。
    • 307 Temporary Redirect:臨時重定向。與302有著相同含義。
  • 4XX 客戶端錯誤

    • 400 Bad Request:表示請求報文中語法錯誤。當錯誤發生時,需要求改請求內容后再次發送請求。
    • 401 Unanthorized:表示發送的請求需要通過 HTTP 認證。
    • 403 Forbidden:表示對請求資源的訪問被服務器拒絕了。
      未獲得系統訪問權限,訪問權限出現問題等情況都可能發生403。
    • 404 Not Found:表示服務器上無法找到請求的資源。
  • 5XX 服務器錯誤

    • 500 Internal Server Error:表示服務器執行請求時發生錯誤。
    • 503 Service Unavailable:表示服務器暫時超載無法處理。
第5章 與 HTTP 協作的 Web 服務器
  • HTTP/1.1 協議允許一臺服務器搭建多個 Web 站點。

  • Web 托管服務可以用一臺服務器為多個域名運行,這是使用了 Virtual Host(虛擬主機)的功能。

  • 客戶端使用 HTTP 協議訪問服務器時,會經常采用域名的方式。在互聯網上,域名通過 DNS 服務映射到 IP 地址。可見,當請求發送至服務器時,已經是 IP 地址形式的訪問了。

  • 由于用作寄存的服務器的 IP 地址是相同的,多個虛擬主機寄存的不同 Web 站點如何區分呢? 必須在 Host 首部內指定主機名或域名的 URI。

  • 代理。代理服務器的基本行為就是接受客戶端的請求后轉發給其它服務器。代理不改變 URI,直接發送給前方持有資源的目標服務器(稱為源服務器)。從源服務器返回的響應經過代理服務器后再傳給客戶端。

  • 在 HTTP 通信中,可以級聯多臺代理服務器。請求和響應的轉發會經由數臺類似鎖鏈一樣鏈接起來的代理服務器。每次轉發,需要附加 Via 首部字段以標示經過的主機信息。

  • 網關工作機制和代理十分相似,網關能使通信線路上的服務器提供非 HTTP 協議服務。

  • 隧道的目的是確保客戶端與服務器進行安全的通信 。
    隧道可以按要求建立一條與服務器的通信線路,屆時使用加密手段進行通信。

第6章 HTTP 首部

---未完

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容

  • 本文是《圖解HTTP》讀書筆記的第一篇,主要包括此書的前五章內容,簡要記錄一下。大概分為以下幾部分: TCP/IP...
    lijiankun24閱讀 1,324評論 0 2
  • 4天讀完 一、了解web及網絡基礎 1.1 三項www構建技術: HTML:超文本標記語言 HTTP:文本傳輸協議...
    15d843cd48a8閱讀 796評論 1 4
  • 前面兩篇文章中關于 HTTP 相關知識基本上介紹的差不多了,這篇文章是對 HTTP 協議的補充,主要介紹以下三點內...
    lijiankun24閱讀 1,319評論 2 3
  • 本文是《圖解HTTP》讀書筆記的第二篇,主要包括此書的第六章內容,因為第六章的內容較多,而且比較重要,所以單獨寫為...
    lijiankun24閱讀 1,386評論 0 6
  • 昨天在路上遇到一件事情。一位快遞小哥與一位大胖子杠上了,兩人騎著電瓶車相互絆了一下,本來也沒多大點事,但那胖子不知...
    簡椋閱讀 528評論 1 2