日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图解HTTP(读书笔记01)

發布時間:2024/1/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解HTTP(读书笔记01) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖解HTTP(記錄書中筆記)

一、了解web及網絡基礎

web使用一種名為HTTP(HyperText Transfer Protocol),超文本傳輸協議作為規范。完成從客戶端到服務器端等一系列運作流程。而協議是規則的約定。

1.2 HTTP的誕生

Tim Berners Lee博士提出了一種能讓遠隔兩地的研究者們共享知識的設想。

最初設想的基本理念是:借助多文檔之間相互關聯形成的超文本,連成可相互參閱的WWW

HTTP于1990年問世,那時的HTTP并沒有作為正式的標準被建立。

HTTP正式作為標準被公布是在1996年的5月,版本是HTTP/1.0

1.3 網絡基礎TCP/IP

計算機與網絡設備要相互通信,雙方必須基于相同的方法。比如:如何探測到通信目標,由哪一邊先發起通信,使用哪種語言進行通信,怎樣結束通信等規則都需要事先確定。不同的硬件,操作系統之間的通信,所有的這一切都需要一種規則。而我們把這種規則稱為協議。

像這樣把與互聯網相關的協議集合起來總稱為TCP/IP

1.3.2 TCP/IP分層管理

分層:應用層、傳輸層、網絡層和數據鏈路層

