物理層
數(shù)據(jù)鏈路層
網(wǎng)絡(luò)層
傳輸層
網(wǎng)絡(luò)應(yīng)用模型
應(yīng)用層概述:應(yīng)用層對應(yīng)用程序的通信提供服務(wù)
應(yīng)用層協(xié)議定義:
- 應(yīng)用進(jìn)程交換的報文類型,請求還是響應(yīng)
- 各種報文類型的語法,如報文中的各個字段及其詳細(xì)描述
- 字段的語義,即包含在字段中的信息的含義
- 進(jìn)程何時、如何發(fā)送報文,以及對報文進(jìn)行響應(yīng)的規(guī)則
應(yīng)用層的功能:
- 文件傳輸、訪問和管理
- 電子郵件
- 虛擬終端
- 查詢服務(wù)和遠(yuǎn)程作業(yè)登錄
應(yīng)用層的重要協(xié)議:
- FTP
- SMTP, POP3
- HTTP
- DNS
網(wǎng)絡(luò)應(yīng)用模型
- CS模型
- P2P模型(peer-to-peer)
CS模型
服務(wù)器: 提供計算服務(wù)的設(shè)備。
- 永久提供服務(wù)
- 永久性訪問地址/域名
客戶機: 請求計算服務(wù)的主機
- 與服務(wù)器通信,使用服務(wù)器提供的服務(wù)
- 間歇性接入網(wǎng)絡(luò)
- 可能使用動態(tài)IP地址
- 不與其他客戶機直接通信
應(yīng)用: Web,文件傳輸FTP,遠(yuǎn)程登陸,電子郵件
P2P模型
不存在永遠(yuǎn)在線的服務(wù)器
每個主機既可提供服務(wù)也可以請求服務(wù)
任意端系統(tǒng)/節(jié)點之間可以直接通訊
節(jié)點間歇性接入網(wǎng)絡(luò)
節(jié)點可能改變IP地址
可擴展性好
網(wǎng)絡(luò)健壯性強
域名系統(tǒng)
DNS 是一個分布式數(shù)據(jù)庫,提供了主機名和 IP 地址之間相互轉(zhuǎn)換的服務(wù)。這里的分布式數(shù)據(jù)庫是指,每個站點只保留它自己的那部分?jǐn)?shù)據(jù)。
域名具有層次結(jié)構(gòu),從上到下依次為:根域名、頂級域名、二級域名。
[圖片上傳失敗...(image-2a8137-1585837718710)]

DNS 可以使用 UDP 或者 TCP 進(jìn)行傳輸,使用的端口號都為 53。大多數(shù)情況下 DNS 使用 UDP 進(jìn)行傳輸,這就要求域名解析器和域名服務(wù)器都必須自己處理超時和重傳從而保證可靠性。在兩種情況下會使用 TCP 進(jìn)行傳輸:
- 如果返回的響應(yīng)超過的 512 字節(jié)(UDP 最大只支持 512 字節(jié)的數(shù)據(jù))。
- 區(qū)域傳送(區(qū)域傳送是主域名服務(wù)器向輔助域名服務(wù)器傳送變化的那部分?jǐn)?shù)據(jù))。
文件傳送協(xié)議
FTP 使用 TCP 進(jìn)行連接,它需要兩個連接來傳送一個文件:
- 控制連接:服務(wù)器打開端口號 21 等待客戶端的連接,客戶端主動建立連接后,使用這個連接將客戶端的命令傳送給服務(wù)器,并傳回服務(wù)器的應(yīng)答。
- 數(shù)據(jù)連接:用來傳送一個文件數(shù)據(jù)。
根據(jù)數(shù)據(jù)連接是否是服務(wù)器端主動建立,F(xiàn)TP 有主動和被動兩種模式:
-
主動模式:服務(wù)器端主動建立數(shù)據(jù)連接,其中服務(wù)器端的端口號為 20,客戶端的端口號隨機,但是必須大于 1024,因為 0~1023 是熟知端口號。
image.jpeg 被動模式:客戶端主動建立數(shù)據(jù)連接,其中客戶端的端口號由客戶端自己指定,服務(wù)器端的端口號隨機。

