給女朋友講HTTP協議 | 網絡基礎

爲了更好的理解HTTP,我們需要花點時間瞭解一下TCP/IP協議族。

通常使用的網絡是在TCP/IP協議族的基礎上運作的。而HTTP屬於它內部的一個子集。

TCP/IP協議族

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

TCP/IP的分層

把 TCP/IP 層次化是有好處的。比如,如果互聯網只由一個協議統籌,某個地方需要改變計時,就必須把所有部分整體替換掉。而分層之後只需把變動的層替換掉即可。把各層之間的接口部分規劃好之後,每個層次內部的設計就能夠自由改動了。值得一提的是,層次化之後,設計也變得相對簡單了。處於應用層上的應用可以只考慮分派給自己的任務,而不需要弄清對方在地球上哪個地方、對方的傳輸路線是怎樣的、是否能確保傳輸送達等問題。

停留在教學模型階段的OSI七層模型

OSI參考模型:(Open System Interconnect 開放系統互連參考模型)。
在這裏插入圖片描述
(圖片來源:百度百科)

OSI七層模型從上往下分別是:

  • 第7層:應用層。各種應用程序協議,如HTTP、FTP、SMTP、POP3。
  • 第6層:表示層。信息的語法語義以及它們的關聯,如加密解密、轉換翻譯、壓縮解壓縮。
  • 第5層:會話層。不同機器上的用戶之間建立及管理回話。
  • 第4層:傳輸層。接受上一層數據,在必要時把數據進行分割,並將這些數據交給網絡層,且保證這些數據段有效到達對端。
  • 第3層:網絡層。控制子網的運行,如分組傳輸、路由選擇。
  • 第2層:數據鏈路層。物理尋址,同時將原始比特流轉變爲邏輯傳輸線路。
  • 第1層:物理層。機械、電子、定時接口通信信道上的原始比特流傳輸。
  • 這一部分看不懂也沒事,畢竟就是因爲它太複雜導致在實際生產中沒有使用。哈哈哈…

實際使用的四層模型

在這裏插入圖片描述
(圖片來源:百度百科)

TCP/IP 協議族按層次分別分爲以下 4 層:應用層、傳輸層、網絡層和數據鏈路層。

  • 第4層:應用層。應用層決定了向用戶提供應用服務時通信的活動。TCP/IP 協議族內預存了各類通用的應用服務。比如,FTP(FileTransfer Protocol,文件傳輸協議)和 DNS(Domain Name System,域名系統)服務就是其中兩類。HTTP 協議也處於該層。
  • 第3層:傳輸層。傳輸層對上層應用層,提供處於網絡連接中的兩臺計算機之間的數據傳輸。在傳輸層有兩個性質不同的協議:TCP(Transmission ControlProtocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報協議)。
  • 第2層:網絡層。(又名網絡互連層)網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把數據包傳送給對方。與對方計算機之間通過多臺計算機或網絡設備進行傳輸時,網絡層所起的作用就是在衆多的選項內選擇一條傳輸路線。
  • 第1層:數據鏈路層。(鏈路層,網絡接口層)用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的範疇均在鏈路層的作用範圍之內。

通信傳輸流

在這裏插入圖片描述
(圖片來源:百度百科)

發送端在層與層之間傳輸數據時,每經過一層時必定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每經過一層時會把對應的首部消去。這種把數據信息包裝起來的做法稱爲封裝(encapsulate)。

與HTTP關係密切的三個協議

負責傳輸的IP協議

IP(Internet Protocol)網際協議位於網絡層。Internet Protocol這個名字有點恐怖哈,不過IP協議的的確確是很重要的。

IP 協議的作用是把各種數據包傳送給對方。而要保證確實傳送到對方那裏,則需要滿足各類條件。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)。IP 地址指明瞭節點被分配到的地址,MAC 地址是指網卡所屬的固定地址。IP 地址可以和 MAC 地址進行配對。IP 地址可變換,但 MAC地址基本上不會更改。

確保可靠性的TCP協議

TCP 位於傳輸層,提供可靠的字節流服務。

所謂的字節流服務(Byte Stream Service)是指,爲了方便傳輸,將大塊數據分割成以報文段(segment)爲單位的數據包進行管理。而可靠的傳輸服務是指,能夠把數據準確可靠地傳給對方。一言以蔽之,TCP 協議爲了更容易傳送大數據才把數據分割,而且 TCP 協議能夠確認數據最終是否送達到對方。

爲了準確無誤地將數據送達目標處,TCP 協議採用了三次握手(three-way handshaking)策略。用 TCP 協議把數據包送出去後,TCP不會對傳送後的情況置之不理,它一定會向對方確認是否成功送達。握手過程中使用了 TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement)。發送端首先發送一個帶 SYN 標誌的數據包給對方。接收端收到後,回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息。最後,發送端再回傳一個帶 ACK 標誌的數據包,代表“握手”結束。若在握手過程中某個階段莫名中斷,TCP 協議會再次以相同的順序發送相同的數據包。斷開的時候則是採用四次揮手。

負責域名 解析的DNS服務

DNS(Domain Name System)服務是和 HTTP 協議一樣位於應用層的協議。它提供域名到 IP 地址之間的解析服務。
用戶通常使用主機名或域名來訪問對方的計算機,而不是直接通過 IP地址訪問。因爲與 IP 地址的一組純數字相比,用字母配合數字的表示形式來指定計算機名更符合人類的記憶習慣。但要讓計算機去理解名稱,相對而言就變得困難了。因爲計算機更擅長處理一長串數字。爲了解決上述的問題,DNS 服務應運而生。DNS 協議提供通過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章