計算機網路 - 應用層

思思問問發表於2020-11-17

1 網路應用模型

1.1 概述

1.2 網路應用模型

1.2.1 客戶/伺服器模型(Client/Server)

1.2.2 P2P模型(Peer-to-Peer)

在P2P模型中,各計算機沒有固定的客戶和伺服器劃分。相反,任意一一對計算機一稱為對等方(Peer), 直接相互通訊。

2 域名系統DNS

DNS 是一個分散式資料庫,提供了主機名和 IP 地址之間相互轉換的服務。這裡的分散式資料庫是指,每個站點只保留它自己的那部分資料。

2.1 域名

因特網採用層次樹狀結構的命名方法。採用這種命名方法,任何一個連線到因特網的主機或路由器,都有一個唯一的層次結構名稱,即域名(Domain Name)

域名具有層次結構,從上到下依次為:根域名、頂級域名、二級域名。

DNS 可以使用 UDP 或者 TCP 進行傳輸,使用的埠號都為 53。大多數情況下 DNS 使用 UDP 進行傳輸,這就要求域名解析器和域名伺服器都必須自己處理超時和重傳從而保證可靠性。在兩種情況下會使用 TCP 進行傳輸:

  • 如果返回的響應超過的 512 位元組(UDP 最大隻支援 512 位元組的資料)。
  • 區域傳送(區域傳送是主域名伺服器向輔助域名伺服器傳送變化的那部分資料)。

2.2 域名伺服器

因特網的域名系統被設計成一個聯機分散式的資料庫系統,並採用客戶/伺服器模型。DNS伺服器有很多臺,根據層次結構分為三層,根域名伺服器、頂級域名伺服器、許可權域名伺服器。

2.3 域名解析過程

域名解析是指把域名對映成為IP地址或把IP地址對映成域名的過程。前者稱為正向解析,後者稱為反向解析。

  • 當客戶端需要域名解析時,通過本機的DNS客戶端構造一個DNS請求報文,以UDP資料包方式發往本地域名伺服器
  • 域名解析有兩種方式:遞迴查詢遞迴與迭代相結合的查詢。

3 檔案傳送協議FTP

檔案傳輸協議( File Transfer Protocol, FTP)是因特網上使用得最廣泛的檔案傳輸協議。

  • 提供不同種類主機系統(硬、軟體體系等都可以不同)之間的檔案傳輸能力。
  • 以使用者許可權管理的方式提供使用者對遠端FTP伺服器上的檔案管理能力。
  • 以匿名FTP的方式提供公用檔案共享的能力。

FTP 使用 TCP 進行連線,它需要兩個並行連線來傳送一個檔案:

  • 控制連線:伺服器開啟埠號 21 等待客戶端的連線,客戶端主動建立連線後,使用這個連線將客戶端的命令傳送給伺服器,並傳回伺服器的應答。
  • 資料連線:用來傳送一個檔案資料,埠號為20。

根據資料連線是否是伺服器端主動建立,FTP 有主動和被動兩種模式:

  • 主動模式:伺服器端主動建立資料連線,其中伺服器端的埠號為 20,客戶端的埠號隨機,但是必須大於 1024,因為 0~1023 是熟知埠號。

  • 被動模式:客戶端主動建立資料連線,其中客戶端的埠號由客戶端自己指定,伺服器端的埠號隨機。

主動模式要求客戶端開放埠號給伺服器端,需要去配置客戶端的防火牆。被動模式只需要伺服器端開放埠號即可,無需客戶端配置防火牆。但是被動模式會導致伺服器端的安全性減弱,因為開放了過多的埠號。

4 動態主機配置協議DHCP

DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的連網方式,使用者不再需要手動配置 IP 地址等資訊。

DHCP 配置的內容不僅是 IP 地址,還包括子網掩碼、閘道器 IP 地址。

DHCP 工作過程如下:

  1. 客戶端傳送 Discover 報文,該報文的目的地址為 255.255.255.255:67,源地址為 0.0.0.0:68,被放入 UDP 中,該報文被廣播到同一個子網的所有主機上。如果客戶端和 DHCP 伺服器不在同一個子網,就需要使用中繼代理。
  2. DHCP 伺服器收到 Discover 報文之後,傳送 Offer 報文給客戶端,該報文包含了客戶端所需要的資訊。因為客戶端可能收到多個 DHCP 伺服器提供的資訊,因此客戶端需要進行選擇。
  3. 如果客戶端選擇了某個 DHCP 伺服器提供的資訊,那麼就傳送 Request 報文給該 DHCP 伺服器。
  4. DHCP 伺服器傳送 Ack 報文,表示客戶端此時可以使用提供給它的資訊。