主動模式要求客戶端開放端口號給服務(wù)器端,需要去配置客戶端的防火墻。被動模式只需要服務(wù)器端開放端口號即可,無需客戶端配置防火墻。但是被動模式會導(dǎo)致服務(wù)器端的安全性減弱,因為開放了過多的端口號。
動態(tài)主機配置協(xié)議
DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的連網(wǎng)方式,用戶不再需要手動配置 IP 地址等信息。
DHCP 配置的內(nèi)容不僅是 IP 地址,還包括子網(wǎng)掩碼、網(wǎng)關(guān) IP 地址。
DHCP 工作過程如下:
- 客戶端發(fā)送 Discover 報文,該報文的目的地址為 255.255.255.255:67,源地址為 0.0.0.0:68,被放入 UDP 中,該報文被廣播到同一個子網(wǎng)的所有主機上。如果客戶端和 DHCP 服務(wù)器不在同一個子網(wǎng),就需要使用中繼代理。
- DHCP 服務(wù)器收到 Discover 報文之后,發(fā)送 Offer 報文給客戶端,該報文包含了客戶端所需要的信息。因為客戶端可能收到多個 DHCP 服務(wù)器提供的信息,因此客戶端需要進(jìn)行選擇。
- 如果客戶端選擇了某個 DHCP 服務(wù)器提供的信息,那么就發(fā)送 Request 報文給該 DHCP 服務(wù)器。
-
DHCP 服務(wù)器發(fā)送 Ack 報文,表示客戶端此時可以使用提供給它的信息。
image.png
遠(yuǎn)程登錄協(xié)議
TELNET 用于登錄到遠(yuǎn)程主機上,并且遠(yuǎn)程主機上的輸出也會返回。
TELNET 可以適應(yīng)許多計算機和操作系統(tǒng)的差異,例如不同操作系統(tǒng)系統(tǒng)的換行符定義。
電子郵件協(xié)議
一個電子郵件系統(tǒng)由三部分組成:用戶代理、郵件服務(wù)器以及郵件協(xié)議。
郵件協(xié)議包含發(fā)送協(xié)議和讀取協(xié)議,發(fā)送協(xié)議常用 SMTP,讀取協(xié)議常用 POP3 和 IMAP。
-
SMTP
SMTP 只能發(fā)送 ASCII 碼,而互聯(lián)網(wǎng)郵件擴充 MIME 可以發(fā)送二進(jìn)制文件。MIME 并沒有改動或者取代 SMTP,而是增加郵件主體的結(jié)構(gòu),定義了非 ASCII 碼的編碼規(guī)則。

