天天看點

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

HTTP協定簡介/資料包封裝/三次握手/DNS解析

  • 1.浏覽器背後的故事
  • 2.HTTP
  • 3.透過TCP/IP看HTTP
  • 4.資料包的封裝過程
  • 5.傳輸層--TCP三向交握
  • 6.DNS域名解析
    • DNS 域名解析協定的工作原理 遞歸式 疊代式
  • 7.HTTP事務處理過程
  • 實驗---對于浏覽器來說HTTP請求到底是什麼樣子

1.浏覽器背後的故事

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

解釋:

打給小紅,由姓名的代号來記錄, 小紅就是域名,電話号就是IP位址,共同語言(比如英語,漢語這些)就是HTTP協定

渲染:

浏覽器收到的是莫名其妙的封包,是以浏覽器要進行渲染再給使用者。 根據html檔案描述相對應的數學模型 ,要用我們浏覽器的各個零部件,進而将網頁的源代碼js,css,這些轉為圖像和文字。

2.HTTP

◆超文本傳輸協定(HTTP)是一種通信協定,它允許将超文本标記語言(HTML)文檔從Web伺服器傳送到用戶端的浏覽器

是用來在網頁之間傳遞html的規則

傳輸超文本的協定

A按照協定把超文本遞給B,A和B遵守着這種規則

超文本:超級文本,在文本内容中有連結,點選連結就可以跳轉到其他頁面。

HTTP是一個屬于應用層的面向對象的協定,由于其簡捷、快速的方式,适用于分布式超媒體資訊系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

曆史:

1990底,tim發明了url, http, 表達資訊的語言html,通過這些實作了一個伺服器和浏覽器

然後網際網路經曆了發展快速又混亂的幾年,很多公司做了擴充但是都不能相容,有一個團隊結合多方發表了HTTP1.0,在0.9的基礎上做了大量的改進。

特點:

0.9版本:隻有get技能,隻能傳遞html格式的字元串,每個http請求都是短連結

1.0版本:post,狀态碼,緩存,重定向等都有了

1.1版本:connect,持久連接配接,管道機制,是目前最常用的版本

QUIC協定:傳輸層的協定,谷歌在2013年提出,減少TCP通信的延遲和開銷,采用了UDP這種不大可靠的做基礎,做了大量改進,想把TCP,UDP二者合一

Web與HTTP

◆WEB是一種基于超文本和HTTP的、全球性的、動态互動的、跨平台的分布式圖形資訊系統

◆建立在Internet 上的一種網絡服務,為浏覽者在Internet上查找和浏覽資訊提供了圖形化的、易于通路的直覺界面,其中的文檔及超級連結将Internet.上的資訊節點組織成一個互為關聯的網狀結構

3.透過TCP/IP看HTTP

◆HTTP協定是建構在TCP/IP協定之上的,是TCP/IP協定的一個子集

◆為了更好的了解HTTP協定,我們先了解一下 TCP/IP的相關知識。

TCP/IP協定族

◆TCP/IP協定其實是一系列與網際網路相關聯的協定集合起來的總稱(規則)

◆封層管理是TCP/IP協定的特征

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

應用層

◆應用層一般是我們編寫的應用程式,決定了向使用者提供的應

用服務。應用層可以通過系統調用與傳輸層進行通信。

如: FTP、DNS、HTTP等。

傳輸層.

◆傳輸層通過系統調用向應用層提供處于網絡連接配接中的兩台計算機

之間的資料傳輸功能。

◆在傳輸層有兩個性質不同的協定:TCP(面向連接配接, 可靠效率低)和UDP(無連接配接,不可靠效率高)。

網絡層

網絡層用來處理在網絡上流動的資料包,資料包是網絡傳輸的最小資料機關。該層規定了通過怎樣的路徑(傳輸路線)到達對方計算機,并把資料包傳輸給對方。(在衆多路徑中選擇一條路徑)

鍊路層(又名資料鍊路層,網絡接口層)

用來處理連接配接網絡的硬體部分。包括控制作業系統、硬體的裝置驅動、NIC( Network Interface Card,網絡擴充卡,即網卡),及光纖等實體可見部分(還包括連接配接器等一切傳輸媒介)。

4.資料包的封裝過程

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

應用程式的資料在釋出到網絡之前,從上往下傳遞,每層協定都會在上層協定的基礎上加上自己的頭部資訊。鍊路層還會加上尾部資訊,實作封裝。

發送端發送資料時,資料會從上層傳輸到下層,且每經過一層都會被打上該層的頭部資訊。而接收端接收資料時,資料會從下層傳輸到上層,傳輸前會把下層的頭部資訊删除

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

利用 TCP/IP 協定族進行網絡通信時,會通過分層順序與對方進行通信。

發送端從應用層往下走,接收端則往應用層往上走。

我們用 HTTP 舉例來說明:

1.首先作為發送端的用戶端在應用層(通過HTTP 協定)發出一個想看某個 Web 頁面的 HTTP 請求。

