(二)HTTP初相识--了解HTTP协议
HTTP初相識--了解HTTP協議
- 瀏覽器背后的故事
- HTTP協議的前世今生
- 透過TCPIP看HTTP
- DNS域名解析
- 回溯HTTP事務處理過程
- 與HTTP請求的第一次親密接觸
瀏覽器背后的故事
通過DNS服務器查詢域名所映射的IP地址,瀏覽器通過查詢到的ip地址和WEB服務器進行通訊,通訊的協議就是HTTP協議
WEB服務器收到請求,自然會到后端來執行,然后將執行結果以響應報文的形式回傳給瀏覽器,瀏覽器將響應報文進行渲染,渲染以后就是我們看到的頁面了
渲染引擎是根據我們的html文件描述對應相對應的數學模型,調用我們瀏覽器的各個零部件,把我們網頁資源的源代碼展示成圖像結果
HTTP
超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器(簡單地來說,是用來在網頁傳遞html的一種規則)
HTTP是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展
Web與HTTP
WEB是一種基于超文本和HTTP的、全球性的、動態交互的、跨平臺的分布式圖形信息系統
建立在Internet上的一種網絡服務,為瀏覽者在Internet上查找和瀏覽信息提供了圖形化的、易于訪問的直觀界面,其中的文檔及超級鏈接將Internet上的信息節點組織成一個互為關聯的網狀結構(簡單地說Web是基于HTTP而來的,是在HTTP協議基礎之上的圖形優化展示
)
HTTP協議的前世今生
1990年Tim完成了萬維網三大基礎設計,包括命名方案URI,通信協議HTTP,還有用來表示信息的標記語言HTML
1991年HTTP0.9只有get,只能傳遞HTML格式的字符串,每個HTTP請求都是短連接
1996年HTTP1.0擁有更多技能,像post和head,擁有了更多的功能性,比如狀態碼、緩存、重定向、權限等等
1997年HTTP1.1擁有更多的技能,比如options、put、delete、connect等等,也引入了現在常用的持久連接,管道機制,分塊傳輸等等
2015年HTTP2.0提高了我們的傳輸性能,實現了低延遲和高吞吐量
透過TCPIP看HTTP
HTTP協議是構建在TCP/IP協議之上的,是TCP/IP協議的一個子集,是TCP/IP家族中的一員
為了更好的理解HTTP協議,我們先了解下TCP/IP的相關知識
TCP/IP協議族
TCP/IP協議其實是一系列與互聯網相關聯的協議集合起來的總稱
分層管理是TCP/IP協議的重要特征
TCP/IP協議族分層
TCP/IP協議族是由一個四層協議組成的系統,這四層分別為:應用層、傳輸層、網絡層和數據鏈路層
應用層
應用層一般是我們編寫的應用程序,決定了向用戶提供的應用服務。應用層可以通過系統調用與傳輸層向下進行通信。如:FTP、DNS、HTTP等
傳輸層
傳輸層通過系統調用向應用層提供處于網絡連接中的兩臺計算機之間的數據傳輸功能
在傳輸層有兩個性質不同的協議:TCP(面向連接,有連接可靠、效率比較低)和UDP(無連接,無連接沒有校驗機制比較不可靠、效率比較高)
網絡層(網絡互聯層)
網絡層用來處理在網絡上流動的數據包,數據包是網絡傳輸的最小數據單位,該層規定了通過怎樣的路徑(傳輸路線)到達對方計算機,并把數據包傳輸給對方(在眾多選項中選擇一條傳輸路徑)
鏈路層(數據鏈路層或者網絡接口層)
鏈路層是用來處理連接網絡的硬件部分,包括控制操作系統、硬件設備驅動、NIC(Network Interface Card,網絡適配器)以及光纖等物理可見部分。一切的傳輸媒介,硬件上的范疇均在鏈路層的作用范圍之內
數據包的封裝過程
上層協議的數據如何轉變為下層協議的數據,這就是通過封裝來實現
應用程序數據在發布到我們數據網絡之前,會沿著這個協議棧,從上往下去進行傳遞,每層協議都在我們上層協議的基礎之上加上自己的頭部信息,鏈路層還會加上尾部信息,以此來實現所有層的封裝,最終為到達我們的網絡提供所有的必要信息,這就是數據包的封裝過程
HTTP數據傳輸過程
我們內容TCPIP協議族進行網絡傳輸通信的時候,會通過分層的順序與對方進行通信,發送端從應用層往下走,接收端從應用層向上走
我們就拿HTTP協議進行舉例說明
首先作為發送端的客戶端,在應用層也就是通過我們的HTTP協議發出一個想看某個WEB頁面的HTTP請求
接下來,為了傳輸方便,在傳輸層,就是通過TCP協議把應用層收到的數據,就是HTTP的請求報文進行分割并且在各個報文上打上標記序號、端口號等等一系列信息發送到我們的網絡層
在網絡層就是通過我們的IP協議增加作為通訊目的地的MAC地址,然后轉發給鏈路層
這樣一來呢,發往網絡的通信請求就準備齊全了,接收端的服務器在鏈路層接收到請求的數據,按順序向上層發送,一直發送到應用層
當我們傳輸到應用層時才算我們真正收到由客戶端發送過來的HTTP請求,發送端在層與層之間傳輸數據時,每經過一層必定會打上該層所屬的頭部信息,反過來說,在接收端,在層與層傳輸數據時,每經過一層都要把對應的頭部信息消去
發送端發送數據時,數據會從上層傳輸到下層,且每經過一層都會被打上該層的頭部信息。而接收端接收數據時,數據會從下層傳輸到上層,傳輸前會把下層的頭部信息刪除
傳輸層—TCP三次握手
第一次握手:
客戶端發送帶有SYN標志的連接請求報文段,然后進入SYN_SEND狀態,等待服務端的確認
第二次握手:
服務端接收到客戶端的SYN報文段后,需要發送ACK信息對這個SYN報文段進行確認。同時,還要發送自己的SYN請求信息。服務端會將上述的信息放到一個報文段(SYN+ACK報文段)中,一并發送給客戶端,此時服務端將會進入SYN_RECV狀態
第三次握手:
客戶端接收到服務端的SYN+ACK報文段后,會向服務端發送ACK確認報文段,這個報文段發送完畢后,客戶端和服務端都進入ESTABLISHED狀態,完成TCP三次握手
三次握手的目的
兩端確認可以開始傳輸為什么要經歷三次握手,三次握手的目的是我們的客戶端和通信端要進行連接,要確認雙方都能夠明確自己和對方的收發能力是正常的
所以第一次握手,客戶端發送了網絡包,服務端收到了,服務端得出客戶端的發送能力是正常的,我自己的接收能力也沒問題,但客戶端這時候什么都不知道,因為客戶端只發送了請求,所以服務端要給它確認,所以給客戶端發了個包,這里面帶著自己的確認和請求,這樣客戶端得到服務端接收能力和發送能力是正常的,我自己的發送能力和接收能力也是正常的,第三次握手是因為服務端只知道客戶端的發送能力和自己的接收能力,所以客戶端要再發一次,這時候服務端就能得出客戶端的接收和發送能力,自己的接收和發送能力都是沒問題的
總是接收的一方能得到一些結論,發送方是不知道的,所以想要建立一個連接,至少需要三次連接過程
就像A和B都剛買了新手機,都想測試自己的短信功能是不是正常
DNS域名解析
DNS服務和HTTP協議有著密不可分的關系
通常我們訪問一個網站,使用的是主機名或者域名來進行訪問的。因為相對于IP地址(一組純數字),域名更容易讓人記住,但TCP/IP協議使用的是IP地址進行訪問的,所以必須有個機制或者服務把域名轉換成IP地址,DNS服務就是用來解決這個問題的,它提供域名到IP地址之間的解析服務
為了提高效率,DNS服務解析是有層次的,是一個就近原則,首先我們本地電腦會將經常使用的域名和想要的IP地址建立一個映射關系,并且保存到系統文件里,所以正常情況下,在我們DNS解析的時候,會優先從HOST文件里尋找IP地址,如果本地HOST文件沒有域名對應的IP地址,會求助于本地的DNS服務器,本地都有自己的一個DNS服務,向本地的DNS服務發送請求,請求域名對應的IP地址,如果本地DNS服務沒有,會一層一層向上一級DNS服務請求,直到根DNS服務,如果找到就會進行回傳,最終返回給瀏覽器
CDN與DNS是怎么一層關系呢,DNS上掛載CDN,先由CDN來進行內容的分發,它告訴我根據自己的區域決定訪問哪邊的服務器,然后再通過DNS服務器返回給我們
回溯HTTP事務處理過程
當客戶端訪問Web站點時,首先會通過DNS服務查詢到域名的IP地址,然后瀏覽器生成HTTP請求,并通過TCP/IP協議發送給Web服務器。Web服務器接收到請求后會根據請求生成響應內容,并通過TCP/IP協議返回給客戶端
如果我們用客戶端瀏覽器瀏覽一個頁面的話,我們就要從中分解出我們的協議名,端口,對象路徑等等,我們得到協議用的是HTTP協議,主機可能是慕課的主機,端口是80端口,對象路徑是慕課的根結點,我們要通過DNS服務器解析出它的IP地址,下一步封裝我們HTTP請求的數據包,把以上部分結合本地信息封裝成一個HTTP請求的數據包,接下來再把這個數據包向下,我們HTTP是最上層的應用層,再往下是傳輸層,我們把這個包裝成TCP包,這樣才能建立TCP連接,就是TCP的三次握手,在HTTP開始工作之前,客戶機首先要通過網絡與服務器進行連接,這個連接就是TCP來完成的,這個協議與IP協議共同構建了我們整個的互聯網,也就是前面說過的TCPIP協議族,HTTP是比TCP更高層次的,所以只有低層協議建立好以后才能建立更高層次的連接,所以TCP連接建立好以后就進行HTTP請求,最后關鍵一點,一般來說Web服務器向瀏覽器發送請求數據,我們就要關閉TCP連接,把連接釋放掉
與HTTP請求的第一次親密接觸
可以下載WIRESHARK進行觀察
DNS解析 > TCP連接(三次握手) > HTTP > 釋放TCP連接
總結
以上是生活随笔為你收集整理的(二)HTTP初相识--了解HTTP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 祝福结婚十年的祝福语214个
- 下一篇: 小型企业如何选择路由器-企业级路由器如何