1. 程式人生 > 實用技巧 >【計算機網路】學習筆記,第六篇:應用層(謝希仁版)

【計算機網路】學習筆記,第六篇:應用層(謝希仁版)

一 DNS 域名系統

(一) 概述

許多應用層軟體經常直接使用域名系統 DNS (Domain Name System),但計算機的使用者只是間接而不是直接使用域名系統。

網際網路採用層次結構的命名樹作為主機的名字,並使用分散式的域名系統 DNS。

  • 名字到 IP 地址的解析是由若干個域名伺服器程式完成的。域名伺服器程式在專設的結點上執行,執行該程式的機器稱為域名伺服器

網際網路採用了層次樹狀結構的命名方法。
任何一個連線在網際網路上的主機或路由器,都有一個唯一的層次結構的名字,即域名。

域名的結構由標號序列組成,各標號之間用點隔開:

… . 三級域名 . 二級域名 . 頂級域名
各標號分別代表不同級別的域名。

(二) 常見域名

(1) 國家頂級域名 nTLD

  • .cn 表示中國,
  • .us 表示美國,
  • .uk 表示英國,等等。

(2) 通用頂級域名 gTLD

最早的頂級域名是:

  • .com (公司和企業)
  • .net (網路服務機構
  • .org (非贏利性組織)
  • .edu (美國專用的教育機構)
  • .gov (美國專用的政府部門)
  • .mil (美國專用的軍事部門)
  • .int (國際組織)

新增的通用頂級域名:

  • .aero (航空運輸企業)
  • .biz (公司和企業)
  • .cat (加泰隆人的語言和文化團體)
  • .coop (合作團體)
  • .info (各種情況)
  • .jobs (人力資源管理者)
  • .mobi (移動產品與服務的使用者和提供者)
  • .museum (博物館)
  • .name (個人)
  • .pro (有證書的專業人員)
  • .travel (旅遊業)

(三) 網際網路的域名空間

(四) 域名解析過程

主機向本地域名伺服器的查詢一般都是採用遞迴查詢。如果主機所詢問的本地域名伺服器不知道被查詢域名的 IP 地址,那麼本地域名伺服器就以 DNS 客戶的身份,向其他根域名伺服器繼續發出查詢請求報文。

本地域名伺服器向根域名伺服器的查詢通常是採用迭代查詢。當根域名伺服器收到本地域名伺服器的迭代查詢請求報文時,要麼給出所要查詢的 IP 地址,要麼告訴本地域名伺服器:“你下一步應當向哪一個域名伺服器進行查詢”。然後讓本地域名伺服器進行後續的查詢。

本地域名伺服器採用迭代查詢

本地域名伺服器採用遞迴查詢(比較少用)

二 FTP 協議

(一) 概述

檔案傳送協議 FTP (File Transfer Protocol) 是網際網路上使用得最廣泛的檔案傳送協議。

FTP 提供互動式的訪問,允許客戶指明檔案的型別與格式,並允許檔案具有存取許可權。

FTP 遮蔽了各計算機系統的細節,因而適合於在異構網路中任意計算機之間傳送檔案。

(二) 網路環境下複製檔案的複雜性:

  • 計算機儲存資料的格式不同
  • 檔案的目錄結構和檔案命名的規定不同。
  • 對於相同的檔案存取功能,作業系統使用的命令不同。
  • 訪問控制方法不同。 製出的檔案系統多達數百種,且差別很大。

FTP 協議也因此被應用

(三) 特點

  • 檔案傳送協議 FTP 只提供檔案傳送的一些基本的服務,它使用 TCP 可靠的運輸服務。
  • FTP 的主要功能是減少或消除在不同作業系統下處理檔案的不相容性。
  • FTP 使用客戶伺服器方式。一個 FTP 伺服器程序可同時為多個客戶程序提供服務。FTP 的伺服器程序由兩大部分組成:一個主程序,負責接受新的請求;另外有若干個從屬程序,負責處理單個請求。

(四) 工作步驟

  • 開啟熟知埠(埠號為 21),使客戶程序能夠連線上。
  • 等待客戶程序發出連線請求。
  • 啟動從屬程序來處理客戶程序發來的請求。從屬程序對客戶程序的請求處理完畢後即終止,但從屬程序在執行期間根據需要還可能建立其他一些子程序。
  • 回到等待狀態,繼續接受其他客戶程序發來的請求。主程序與從屬程序的處理是併發地進行。
  • 當客戶程序向伺服器程序發出建立連線請求時,要尋找連線伺服器程序的熟知埠 (21),同時還要告訴伺服器程序自己的另一個埠號碼,用於建立資料傳送連線。
  • 接著,伺服器程序用自己傳送資料的熟知埠 (20) 與客戶程序所提供的埠號碼建立資料傳送連線。
  • 由於 FTP 使用了兩個不同的埠號,所以資料連線與控制連線不會發生混亂。

使用兩個不同埠號的好處

  • 使協議更加簡單和更容易實現。
  • 在傳輸檔案時還可以利用控制連線(例如,客戶傳送請求終止傳輸)。

(五) 簡單檔案傳送協議 TFTP

  • TFTP (Trivial File Transfer Protocol) 是一個很小且易於實現的檔案傳送協議。
  • TFTP 使用客戶伺服器方式和使用 UDP 資料報,因此 TFTP 需要有自己的差錯改正措施。
  • TFTP 只支援檔案傳輸而不支援互動。
  • TFTP 沒有一個龐大的命令集,沒有列目錄的功能,也不能對使用者進行身份鑑別。

簡單瞭解

三 遠端終端協議 TELNET

  • TELNET 是一個簡單的遠端終端協議,也是網際網路的正式標準。
  • 使用者用 TELNET 就可在其所在地通過 TCP 連線註冊(即登入)到遠地的另一個主機上(使用主機名或 IP 地址)。
  • TELNET 能將使用者的擊鍵傳到遠地主機,同時也能將遠地主機的輸出通過 TCP 連線返回到使用者螢幕。這種服務是透明的,因為使用者感覺到好像鍵盤和顯示器是直接連在遠地主機上。

現在由於 PC 的功能越來越強,使用者已較少使用 TELNET 了。
TELNET 也使用客戶伺服器方式。在本地系統執行 TELNET 客戶程序,而在遠地主機則執行 TELNET 伺服器程序。
和 FTP 的情況相似,伺服器中的主程序等待新的請求,併產生從屬程序來處理每一個連線。

四 HTTP協議

HTTP (HyperText Transfer Protocol) 超文字傳輸協議,它是一個簡單的請求-響應協議 ,它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應 ,所有的WWW檔案都遵循這個標準,它是TCP/IP中的一個應用層協議

(一) 怎麼理解 HTTP 協議呢?

當我們在瀏覽器位址列上輸入URL後,瀏覽器會通過DNS解析到對應IP上,瀏覽器而根據這個IP將IP地址與Web伺服器進行通訊,這個通訊的協議就是HTTP協議,說白了,HTTP協議就是規定了客戶端和伺服器端之間通訊的一種規範和格式,只有兩者都遵循這個協議,兩者在接受和響應請求的時候才能達到一致

(二) HTTP請求

瀏覽器向伺服器請求某個web資源,稱瀏覽器向伺服器傳送了一個http請求(客戶端 --> 伺服器)

請求格式:

1、請求首行

2、請求頭

3、空行

4、請求體(或稱之為請求正文)

(1) 請求行

常見的請求方法有GET和POST

在瀏覽器位址列中傳送請求,以及點選超連結都是GET請求

提交表單既可以使用GET,也可以使用POST方式,推薦使用POST方式查詢資料的時候推薦使用GET方式

GET:沒有請求體,但空行是存在的,附帶的引數有限制,資料容量不能超過1k

POST:存在請求體,可以在請求的實體內容中向伺服器傳送資料,傳送的資料量是無限制的

(2) 請求頭

  • Accept-Charset: ISO-8859-1 :客戶端告訴伺服器,所支援的字符集格式

  • Accept-Encoding: gzip,deflate,br :客戶端告訴伺服器,所支援的壓縮格式

  • Accept-Language: en-us,zh-cn :客戶端告訴伺服器,它的語言環境

  • Connection: close/Keep-Alive :客戶端告訴伺服器,請求完後是斷開連結或保持連結

  • Cookie :客戶端告訴伺服器,所帶來的的cookie(後面講)

  • Host:xxxxxx :客戶端告訴伺服器,想訪問哪臺主機

  • User-Agent :User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36:表示瀏覽器核心

  • Referer :xxxxx:客戶端告訴伺服器,客戶機從哪個頁面來的,防盜鏈,前發出請求的地址,例如在瀏覽器位址列直接訪問伺服器,那麼沒有這個請求頭。如果是在www.baidu.com頁面上點選連結訪問的伺服器,那麼這個頭的值www.baidu.com

  • Content-Type:如果是POST請求,會有這個頭,預設值為application/x-www-form-urlencoded,表示請求體內容使用url編碼

(三 ) HTTP響應

一個HTTP響應代表伺服器向客戶端回送資料

響應格式:

1、響應首行

2、響應頭

3、空行

4、響應體(或稱之為響應正文)

(1) 狀態行

格式:HTTP版本號 狀態碼 原因

狀態行:HTTP/1.1 200 OK

狀態碼

響應首行的結構:協議及版本 狀態碼 狀態碼說明,例如:HTTP/1.1 200 OK

狀態碼 解釋
200 請求成功
302 請求重定向
304 請求資源沒有改變
404 請求資源補不存在,屬性客戶端錯誤
500 伺服器內部錯誤

(2) 響應頭

  • Content-Type:響應正文的MIME型別,例如image/jpeg表示響應正文為jpg圖片,例如text/html;charset=utf-8表示響應正文為html,並且編碼為utf-8編碼。瀏覽器會通過這一資訊來顯示響應資料
  • Content-Length:響應正文的長度
  • Set-Cookie:伺服器告訴客戶端要儲存Cookie
  • Date:響應時間,可能會有8小時的誤差,因為中國的時區問題

通知客戶端瀏覽器不要快取頁面的響應頭:

  • Expires:-1
  • Cache-Control: no-cache
  • Pragma: no-cache

自動重新整理響應頭,瀏覽器會在3秒鐘後自動重定向到傳智主頁

  • Refresh: 3;url=http://www.xxxx

狀態碼304

相關頭資訊

  • Last-Modified:響應頭,表示當前資源的最後修改時間;
  • If-Modified-Since:請求頭,表示快取的資源最後修改時間;

狀態碼304:表示訪問的資源沒有改變

  1. 客戶端首次訪問伺服器的靜態資源index.html,伺服器會把index.html響應給客戶端,而且還會新增一個名為Last-Modified的響應頭,它說明了當前index.html的最後修改時間

  2. 客戶端收到響應後,會把index.html快取在客戶端上,而且還會把Last-Modified快取起來。

  3. 客戶端第二次請求index.html時,會新增名為If-Modified-Since的請求頭,它的值是上次伺服器響應頭Last-Modified,伺服器獲取到客戶端儲存的最後修改時間,以及當前資源的最後修改時間進行比較,如果相同,說明index.html沒有改動過,那麼伺服器不會發送index.html,而是響應狀態碼304,即通知客戶端資源沒有改變,你可以使用自己的快取。

五 電子郵件協議SMTP、POP3、IMAP

  • 簡單郵件傳送協議:SMTP
  • 通用網際網路郵件擴充 MIME
  • 郵件讀取協議:POP3 和 IMAP
  • 發信人的使用者代理向源郵件伺服器傳送郵件,以及源郵件伺服器向目的郵件伺服器傳送郵件,都是使用 SMTP 協議。
  • 而 POP 協議或 IMAP 協議則是使用者從目的郵件伺服器上讀取郵件所使用的協議

六 動態主機配置協議 DHCP

為了將軟體協議做成通用的和便於移植,協議軟體的編寫者把協議軟體引數化。這就使得在很多臺計算機上使用同一個經過編譯的二進位制程式碼成為可能

一臺計算機和另一臺計算機的區別,都可通過一些不同的引數來體現。

在軟體協議執行之前,必須給每一個引數賦值。

在協議軟體中給這些引數賦值的動作叫做協議配置。

網際網路廣泛使用的動態主機配置協議 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用連網 (plug-and-play networking) 的機制。

並不是每個網路上都有 DHCP 伺服器,這樣會使 DHCP 伺服器的數量太多。現在是每一個網路至少有一個 DHCP 中繼代理,它配置了 DHCP 伺服器的 IP 地址資訊。

七 簡單網路管理協議 SNMP

網路管理包括對硬體、軟體和人力的使用、綜合與協調,以便對網路資源進行監視、測試、配置、分析、評價和控制,這樣就能以合理的價格滿足網路的一些需求,如實時執行效能,服務質量等。網路管理常簡稱為網管。

含義:

  • 網路管理協議簡稱為網管協議。
  • 需要注意的是,並不是網管協議本身來管理網路。網管協議是管理程式和代理程式之間進行通訊的規則。

模式體現:

  • 簡單網路管理協議SNMP (Simple Network Management Protocol) 中的管理程式和代理程式按客戶–伺服器方式工作。
  • 管理程式執行 SNMP 客戶程式,向某個代理程式發出請求(或命令),代理程式執行 SNMP 伺服器程式,返回響應(或執行某個動作)。
  • 在網管系統中,往往是一個(或少數幾個)客戶程式與很多的伺服器程式進行互動。

基本功能:

  • SNMP 最重要的指導思想就是要儘可能簡單
  • SNMP 的基本功能包括監視網路效能、檢測分析網路差錯和配置網路裝置等。