天天看點

圖解HTTP協定學習01

使用HTTP協定通路Web

Web 使用一種名為 HTTP(HyperText Transfer Protocol,超文本傳輸協定 1)的協定作為規範,完成從用戶端到伺服器端等一系列運作流

程。而協定是指規則的約定。

TCP/IP的分層管理

TCP/IP 協定族裡重要的一點就是分層。TCP/IP 協定族按層次分别分為以下 4 層:應用層、傳輸層、網絡層和資料鍊路層。

應用層:應用層決定了向使用者提供應用服務時通信的活動。TCP/IP 協定族内預存了各類通用的應用服務。比如,FTP(FileTransfer Protocol,檔案傳輸協定)和 DNS(Domain Name System,域名系統)服務就是其中兩類。HTTP協定也屬于該層

傳輸層:傳輸層對上層應用層,提供處于網絡連接配接中的兩台計算機之間的資料傳輸;在傳輸層有兩個性質不同的協定:TCP(Transmission ControlProtocol,傳輸控制協定)和 UDP(User Data Protocol,使用者資料報協定)。

網絡層:網絡層用來處理在網絡上流動的資料包。資料包是網絡傳輸的最小資料機關。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,并把資料包傳送給對方。與對方計算機之間通過多台計算機或網絡裝置進行傳輸時,網絡層所起的作用就是在衆多的選項内選擇一條傳輸路線。

鍊路層(又名資料鍊路層,網絡接口層):用來處理連接配接網絡的硬體部分。包括控制作業系統、硬體的裝置驅動、NIC(Network Interface Card,網絡擴充卡,即網卡),及光纖等實體可見部分(還包括連接配接器等一切傳輸媒介)。硬體上的範疇均在鍊路層的作用範圍之内。

利用 TCP/IP 協定族進行網絡通信時,會通過分層順序與對方進行通信。發送端從應用層往下走,接收端則往應用層往上走。我們用 HTTP 舉例來說明,

首先作為發送端的用戶端在應用層(HTTP 協定)發出一個想看某個 Web 頁面的 HTTP 請求。                                                                  接着,為了傳輸友善,在傳輸層(TCP 協定)把從應用層處收到的資料(HTTP 請求封包)進行分割,并在各個封包上打上标記序号及端 口号後轉發給網絡層。                                                                                                                                                                                      在網絡層(IP 協定),增加作為通信目的地的 MAC 位址後轉發給鍊路層。這樣一來,發往網絡的通信請求就準備齊全了。                      接收端的伺服器在鍊路層接收到資料,按序往上層發送,一直到應用層。當傳輸到應用層,才能算真正接收到由用戶端發送過來的 HTTP

請求。 

圖解HTTP協定學習01

IP、TCP和DNS

負責傳輸的 IP 協定

按層次分,IP(Internet Protocol)網際協定位于網絡層。InternetProtocol 這個名稱可能聽起來有點誇張,但事實正是如此,因為幾乎所有使用網絡的系統都會用到 IP 協定。TCP/IP 協定族中的 IP 指的就是網際協定,協定名稱中占據了一半位置,其重要性可見一斑。可能有人會把“IP”和“IP 位址”搞混,“IP”其實是一種協定的名稱。IP 協定的作用是把各種資料包傳送給對方。而要保證确實傳送到對方那裡,則需要滿足各類條件。其中兩個重要的條件是 IP 位址和 MAC位址(Media Access Control Address)。

使用 ARP 協定憑借 MAC 位址進行通信:

IP 間的通信依賴 MAC 位址。在網絡上,通信的雙方在同一區域網路(LAN)内的情況是很少的,通常是經過多台計算機和網絡裝置中轉才能連接配接到對方。而在進行中轉時,會利用下一站中轉裝置的 MAC位址來搜尋下一個中轉目标。這時,會采用 ARP 協定(AddressResolution Protocol)。ARP 是一種用以解析位址的協定,根據通信方的 IP 位址就可以反查出對應的 MAC 位址。

資料的傳輸機制稱為路由選擇,這種機制稱為路由選擇(routing),有點像快遞公司的送貨過程。想要寄快遞的人,隻要将自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發貨,該快遞公司的集散中心檢查貨物的送達位址,明确下站該送往哪個區域的集散中心。接着,那個區域的集散中心自會判斷是否能送到對方的家中。

圖解HTTP協定學習01

確定可靠性的 TCP 協定

按層次分,TCP 位于傳輸層,提供可靠的位元組流服務。

所謂的位元組流服務(Byte Stream Service)是指,為了友善傳輸,将大塊資料分割成以封包段(segment)為機關的資料包進行管理。而可靠的傳輸服務是指,能夠把資料準确可靠地傳給對方。一言以蔽之,TCP 協定為了更容易傳送大資料才把資料分割,而且 TCP 協定能夠确認資料最終是否送達到對方。確定資料能到達目标為了準确無誤地将資料送達目标處,TCP 協定采用了三次握手(three-way handshaking)政策。用 TCP 協定把資料包送出去後,TCP不會對傳送後的情況置之不理,它一定會向對方确認是否成功送達。

為了準确無誤地将資料送達目标處,TCP 協定采用了三次握手(three-way handshaking)政策。用 TCP 協定把資料包送出去後,TCP

不會對傳送後的情況置之不理,它一定會向對方确認是否成功送達。

握手過程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。

發送端首先發送一個帶 SYN 标志的資料包給對方。接收端收到後,回傳一個帶有 SYN/ACK 标志的資料包以示傳達确認資訊。最後,發

送端再回傳一個帶 ACK 标志的資料包,代表“握手”結束。若在握手過程中某個階段莫名中斷,TCP 協定會再次以相同的順序發送相同的資料包

圖解HTTP協定學習01

負責域名解析的 DNS 服務

DNS(Domain Name System)服務是和 HTTP 協定一樣位于應用層的協定。它提供域名到 IP 位址之間的解析服務。

各種協定與HTTP協定的關系

圖解HTTP協定學習01

URI和URL

URI 是 Uniform Resource Identifier 的縮寫;URI是URL的超集

如下所示均是URI:

  • ftp://ftp.is.co.za/rfc/rfc1808.txt
  • http://www.ietf.org/rfc/rfc2396.txt
  • ldap://[2001:db8::7]/c=GB?objectClass?one
  • mailto:[email protected]
  • news:comp.infosystems.www.servers.unix
  • tel:+1-816-555-1212
  • telnet://192.0.2.16:80/
  • urn:oasis:names:specification:docbook:dtd:xml:4.1.2

URL是我們常見的浏覽器位址比如http://wwwianaorg/assignments/uri-schemes這種

URI格式

圖解HTTP協定學習01