2.接着,為了傳輸友善,在傳輸層(TCP 協定)把從應用層處收到的資料(就是HTTP 請求封包)進行分割,并在各個封包上打上标記序号及端口号後轉發給網絡層。

3.在網絡層(通過IP 協定),增加作為通信目的地的 MAC 位址後轉發給鍊路層。這樣一來,發往網絡的通信請求就準備齊全了。

4.接收端的伺服器在鍊路層接收到資料,按序往上層發送,一直到應用層。當傳輸到應用層,才能算真正接收到由用戶端發送過來的 HTTP請求

發送端在層與層之間傳輸資料時,每經過一層時必定會被打上一個該層所屬的首部資訊。反之,接收端在層與層傳輸資料時,每經過一層時會把對應的首部消去。

這種把資料資訊包裝起來的做法稱為封裝(encapsulate)

5.傳輸層–TCP三向交握

使用TCP協定進行通信的雙方必須先建立連接配接,然後才能開始傳輸資料。為了確定連接配接雙方可靠性,在雙方建立連接配接時,TCP協定采用了三次握手政策。

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

完成三次握手就可以進行資料傳輸

為什麼非要進行三次握手?

用戶端和通訊端要進行連接配接,要确認雙方的收發能力都是正常,

第一次握手, 用戶端發送給伺服器,伺服器能收到,那麼這個時候服務端能确定用戶端的發送能力正常,服務端的接受能力正常。

第二次握手, 用戶端确認服務端的接受能力正常(服務端接收到了我的包),發送能力也是正常的(服務端發來了新的),也知道了自己的發送能力是正常的(服務端接收到了我的包)

第三次握手, 因為服務端隻知道用戶端的發送能力和自己的接受能力正常,通過第三次握手,服務端知道用戶端的接收能力正常(用戶端對服務端有了第二次的回應),服務端的發送能力正常(發出去了)

為什麼建連結要3次握手,斷連結需要4次揮手?

對于建連結的3次握手: 主要是要初始化Sequence Number 的初始值。通信的雙方要互相通知對方自己的初始化的Sequence Number(縮寫為ISN:Inital Sequence Number)——是以叫SYN,全稱Synchronize Sequence Numbers。也就上圖中的 x 和 y。這個号要作為以後的資料通信的序号,以保證應用層接收到的資料不會因為網絡上的傳輸的問題而亂序(TCP會用這個序号來拼接資料)。

對于4次揮手: 因為

TCP是全雙工的,是以,發送方和接收方都需要Fin和Ack。

隻不過,有一方是被動的,是以看上去就成了所謂的4次揮手。如果兩邊同時斷連接配接,那就會就進入到CLOSING狀态,然後到達TIME_WAIT狀态。

當Server端收到Client端的SYN連接配接請求封包後,可以直接發送SYN+ACK封包。其中ACK封包是用來應答的,SYN封包是用來同步的。但是

關閉連接配接時,當Server端收到FIN封包時,很可能并不會立即關閉SOCKET,是以隻能先回複一個ACK封包,告訴Client端,"你發的FIN封包我收到了"。

隻有等到我Server端所有的封包都發送完了,我才能發送FIN封包,是以不能一起發送。故需要四步握手。

6.DNS域名解析

DNS: 域名解析協定(将域名轉化為相對應的IP位址 www.baidu.com)

www.baide.com 通過 DNS 協定解析對應的 IP 位址 + 80(端口号)— 》web伺服器

◆已經介紹了與HTTP協定有着密切關系的TCP/IP協定(使用DNS解析的),接下來介紹的DNS服務也是與HTTP協定有着密不可分的關系。

◆通常我們通路一個網站,使用的是主機名或者域名來進行通路的。因為**相對于IP位址(一 組純數字), 域名更容易讓人記住。但TCP/IP協定使用的是IP位址進行通路的,是以必須有個機制或服務把域名轉換成IP位址。**DNS服務就是用來解決這個問題的,它提供域名到IP位址之間的解析服務。

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

為了提高效率,DNS服務解析是有層次的,原則是就近原則,首先本地電腦會将一些經常使用的域名和ip位址形成映射儲存到本地host檔案,是以搜尋的時候,系統會從本地的host檔案先去找,沒有的話再去本地的DNS伺服器(在tcp/ip的參數裡,配置網絡的時候會配置一個DNS伺服器,會找首選DNS伺服器即本地DNS伺服器), 如果本地dns找不到,會一層層上傳(前提是設定了轉發模式),直到根伺服器,找到了再回傳。

host:比如通路谷歌,可以修改host 将谷歌的位址指向映像或者 别的位址

很久沒見過的同學叫小白,想不到電話号碼,在腦子裡想一下,想到了就撥出去(本地host查詢),想不起來就看看手機通訊錄(本地NDS),沒有的話我家樓下有個營業廳,讓她們幫忙查查,問問總公司(沒有轉發模式的情況),有轉發模式的話,就是一層層向上

