讀書筆記--《圖解http》

TCP/IP

  • TCP/IP協議族里最重要的一點就是分層,TCP/IP分為四層:應用層、傳輸層、網絡層、數據鏈路層。
    • 應用層決定了向用戶提供應用服務時通信的活動。HTTP協議、FTP、DNS
    • 傳輸層對上層應用層,提供處于網絡連接中的兩臺計算機之間的數據傳輸。TCP(傳輸控制協議)、UDP(用戶數據報協議)
    • 網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位,該層規定了通過怎樣的路徑(傳輸路線)到達對方計算機,并把數據包傳送給對方。IP
    • 鏈路層用來處理連接網絡的硬件部分。包括控制系統、硬件的設備驅動、NIC、光纖等物理可見部分。


      Alt text
      Alt text
  • IP協議的作用是把各種數據包傳送給對方,而要保證確實傳送到對方則需要滿足IP地址和MAC地址的匹配。
    • IP地址指明了節點被分配到的地址。
    • MAC地址是指網卡所屬的固定地址。
    • IP地址可以和MAC地址進行配對。
  • TCP提供可靠的字節流服務,字節流服務是指為了方便傳輸將大塊數據分割成以報文段為單位的數據包進行管理。為了準確將數據無誤地傳送到達目標處,TCP協議采用了三次握手策略。分別是請求連接、響應、開始傳輸。


    Alt text
    Alt text
  • url全稱是Uniform Resourse Location。
  • 利用緩存代理服務器可以避免多次從源服務器轉發資源,當客戶端發送相同請求時緩存代理服務器可直接發送緩存的資源,避免請求源服務器。

HTTP報文

  • HTTP是一種無狀態協議,不保留之前一切的請求或報文的信息。
  • Cookie會根據從服務端發送的響應報文內的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文上加上Cookie值后發送。
  • 為了傳輸大容量數據會將數據分成多個塊(chunk),每一塊都會用十六進制來標記塊的大小,而實體主題的最后一塊會使用“0(CR+LF)"來標記。

HTTP狀態碼

  • 狀態碼類別
    • 1xx:信息性狀態碼:接受的請求正在處理
    • 2xx:成功狀態碼:請求正常處理完畢
    • 3xx:重定向狀態碼:需要進行附加操作以完成請求
    • 4xx:客戶端錯誤狀態碼:服務器無法處理請求
    • 5xx:服務器錯誤狀態碼:服務器處理請求出錯
  • 當301、302、303相應狀態碼返回時,幾乎所有的瀏覽器都會把POST改為GET,并刪除請求報文內的主體,之后請求會自動再次發送。
  • 304狀態碼是當客戶端發送附帶條件請求時服務器端允許請求訪問資源,但因發生請求未滿足條件的情況后直接返回304 Not Modified。返回時不包含任何響應的主體部分。
  • 使用Wireshark可以獲取HPPT協議的請求和響應內容,并對其進行解析。

HTTPS

  • 通常HTTP直接和TCP通信,當使用SSL時,則演變成先和SSL通信,再由SSL和TCP通信。SSL全稱Secure Socket Layer 安全套接層。采用SSL后,HTTP就擁有了HTTPS的加密、證書、和完整性保護這些功能。
  • SSL采用公開密鑰加密,加密算法是公開的,而密鑰是保密的,加密和解密都需要用到密鑰。
  • 公開密鑰加密的方式很好地解決了共享密鑰加密的困難。公開密鑰使用一對非對稱的密鑰,一把叫做私有密鑰一把叫做公開密鑰。使用公開密鑰加密方式,發送密文的一方使用對方的公開密鑰進行加密處理,對方收到被加密的信息后,再使用自己的私有密鑰進行解密。利用這種方法,不需要發送用來解密的私有密鑰,也不用擔心密鑰被攻擊者竊聽而盜走。解密只能夠用私有密鑰解密,解密過程是在對離散對數進行求值,只有共有密鑰是不行的。
  • 數字證書是為了證明給客戶端收到的公開密鑰是正確的。服務器會將這份公鑰證書發送給客戶端以進行公開密鑰加密方式通信。多數瀏覽器會在內部植入常用認證機關的公開密鑰,以便客戶端進行驗證。


    Alt text
    Alt text

    Alt text
    Alt text

webSocket

  • webSocket是建立在http基礎上的全雙工通信標準,一旦Web服務器與客戶端之間建立起WebSocket協議的通信連接,之后所有的通信都依靠這個專用協議進行。通信過程中可以互相發送JSON、XML、HTML或圖片等任意格式的數據。
  • 為了實現WebSocket通信,需要用到http的Upgrade首部字段,告知服務器通信協議發生改變,以達到握手的目的。
  • 對于WebSocket的請求返回狀態碼101 Switching Protocols的響應。

UDP與TCP

  • TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。TCP是面向連接的,有比較高的可靠性。TCP連接一旦建立,所有的會話都基于連接完成,如果客戶端要與另一個TCP服務通信,需要另創建一個套接字來完成連接。

  • UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。UDP中一個套接字可以與多個UDP服務通信,在網絡差的情況下會產生丟包問題,常用于視頻音頻等傳輸。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容