分層好處:如果互聯網只由一個協議統籌,某個地方需要改變設計時,就必須把所有部分整體替換掉。而分層之后只需要將變動的層替換掉就可以。把各層之間的接口部分規劃好之后,每個層次內部的設計就能自由改動了。

  • 應用層:決定了向用戶提供應用服務時的通信的活動,HTTP協議處于該層。
  • 傳輸層:提供處于網絡連接中的兩臺計算機之間的數據傳輸。
  • 網絡層:處理在網絡上流動的數據包。數據包時網絡傳輸的最小數據單位。
  • 鏈路層:用來處理連接網絡的硬件部分。
  • 1.3.3 TCP/IP通信傳輸流

    發送端在層與層之間傳輸數據時,每經過一層時必定會被打上一個該層所屬的首部信息。

    這種把數據信息包裝起來的做法稱為封裝。

    1.4 與HTTP關系密切的協議:IP、TCP和DNS

    1.4.1 負責傳輸的IP協議(網絡層)

    IP(Internet Protocol)網絡協議。

    IP協議作用:把各種數據包傳送給對方(網絡層)。需要滿足兩個重要的條件:IP地址和MAC地址

    IP地址指明了節點被分配到的地址,MAC地址是指網卡所屬的固定地址。一般情況下,IP地址可變換,但MAC地址基本上不會更改。

    ARP是一種以解析地址的協議,根據通信方的IP地址就可以反查出對應的MAC地址。

    1.4.2 確保可靠的TCP協議(傳輸層)

    TCP,提供①可靠的②字節流服務。

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

    ①可靠是指能夠確認數據最終是否送達到對方。

    如何確定數據是否送達呢?答案:三次握手策略。

    若在握手過程中,某個階段莫名終端,TCP協議會再次以相同的順序發送相同的數據包。

    1.4.3 負責域名解析的DNS服務(應用層)

    它提供域名到IP地址之間的解析服務。

    1.7 URI URL

    URI就是某個協議方案表示的資源的定位標識符。URI表示用字符串標識的某一互聯網資源,而URL表示資源的地點??梢奤RL是URI的子集。

    二、簡單的HTTP協議

    2.3 HTTP是不保存狀態的協議

    也就是說,在HTTP這個級別,協議對于發送過的請求或響應都是不做持久化處理的。

    優點:這是為了更快速的處理大量事務,確保協議的可伸縮性。

    缺點:比如用戶登入到一家網站及時跳轉到其他頁面也需要保持登入狀態。網站為了掌握是誰送出的請求,需要保存用戶的狀態。

    解決:引入了Cookie技術。

    2.5 告知服務器意圖的HTTP方法

  • GET:我想訪問你的資源。
  • POST:我想要把這條信息告訴你。
  • PUT:傳輸文件(不常用,任何人都可以上傳存在安全性問題)
  • HEAD:獲取報文首部,不反悔報文主體。
  • DELETE:刪除文件
  • OPTIONS:詢問支持方法
  • TRACE:追蹤路徑,確認連接過程中發生的一系列操作。
  • CONNECT:要求用隧道協議連接代理。
  • 2.7持久連接節省通信量

    背景:HTTP初始版本,每進行一次HTTP通信就要斷開一次TCP連接。

    例如:在發送請求訪問HTML頁面資源的同時,也會請求該HTML頁面里包含的其他資源。因此,每次請求都會造成無謂的TCP連接建立和斷開,增加通信量的開銷。

    解決:

  • 持久連接(旨在建立一次TCP連接后進行多次請求和響應的交互)
  • 管線化(不用等待響應結束亦可以發送下一個請求)
  • 2.8 Cookie狀態管理

    三、HTTP報文內的信息

    HTTP報文本身是由多行數據構成的字符串文本。

    大致分為報文首部和報文主體兩塊。中間由空行(CR+LF)來劃分。并不一定要有報文主題。

    3.3編碼提升傳輸速率

    3.3.1 報文主體和實體主體的差異

  • 報文:是HTTP通信中的基本單位,由8位組字節流組成,通過HTTP通信傳輸
  • 實體:作為請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。
  • HTTP報文的主體用于傳輸請求或響應的實體主體。

    通常,報文主體等于實體主體。只有當傳輸中進行編碼操作時,實體主體的內容發生變化,才導致它和報文主體產生差異。

    3.3.2 壓縮傳輸的內容編碼

    HTTP協議中有一種被稱為內容編碼的功能也能進行類似的操作。內容編碼指明在實體內容上的編碼格式,并保持實體信息原樣壓縮。

    3.3.3分割發送的分塊傳輸編碼

    背景:在HTTP通信過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求的頁面。在傳輸大容量的數據時,通過把數據分割成多塊,能夠讓瀏覽器逐步顯示頁面。

    這種把實體主體分塊的功能稱為分塊傳輸編碼。

    使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼,回復到編碼前的實體主體。

    3.4發送多種數據的多部分對象集合。

    發送的一份報文主體內可能含有多類型實體。文本,圖片、視頻等多個不同類型的數據。

    多部分對象集合包含的對象如下:

  • multipart/form-data:在WEB表單文件上傳時使用。
  • multipart/byteranges:狀態碼位206,響應報文包含了多個范圍的內容時使用。
  • 在HTTP報文中使用多部分對象集合,需要在首部字段里加Content-type。

    3.5 獲取部分內容的范圍請求

    背景:以前用戶不能使用現在這個告訴帶寬訪問互聯網。如果下載過程中遇到網絡中斷的情況,那就必須重新開始。

    解決:需要一種可恢復的機制,所謂恢復是指能從之前下載中斷處恢復下載。

    3.6 內容協商返回最合適的內容

    背景:同一個web網站可能存在多份相同內容的頁面,比如英文和中文版的web頁面,給他們內容上雖然相同,但使用的語言卻不同。當瀏覽器的默認語言為英文或中文,訪問相同的URI的web頁面則會顯示對應的英語版或中文版的web頁面,這樣的機制稱為內容協商。

    內容協商機制是指客戶端和服務器端就響應的資源內容進行交涉,然后提供給客戶端最為合適的資源。內容協商會以語言、字符集、編碼方式等為基準判斷響應的資源。

    包含在請求報文中的某些首部字段就是判斷的基準:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language
  • 四、返回結果的HTTP狀態碼

  • 200 OK
  • 204 請求處理成功,但沒有資源可返回
  • 206 是對資源的范圍請求
  • 301 資源URI已更新(永久重定向)
  • 302 資源URI已更新(臨時重定向)
  • 303和302類似,但303明確表示客戶端應當采用GET方法獲取資源
  • 304 資源已找到但未符合條件請求
  • 400 報文存在語法錯誤
  • 401 發送請求需要由通過HTTP認證的認證信息。
  • 403 請求資源的訪問被服務器拒絕了
  • 404 服務器上沒有請求的資源
  • 500 內部資源故障
  • 503 服務器暫時處于超負載或正在停機維護
  • 五、與HTTP協作的Web服務器

    5.1單臺虛擬主機實現多個域名

    可以用一臺服務器為多個客戶服務,也可以以每位客戶持有的域名運行各自不同的網站,這是因為利用了虛擬主機的功能。即使物理層面只有一臺服務器,但只要使用了虛擬主機的功能,可以假象已具有多臺服務器。

    問題:域名通過DNS服務映射到IP地址之后訪問目標網站,如果一臺服務器托管了兩個域名,當收到請求的時候就要分辨究竟是要訪問哪兩個域名。

    解決:在相同的IP地址下,在發送HTTP請求時,必須在Host首部內完整指定主機名或域名的URI

    5.2 通信數據轉發程序:代理、網關、隧道

    5.2.1 代理

    接收由客戶端發送的請求并轉發給服務器,同時也接收服務器返回的響應并轉發給客戶端。

    代理不改變請求URL,會直接發送給前方持有資源的目標服務器

    優點:利用緩存技術減少網絡帶寬的流量,組織內部針對特定的網站的訪問控制,以獲取訪問日志為主要目的,等等。

    5.2.2 網關

    網關:轉發其他服務器通信數據的服務器,接收從客戶端發送來的請求時,它就能像自己擁有資源的源服務器一樣對請求進行處理。

    網關與代理十分相似,網關能使通信線路上的服務器提供非HTTP協議服務

    優點:提高通信安全性,因為可以在客戶端和網關之間的通信線路上加密以確保連接的安全。另外網關可以連接數據庫,使用SQL語句查詢數據。

    5.2.3隧道

    隧道是在相隔甚遠的客戶端和服務器兩者之間進行中轉,并保持雙方通信連接的應用程序。

    可以使用SSL等加密手段進行通信。

    目的就是確保客戶端能與服務器進行安全的通信。

    5.3 保存資源的緩存

    緩存是指代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問。

    優點:減少對源服務器的訪問,因此也就節省了通信流量和通信時間。

    5.3.1 緩存的有效期限

    即使存在緩存,也會因為客戶端的要求,緩存的有效期限等因素,向源服務器確認資源的有效性。若判斷緩存失效,緩存服務器將會再次從源服務器獲取”新“資源。

    可以使用SSL等加密手段進行通信。

    目的就是確??蛻舳四芘c服務器進行安全的通信。

    5.3 保存資源的緩存

    緩存是指代理服務器或客戶端本地磁盤內保存的資源副本。利用緩存可減少對源服務器的訪問。

    優點:減少對源服務器的訪問,因此也就節省了通信流量和通信時間。

    5.3.1 緩存的有效期限

    即使存在緩存,也會因為客戶端的要求,緩存的有效期限等因素,向源服務器確認資源的有效性。若判斷緩存失效,緩存服務器將會再次從源服務器獲取”新“資源。

    總結

    以上是生活随笔為你收集整理的图解HTTP(读书笔记01)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。