DNS 域名解析協定的工作原理 遞歸式 疊代式

見以下連結

http://blog.chinaunix.net/uid-26275986-id-4110819.html

遞歸式和疊代式

  • 遞歸與疊代的差別 所謂 遞歸查詢過程 就是 “查詢的遞交者” 更替, 而 疊代查詢過程 則是 “查詢的遞交者”不變。

    舉個例子來說,你想知道某個一起上法律課的女孩的電話,并且你偷偷拍了她的照片,回到寝室告訴一個很仗義的哥們兒,這個哥們兒二話沒說,拍着胸脯告訴你,甭急,我替你查(此處完成了一次遞歸查詢,即,問詢者的角色更替)。然後他拿着照片問了學院大四學長,學長告訴他,這姑娘是xx系的;然後這哥們兒馬不停蹄又問了xx系的辦公室主任助理同學,助理同學說是xx系yy班的,然後很仗義的哥們兒去xx系yy班的班長那裡取到了該女孩兒電話。(此處完成若幹次疊代查詢,即,問詢者角色不變,但反複更替問詢對象)最後,他把号碼交到了你手裡。完成整個查詢過程。

遞歸查詢是以本地名稱伺服器為中心查詢,

遞歸查詢是預設方式,疊代查詢是以DNS用戶端,也就是客戶機器為中心查詢。其實DNS用戶端和本地名稱伺服器是遞歸,而本地名稱伺服器和其他名稱伺服器之間是疊代。

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

DNS 和 CDN

A在上海,B在新疆,C在西安, 大家都想看一個視訊,但是這個視訊資源挂在上海伺服器,其他人都會通路比較慢,把CDN挂在DNS上,用CDN來進行内容的分發,根據自己的區域來決定應該通路哪一邊的伺服器。

7.HTTP事務處理過程

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

HTTP工作過程

1.位址解析

如用用戶端浏覽器請求這個頁面:

localhost.com:8080/index.htm

從中分解出協定名、主機名、端口、對象路徑等部分,對于我們的這個位址,解析得到的結果如下:

  • 協定名:http
  • 主機名:localhost.com
  • 端口:8080
  • 對象路徑:/index.htm

在這一步,需要域名系統DNS解析域名,得主機的IP位址。

2,封裝HTTP請求資料包

把以上部分結合本機自己的資訊,封裝成一個HTTP請求資料包

3,封裝成TCP包,建立TCP連接配接(TCP的三次握手)

在HTTP工作開始之前,

客戶機(Web浏覽器)首先要通過網絡與伺服器建立連接配接,該連接配接是通過TCP來完成的,該協定與IP協定共同建構Internet,即著名的TCP/IP協定族,

是以Internet又被稱作是TCP/IP網絡。

HTTP是比TCP更高層次的應用層協定,根據規則,隻有低層協定建立之後才能,才能進行更高層協定的連接配接,

是以,首先要建立TCP連接配接,一般TCP連接配接的端口号是80。這裡是8080端口。

4,用戶端向伺服器發送請求指令

建立TCP連接配接後,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源辨別符(URL)、協定版本号,後邊是MIME資訊包括請求修飾符、客戶機資訊和可内容。

5,伺服器響應

伺服器接到請求後,給予相應的響應資訊,

其格式為一個狀态行,包括資訊的協定版本号、一個成功或錯誤的代碼,後邊是MIME資訊包括伺服器資訊、實體資訊和可能的内容。

實體消息是伺服器向浏覽器發送頭資訊後,它會發送一個空白行來表示頭資訊的發送到此為結束,接着,它就以Content-Type應答頭資訊所描述的格式發送使用者所請求的實際資料.

6,伺服器關閉TCP連接配接

一般情況下,

一旦伺服器向用戶端傳回了請求資料,它就要關閉 TCP 連接配接,

即把連結釋放掉,然後如果用戶端或者伺服器在其頭資訊加入了這行代碼 Connection:keep-alive ,TCP 連接配接在發送後将仍然保持打開狀态,于是,用戶端可以繼續通過相同的連接配接發送請求。保持連接配接節省了為每個請求建立新連接配接所需的時間,還節約了網絡帶寬。

實驗—對于浏覽器來說HTTP請求到底是什麼樣子

1.下載下傳WIRESHARK進行抓包,要下載下傳最穩定的版本

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

2.打開以後選擇所要抓取的網絡,這裡選擇的是wlan

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

3.找一個網站

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

4.然後去WIRESHARK裡面看一下

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

5.可以通過浏覽器的開發者工具看到一些請求的簡單狀況

HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子
HTTP協定簡介/資料包封裝/三次握手/DNS解析1.浏覽器背後的故事2.HTTP3.透過TCP/IP看HTTP4.資料包的封裝過程5.傳輸層–TCP三向交握6.DNS域名解析7.HTTP事務處理過程實驗—對于浏覽器來說HTTP請求到底是什麼樣子

包括請求時間,緩存等等,都會展示出來

繼續閱讀