計算機網路 - 應用層

5 電子郵件協議

電子郵件是一種非同步通訊方式,通訊時不需要雙方同時在場。電子郵件把郵件傳送到收件人使用的郵件伺服器,並放在其中的收件人郵箱中,收件人可以隨時上網到自己使用的郵件伺服器進行讀取。

一個電子郵件系統由三部分組成:使用者代理、郵件伺服器以及郵件協議

郵件協議包含傳送協議和讀取協議,傳送協議常用 SMTP,讀取協議常用 POP3 和 IMAP。

5.1 簡單郵件傳送協議SMTP

由於SMTP 只能傳送 ASCII 碼,而網際網路郵件擴充 MIME 可以傳送二進位制檔案。MIME 並沒有改動或者取代 SMTP,而是增加郵件主體的結構,定義了非 ASCII 碼的編碼規則。

5.2 郵局協議POP3

POP3 的特點是隻要使用者從伺服器上讀取了郵件,就把該郵件刪除。但最新版本的 POP3 可以不刪除郵件。

5.3 網際報文存取協議IMAP

因特網報文存取協議(IMAP)比POP複雜得多,IMAP為使用者提供了建立資料夾、在不同資料夾之間移動郵件及在遠端資料夾中查詢郵件的命令,為此IMAP伺服器維護了會話使用者的狀態資訊

IMAP的另一特性是允許使用者代理只獲取報文的某些部分,例如可以只讀取一個報文的首部,或一個多部分MIME報文的一部分。

IMAP 協議中客戶端和伺服器上的郵件保持同步,如果不手動刪除郵件,那麼伺服器上的郵件也不會被刪除。IMAP 這種做法可以讓使用者隨時隨地去訪問伺服器上的郵件。

6 全球資訊網和HTTP協議

6.1 全球資訊網概述

全球資訊網(World Wide Web, WWW)是一個資料空間,在這個空間中: 一個有用的事物就被稱為“資源”,並由一個全域“統一資源定位符”(URL)標識。這些資源通過超文字傳輸協議(HTTP)傳送給使用者,通過單擊連結來獲取資源。

6.2 超文字傳輸協議HTTP

HTTP定義了瀏覽器(全球資訊網客戶程式)怎樣向全球資訊網伺服器請求全球資訊網文件,以及伺服器怎樣把文件傳送給瀏覽器。

從層次的角度看,HTTP是面向事務的(Transaction-oriented) 應用層協議,它規定了在瀏覽器和伺服器之間的請求和響應的格式與規則,是全球資訊網上能夠可靠地交換檔案(包括文字、聲音、影像等各種多媒體檔案)的重要基礎。

6.2.1 特點

非持久連線與持久連線都是在TCP建立連線第三次握手時發生

對於非持久連線每個網頁元素物件(如JPEG圖形、Flash 等)的傳輸都需要單獨建立一個TCP連線,如圖所示(第三次握手的報文段中捎帶了客戶對全球資訊網文件的請求)。也就是說,請求一個全球資訊網文件所需的時間是該文件的傳輸時間(與文件大小成正比)加上兩倍往返時間RTT(一個RTT用於TCP連線,另一個RTT用於請求和接收文件)。

持久連線,是指全球資訊網伺服器在傳送響應後仍然保持這條連線,使同一個客戶和伺服器可以繼續在這條連線上傳送後續的HTTP請求與響應報文。

持久連線又分為非流水線流水線兩種方式。
對於非流水線方式,客戶在收到前一個響應後才能發出下一個請求;
HTTP/1.1 的預設方式是使用流水線的持久連線。這種情況下,客戶每遇到一個物件引用就立即發出一個請求,因而客戶可以逐個地連續發出對各個引用物件的請求。如果所有的請求和響應都是連續傳送的,那麼所有引用的物件共計經歷1個RTT延遲,而不是像非流水線方式那樣,每個引用都必須有1個RTT延遲。

6.2.2 HTTP的報文結構

HTTP是面向文字的(Text-Oriented), 因此報文中的每個欄位都是一一些ASCII碼串,並且每個欄位的長度都是不確定的。有兩類HTTP報文:

  • 請求報文——從客戶向伺服器傳送的請求報文
  • 響應報文——從伺服器到客戶的回答

例如:

7 常用埠

應用應用層協議埠號傳輸層協議備註
域名解析DNS53UDP/TCP長度超過 512 位元組時使用 TCP
動態主機配置協議DHCP67/68UDP
簡單網路管理協議SNMP161/162UDP
檔案傳送協議FTP20/21TCP控制連線 21,資料連線 20
遠端終端協議TELNET23TCP
超文字傳送協議HTTP80TCP
簡單郵件傳送協議SMTP25TCP
郵件讀取協議POP3110TCP
網際報文存取協議IMAP143TCP