- POP3
POP3 的特點是只要用戶從服務(wù)器上讀取了郵件,就把該郵件刪除。但最新版本的 POP3 可以不刪除郵件。
- IMAP
IMAP 協(xié)議中客戶端和服務(wù)器上的郵件保持同步,如果不手動刪除郵件,那么服務(wù)器上的郵件也不會被刪除。IMAP 這種做法可以讓用戶隨時隨地去訪問服務(wù)器上的郵件。
常用端口
| 應(yīng)用 | 應(yīng)用層協(xié)議 | 端口號 | 傳輸層協(xié)議 | 備注 |
|---|---|---|---|---|
| 域名解析 | DNS | 53 | UDP/TCP | 長度超過 512 字節(jié)時使用 TCP |
| 動態(tài)主機配置協(xié)議 | DHCP | 67/68 | UDP | |
| 簡單網(wǎng)絡(luò)管理協(xié)議 | SNMP | 161/162 | UDP | |
| 文件傳送協(xié)議 | FTP | 20/21 | TCP | 控制連接 21,數(shù)據(jù)連接 20 |
| 遠(yuǎn)程終端協(xié)議 | TELNET | 23 | TCP | |
| 超文本傳送協(xié)議 | HTTP | 80 | TCP | |
| 簡單郵件傳送協(xié)議 | SMTP | 25 | TCP | |
| 郵件讀取協(xié)議 | POP3 | 110 | TCP | |
| 網(wǎng)際報文存取協(xié)議 | IMAP | 143 | TCP |
Web 頁面請求過程
1. DHCP 配置主機信息
假設(shè)主機最開始沒有 IP 地址以及其它信息,那么就需要先使用 DHCP 來獲取。
主機生成一個 DHCP 請求報文,并將這個報文放入具有目的端口 67 和源端口 68 的 UDP 報文段中。
該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 數(shù)據(jù)報中。
該數(shù)據(jù)報則被放置在 MAC 幀中,該幀具有目的地址 FF:FF:FF:FF:FF:FF,將廣播到與交換機連接的所有設(shè)備。
連接在交換機的 DHCP 服務(wù)器收到廣播幀之后,不斷地向上分解得到 IP 數(shù)據(jù)報、UDP 報文段、DHCP 請求報文,之后生成 DHCP ACK 報文,該報文包含以下信息:IP 地址、DNS 服務(wù)器的 IP 地址、默認(rèn)網(wǎng)關(guān)路由器的 IP 地址和子網(wǎng)掩碼。該報文被放入 UDP 報文段中,UDP 報文段有被放入 IP 數(shù)據(jù)報中,最后放入 MAC 幀中。
該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學(xué)習(xí)能力,之前主機發(fā)送了廣播幀之后就記錄了 MAC 地址到其轉(zhuǎn)發(fā)接口的交換表項,因此現(xiàn)在交換機就可以直接知道應(yīng)該向哪個接口發(fā)送該幀。
主機收到該幀后,不斷分解得到 DHCP 報文。之后就配置它的 IP 地址、子網(wǎng)掩碼和 DNS 服務(wù)器的 IP 地址,并在其 IP 轉(zhuǎn)發(fā)表中安裝默認(rèn)網(wǎng)關(guān)。
2. ARP 解析 MAC 地址
主機通過瀏覽器生成一個 TCP 套接字,套接字向 HTTP 服務(wù)器發(fā)送 HTTP 請求。為了生成該套接字,主機需要知道網(wǎng)站的域名對應(yīng)的 IP 地址。
主機生成一個 DNS 查詢報文,該報文具有 53 號端口,因為 DNS 服務(wù)器的端口號是 53。
該 DNS 查詢報文被放入目的地址為 DNS 服務(wù)器 IP 地址的 IP 數(shù)據(jù)報中。
該 IP 數(shù)據(jù)報被放入一個以太網(wǎng)幀中,該幀將發(fā)送到網(wǎng)關(guān)路由器。
DHCP 過程只知道網(wǎng)關(guān)路由器的 IP 地址,為了獲取網(wǎng)關(guān)路由器的 MAC 地址,需要使用 ARP 協(xié)議。
主機生成一個包含目的地址為網(wǎng)關(guān)路由器 IP 地址的 ARP 查詢報文,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:FF:FF:FF:FF:FF)的以太網(wǎng)幀中,并向交換機發(fā)送該以太網(wǎng)幀,交換機將該幀轉(zhuǎn)發(fā)給所有的連接設(shè)備,包括網(wǎng)關(guān)路由器。
網(wǎng)關(guān)路由器接收到該幀后,不斷向上分解得到 ARP 報文,發(fā)現(xiàn)其中的 IP 地址與其接口的 IP 地址匹配,因此就發(fā)送一個 ARP 回答報文,包含了它的 MAC 地址,發(fā)回給主機。
3. DNS 解析域名
知道了網(wǎng)關(guān)路由器的 MAC 地址之后,就可以繼續(xù) DNS 的解析過程了。
網(wǎng)關(guān)路由器接收到包含 DNS 查詢報文的以太網(wǎng)幀后,抽取出 IP 數(shù)據(jù)報,并根據(jù)轉(zhuǎn)發(fā)表決定該 IP 數(shù)據(jù)報應(yīng)該轉(zhuǎn)發(fā)的路由器。
因為路由器具有內(nèi)部網(wǎng)關(guān)協(xié)議(RIP、OSPF)和外部網(wǎng)關(guān)協(xié)議(BGP)這兩種路由選擇協(xié)議,因此路由表中已經(jīng)配置了網(wǎng)關(guān)路由器到達(dá) DNS 服務(wù)器的路由表項。
到達(dá) DNS 服務(wù)器之后,DNS 服務(wù)器抽取出 DNS 查詢報文,并在 DNS 數(shù)據(jù)庫中查找待解析的域名。
找到 DNS 記錄之后,發(fā)送 DNS 回答報文,將該回答報文放入 UDP 報文段中,然后放入 IP 數(shù)據(jù)報中,通過路由器反向轉(zhuǎn)發(fā)回網(wǎng)關(guān)路由器,并經(jīng)過以太網(wǎng)交換機到達(dá)主機。
4. HTTP 請求頁面
有了 HTTP 服務(wù)器的 IP 地址之后,主機就能夠生成 TCP 套接字,該套接字將用于向 Web 服務(wù)器發(fā)送 HTTP GET 報文。
在生成 TCP 套接字之前,必須先與 HTTP 服務(wù)器進(jìn)行三次握手來建立連接。生成一個具有目的端口 80 的 TCP SYN 報文段,并向 HTTP 服務(wù)器發(fā)送該報文段。
HTTP 服務(wù)器收到該報文段之后,生成 TCP SYN ACK 報文段,發(fā)回給主機。
連接建立之后,瀏覽器生成 HTTP GET 報文,并交付給 HTTP 服務(wù)器。
HTTP 服務(wù)器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 響應(yīng)報文,將 Web 頁面內(nèi)容放入報文主體中,發(fā)回給主機。
瀏覽器收到 HTTP 響應(yīng)報文后,抽取出 Web 頁面內(nèi)容,之后進(jìn)行渲染,顯示 Web 頁面。

