图解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分層管理
分層:應用層、傳輸層、網絡層和數據鏈路層
分層好處:如果互聯網只由一個協議統籌,某個地方需要改變設計時,就必須把所有部分整體替換掉。而分層之后只需要將變動的層替換掉就可以。把各層之間的接口部分規劃好之后,每個層次內部的設計就能自由改動了。
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方法
2.7持久連接節省通信量
背景:HTTP初始版本,每進行一次HTTP通信就要斷開一次TCP連接。
例如:在發送請求訪問HTML頁面資源的同時,也會請求該HTML頁面里包含的其他資源。因此,每次請求都會造成無謂的TCP連接建立和斷開,增加通信量的開銷。
解決:
2.8 Cookie狀態管理
三、HTTP報文內的信息
HTTP報文本身是由多行數據構成的字符串文本。
大致分為報文首部和報文主體兩塊。中間由空行(CR+LF)來劃分。并不一定要有報文主題。
3.3編碼提升傳輸速率
3.3.1 報文主體和實體主體的差異
HTTP報文的主體用于傳輸請求或響應的實體主體。
通常,報文主體等于實體主體。只有當傳輸中進行編碼操作時,實體主體的內容發生變化,才導致它和報文主體產生差異。
3.3.2 壓縮傳輸的內容編碼
HTTP協議中有一種被稱為內容編碼的功能也能進行類似的操作。內容編碼指明在實體內容上的編碼格式,并保持實體信息原樣壓縮。
3.3.3分割發送的分塊傳輸編碼
背景:在HTTP通信過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求的頁面。在傳輸大容量的數據時,通過把數據分割成多塊,能夠讓瀏覽器逐步顯示頁面。
這種把實體主體分塊的功能稱為分塊傳輸編碼。
使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼,回復到編碼前的實體主體。
3.4發送多種數據的多部分對象集合。
發送的一份報文主體內可能含有多類型實體。文本,圖片、視頻等多個不同類型的數據。
多部分對象集合包含的對象如下:
在HTTP報文中使用多部分對象集合,需要在首部字段里加Content-type。
3.5 獲取部分內容的范圍請求
背景:以前用戶不能使用現在這個告訴帶寬訪問互聯網。如果下載過程中遇到網絡中斷的情況,那就必須重新開始。
解決:需要一種可恢復的機制,所謂恢復是指能從之前下載中斷處恢復下載。
3.6 內容協商返回最合適的內容
背景:同一個web網站可能存在多份相同內容的頁面,比如英文和中文版的web頁面,給他們內容上雖然相同,但使用的語言卻不同。當瀏覽器的默認語言為英文或中文,訪問相同的URI的web頁面則會顯示對應的英語版或中文版的web頁面,這樣的機制稱為內容協商。
內容協商機制是指客戶端和服務器端就響應的資源內容進行交涉,然后提供給客戶端最為合適的資源。內容協商會以語言、字符集、編碼方式等為基準判斷響應的資源。
包含在請求報文中的某些首部字段就是判斷的基準:
四、返回結果的HTTP狀態碼
五、與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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5自动换行的间距设置,div c
- 下一篇: MATLAB如何修改默认设置