8 Web 頁面請求過程

8.1 DHCP 配置主機資訊

  • 假設主機最開始沒有 IP 地址以及其它資訊,那麼就需要先使用 DHCP 來獲取。

  • 主機生成一個 DHCP 請求報文,並將這個報文放入具有目的埠 67 和源埠 68 的 UDP 報文段中。

  • 該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 資料包中。

  • 該資料包則被放置在 MAC 幀中,該幀具有目的地址 FF:FF:FF:FF:FF:FF,將廣播到與交換機連線的所有裝置。

  • 連線在交換機的 DHCP 伺服器收到廣播幀之後,不斷地向上分解得到 IP 資料包、UDP 報文段、DHCP 請求報文,之後生成 DHCP ACK 報文,該報文包含以下資訊:IP 地址、DNS 伺服器的 IP 地址、預設閘道器路由器的 IP 地址和子網掩碼。該報文被放入 UDP 報文段中,UDP 報文段有被放入 IP 資料包中,最後放入 MAC 幀中。

  • 該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學習能力,之前主機傳送了廣播幀之後就記錄了 MAC 地址到其轉發介面的交換表項,因此現在交換機就可以直接知道應該向哪個介面傳送該幀。

  • 主機收到該幀後,不斷分解得到 DHCP 報文。之後就配置它的 IP 地址、子網掩碼和 DNS 伺服器的 IP 地址,並在其 IP 轉發表中安裝預設閘道器。

8.2 ARP 解析 MAC 地址

  • 主機通過瀏覽器生成一個 TCP 套接字,套接字向 HTTP 伺服器傳送 HTTP 請求。為了生成該套接字,主機需要知道網站的域名對應的 IP 地址。

  • 主機生成一個 DNS 查詢報文,該報文具有 53 號埠,因為 DNS 伺服器的埠號是 53。

  • 該 DNS 查詢報文被放入目的地址為 DNS 伺服器 IP 地址的 IP 資料包中。

  • 該 IP 資料包被放入一個乙太網幀中,該幀將傳送到閘道器路由器。

  • DHCP 過程只知道閘道器路由器的 IP 地址,為了獲取閘道器路由器的 MAC 地址,需要使用 ARP 協議。

  • 主機生成一個包含目的地址為閘道器路由器 IP 地址的 ARP 查詢報文,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的乙太網幀中,並向交換機傳送該乙太網幀,交換機將該幀轉發給所有的連線裝置,包括閘道器路由器。

  • 閘道器路由器接收到該幀後,不斷向上分解得到 ARP 報文,發現其中的 IP 地址與其介面的 IP 地址匹配,因此就傳送一個 ARP 回答報文,包含了它的 MAC 地址,發回給主機。

8.3 DNS 解析域名

  • 知道了閘道器路由器的 MAC 地址之後,就可以繼續 DNS 的解析過程了。

  • 閘道器路由器接收到包含 DNS 查詢報文的乙太網幀後,抽取出 IP 資料包,並根據轉發表決定該 IP 資料包應該轉發的路由器。

  • 因為路由器具有內部閘道器協議(RIP、OSPF)和外部閘道器協議(BGP)這兩種路由選擇協議,因此路由表中已經配置了閘道器路由器到達 DNS 伺服器的路由表項。

  • 到達 DNS 伺服器之後,DNS 伺服器抽取出 DNS 查詢報文,並在 DNS 資料庫中查詢待解析的域名。

  • 找到 DNS 記錄之後,傳送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然後放入 IP 資料包中,通過路由器反向轉發回閘道器路由器,並經過乙太網交換機到達主機。

8.4 HTTP 請求頁面

  • 有了 HTTP 伺服器的 IP 地址之後,主機就能夠生成 TCP 套接字,該套接字將用於向 Web 伺服器傳送 HTTP GET 報文。

  • 在生成 TCP 套接字之前,必須先與 HTTP 伺服器進行三次握手來建立連線。生成一個具有目的埠 80 的 TCP SYN 報文段,並向 HTTP 伺服器傳送該報文段。

  • HTTP 伺服器收到該報文段之後,生成 TCP SYN ACK 報文段,發回給主機。

  • 連線建立之後,瀏覽器生成 HTTP GET 報文,並交付給 HTTP 伺服器。

  • HTTP 伺服器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 響應報文,將 Web 頁面內容放入報文主體中,發回給主機。

  • 瀏覽器收到 HTTP 響應報文後,抽取出 Web 頁面內容,之後進行渲染,顯示 Web 頁面。

參考

計算機網路

相關文章