應用層我們前面介紹過 TCP/IP 模型的下三層,分別是網(wǎng)絡接入層、網(wǎng)絡層和傳輸層。它們都是為應用層服務的,傳輸應用層的各種數(shù)據(jù),現(xiàn)在我們就來看看最高層的應用層。 在 TCP/IP 模型中,應用層提供的服務相當于 OSI 模型的應用層、表示層和會話層的服務總和。不僅包含了管理通信連接的會話層功能、數(shù)據(jù)格式轉(zhuǎn)換的表示層功能,還包括主機間交互的應用層功能。 應用層的目的是向應用程序提供網(wǎng)絡接口,直接向用戶提供服務。相比于下層的網(wǎng)絡協(xié)議,應用協(xié)議要常見得多,可能大家都聽過 HTTP 、HTTPS 、SSH 等應用層協(xié)議。 TCP/IP 模型中應用層位于傳輸層之上,傳輸層的端口號用于標識數(shù)據(jù)所對應的應用層協(xié)議。也就是說,有端口號的協(xié)議都是應用層協(xié)議。應用協(xié)議是終端設備之間的應用通信規(guī)則。應用之間交互的信息叫消息,應用協(xié)議定義這些消息的格式以及消息的控制或操作的規(guī)則。 應用協(xié)議的通信方式可分為兩類:
在服務器和客戶端模型中,始終公開固定 IP 地址的主機為其它主機的應用程序提供服務,請求服務的主機之間不會互相通信。這些為其它主機提供服務的終端設備稱為服務器,那些請求服務的主機則稱為客戶端。大多數(shù)應用層協(xié)議,都是這種模型。 在 P2P 模型中,沒有特定的服務器或客戶端,這些設備上安裝的應用程序,可以在主機間建立對等連接,既可以提供服務,也可以接受服務。通常是大流量的應用程序采用 P2P 模型,比如:下載器等。 開發(fā)應用程序時,為了實現(xiàn)相應的功能和目的,可以使用現(xiàn)有的應用協(xié)議,也可以自己定義一個新的應用協(xié)議。同時,應用程序可以直接使用傳輸層以下的網(wǎng)絡傳輸服務,開發(fā)者只需要關心選擇哪種應用協(xié)議、如何開發(fā)即可,而不用考慮數(shù)據(jù)是如何傳輸?shù)侥康牡?。這也是 TCP/IP 分層模型的特點。 應用程序有很多,包括 Web 瀏覽器、電子郵件、遠程登錄、文件傳輸、網(wǎng)絡管理等。這些應用程序都會使用應用協(xié)議進行通信,應用協(xié)議正是為了實現(xiàn)應用程序的功能而設計和創(chuàng)造的。 遠程登錄網(wǎng)絡設備的管理方式,分為本地管理和遠程管理。遠程管理是從本地主機登錄到網(wǎng)絡對端設備,向網(wǎng)絡對端的設備發(fā)送管理數(shù)據(jù),以實現(xiàn)設備管理的操作方式。通過遠程管理,不僅可以直接使用主機上的應用,還可以對主機進行參數(shù)設置。遠程登錄主要使用 Telnet 和 SSH 兩種協(xié)議管理網(wǎng)絡設備。
Telnet在實際工作中,除了個別無法遠程管理設備外,大多會采用遠程管理的方式,來管理設備的配置文件和系統(tǒng)文件。對比本地管理,遠程管理不受物理位置限制,連上網(wǎng)絡就可以對世界另一端的設備進行操控,更省去了插拔設備線纜、終端設置的過程,可以通過一個遠程應用同時管理大量的網(wǎng)絡設備。 Telnet 協(xié)議定義了一臺設備通過 IP 網(wǎng)絡向遠端設備發(fā)起明文管理連接的通信標準,可以在一臺設備上通過 Telnet 協(xié)議與一臺遠端設備建立管理連接,并對遠端設備實施配置和監(jiān)控,這種方式的體驗與本地登錄設備并無區(qū)別。發(fā)起管理的設備為 Telnet 客戶端,被管理的設備是 Telnet 服務器。因此,Telnet 協(xié)議是一個典型的服務器和客戶端模型的應用層協(xié)議。 ![]() Telnet 協(xié)議通過 TCP 協(xié)議建立服務器和客戶端的一條連接,并通過這條連接向服務器發(fā)送用戶名、密碼和命令。Telnet 協(xié)議使用的是 TCP 23 端口,表示客戶端在發(fā)起 Telnet 連接時,默認連接服務器的 TCP 23 號端口。 當 Telnet 客戶端輸入命令后,這些命令通過 TCP 連接發(fā)送到 23 號端口,監(jiān)聽請求的守護進程 Telnetd 收到后,將命令發(fā)送給 Shell ,Shell 為操作系統(tǒng)進行命令解釋,然后操作系統(tǒng)執(zhí)行 Telnet 客戶端發(fā)出的命令。同理,操作系統(tǒng)按照相反的順序,將命令執(zhí)行的結(jié)果發(fā)回給 Telnet 客戶端。 Telnet 協(xié)議實現(xiàn)了遠程命令傳輸,但是客戶端和服務器跨越不可靠的公共網(wǎng)絡時,在命令傳輸過程中可以截獲 Telnet 通信的所有數(shù)據(jù),然后使用截獲的用戶名和密碼來通過 Telnet 服務器的身份認證,并登錄到設備上對配置文件進行修改。 ![]() Telnet 協(xié)議存在重大安全隱患,不推薦在實驗室之外的環(huán)境使用。 SSHSSH 協(xié)議全程是安全外殼協(xié)議,目的就是為了取代 Telnet ,SSH 是加密的遠程登錄協(xié)議,提供更加安全的遠程登錄服務。使用 SSH 后會加密通信內(nèi)容。即使信息被截獲,由于無法解密,也無法了解數(shù)據(jù)的真正內(nèi)容。 ![]() SSH 協(xié)議常用版本是 SSHv2 ,SSH 客戶端通過 SSHv2 協(xié)議與 SSH 服務器建立一條 TCP 的加密信道,建立這條安全信道的方式是讓客戶端使用服務器的 RSA 公鑰來驗證 SSH 服務器的身份。SSH 協(xié)議默認使用 TCP 22 端口。 如果客戶端成功驗證了服務器的身份,它們之間就會創(chuàng)建出一個會話密鑰,并用雙方協(xié)商出來的加密算法和會話密鑰,對這個信道傳輸?shù)臄?shù)據(jù)進行加密。這樣,兩臺設備之間就建立了一條安全的信道,使用這條安全信道發(fā)送密碼,密碼以密文的形式傳輸,通過服務器的身份認證。SSH 就是通過這種方式建立加密信道,確保 SSH 服務器,也就是被管理設備的 Shell 免遭非法用戶操作。 文件傳輸除了遠程登錄,我們還需要從遠端設備傳輸文件,文件傳輸協(xié)議提供的應用服務可以滿足我們的需求。FTP 是網(wǎng)絡上文件傳輸?shù)臉藴蕝f(xié)議,F(xiàn)TP 使用 TCP 作為傳輸協(xié)議,支持用戶的登錄認證和訪問權(quán)限的控制。另一種常見的文件傳輸協(xié)議是 TFTP 協(xié)議,TFTP 是一種簡單的文件傳輸協(xié)議,不支持用戶的登錄認證,也沒有復雜的命令。TFTP 使用 UDP 作為傳輸協(xié)議,并有重傳機制。 ![]() FTPFTP 用于服務器和客戶端之間傳輸文件,是 IP 網(wǎng)絡上傳輸文件的通用協(xié)議。FTP 采用客戶端和服務器的模式,使用 TCP 協(xié)議提供可靠傳輸。FTP 可以對登錄服務器的用戶名和密碼進行驗證,允許客戶端指定文件的傳輸類型,并且可以設置文件的傳輸權(quán)限。 FTP 使用兩條 TCP 連接實現(xiàn)文件傳輸。一條是 FTP 控制連接,用來控制管理;另一條是 FTP 數(shù)據(jù)連接,用于數(shù)據(jù)傳輸。FTP 控制連接用于傳輸 FTP 控制命令和命令執(zhí)行的應答信息,比如登錄用戶名和密碼的驗證、發(fā)送文件的名稱、發(fā)送方式的設置。這條連接在整個 FTP 會話過程中一直保持打開,通過 ASCII 碼字符串發(fā)送請求和接收應答。在控制連接上無法發(fā)送數(shù)據(jù),而 FTP 數(shù)據(jù)連接用于文件和文件列表的傳輸,僅在需要傳輸數(shù)據(jù)時建立數(shù)據(jù)連接,數(shù)據(jù)傳輸完畢后終止。 ![]() FTP 控制連接使用的是 TCP 21 號端口,也是 FTP 服務器的偵聽端口,等待客戶端的連接。在 TCP 21 號端口進行文件 GET( RETR )、PUT( STOR ),以及文件表( LIST )等操作時,每次都會建立一個用于數(shù)據(jù)傳輸?shù)臄?shù)據(jù)連接。數(shù)據(jù)和文件表的傳輸正式在這個數(shù)據(jù)連接上進行的。 數(shù)據(jù)連接的 TCP 連接通常使用端口 20 。也可以使用 PORT 命令修改為其它值。 相同的一個文件,不同的操作系統(tǒng)可能有不同的存儲方式。為了確保文件能夠準確的傳送給對方,常用 2 中傳輸模式:
在 FTP 數(shù)據(jù)連接過程中,有兩種數(shù)據(jù)傳輸方式:主動方式和被動方式。 FTP 主動傳輸方式,也稱為 PORT 方式。采用主動方式建立數(shù)據(jù)連接時,F(xiàn)TP 客戶端會通過 FTP 控制連接向 FTP 服務器發(fā)送 PORT 命令,PORT 命令攜帶參數(shù):A1 、A2 、A3 、A4 、P1 、P2 ,其中 A1 、A2 、A3 、A4 表示需要建立數(shù)據(jù)連接的主機 IP 地址,而 P1 和 P2 表示客戶端用于傳輸數(shù)據(jù)的臨時端口號,臨時端口號的數(shù)值為 256*P1+P2 。當需要傳輸數(shù)據(jù)時,服務器通過 TCP 端口號 20 與客戶端提供的臨時端口建立數(shù)據(jù)傳輸通道,完成數(shù)據(jù)傳輸。在整個過程中,由于服務器在建立數(shù)據(jù)連接時主動發(fā)起連接,因此被稱為主動模式。 ![]() 如果客戶端在防火墻內(nèi)部,主動方式可能會有問題,因為客戶端的端口號是隨機的,防火墻并不知道。默認安全策略,防火墻只會允許外部主機訪問部分內(nèi)部已知端口,阻斷對內(nèi)部隨機端口的訪問,從而無法建立 FTP 數(shù)據(jù)連接。這時,就需要使用 FTP 被動方式來進行文件傳輸。 被動方式也被稱為 PASV 方式。FTP 控制通道建立后,希望通過被動方式建立數(shù)據(jù)傳輸通道的 FTP 客戶端會利用控制通道向 FTP 服務器發(fā)送 PASV 命令,告訴服務器進入被動方式傳輸。服務器選擇臨時端口號并告知客戶端,命令參數(shù)和主動傳輸方式一致。當需要傳輸數(shù)據(jù)時,客戶端主動與服務器的臨時端口建立數(shù)據(jù)傳輸通道,并完成數(shù)據(jù)傳輸。在整個過程中,服務器是被動接收客戶端的數(shù)據(jù)連接,所以被稱為被動模式。 ![]() 采用被動方式時,兩個連接都由客戶端發(fā)起。一般防火墻不會限制內(nèi)部的客戶端發(fā)起的連接,這樣就解決了主動方式下的問題。 TFTPTFTP 也是用于服務器和客戶端之間傳輸文件的,對比 FTP ,TFTP 沒有復雜的交互接口和認證控制,適用于不需要復雜交互的網(wǎng)絡環(huán)境。 TFTP 采用客戶端和服務器的模式,使用 UDP 協(xié)議傳輸,服務器使用端口號 69 偵聽 TFTP 連接。由于 UDP 不能提供可靠的數(shù)據(jù)傳輸,因此 TFTP 使用超時重傳機制確保數(shù)據(jù)正確發(fā)送。TFTP 只能提供簡單的文件傳輸能力,包括文件的上傳和下載。不支持文件目錄功能,也不能對用戶的身份進行驗證和授權(quán)。 ![]() TFTP 協(xié)議傳輸是由客戶端發(fā)起的。當需要下載文件時,客戶端向 TFTP 服務器發(fā)送一個讀請求,然后從服務器接收數(shù)據(jù),并向服務器發(fā)送確認;當需要上傳文件時,由客戶端向服務器發(fā)送一個寫請求,然后向服務器發(fā)送數(shù)據(jù),并接收服務器的確認。 ![]() 與 FTP 類似,TFTP 傳輸文件有兩種模式:netascii 模式和 octet 模式。octet 傳輸模式對應 FTP 的二進制流模式,用于傳輸程序文件;netascii 模式對應 FTP 的 ASCII 模式,用于傳輸文本文件。 TFTP 進行文件傳輸時,將傳輸文件看成是由多個連續(xù)的文件塊組成。每一個 TFTP 數(shù)據(jù)報文中包含一個文件塊,同時對應一個文件塊編號。每次發(fā)完一個文件塊后,就等待對方的確認,確認時指明塊編號。發(fā)送方發(fā)完數(shù)據(jù)后,如果在規(guī)定時間內(nèi)沒收到對端的確認,那么發(fā)送方就會重新發(fā)送數(shù)據(jù)。發(fā)送確認的一方如果在規(guī)定時間內(nèi)沒收到下一個文件塊數(shù)據(jù),則重發(fā)確認報文。這種方式可以確保文件的傳送不會因某一個數(shù)據(jù)的丟失而失敗。 每次 TFTP 發(fā)送的數(shù)據(jù)報文中包含的文件塊大小固定為 電子郵件電子郵件,顧名思義,就是指網(wǎng)絡上的郵政。通過電子郵件,可以發(fā)送文字內(nèi)容、圖片,還可以發(fā)送報表數(shù)據(jù)等所有計算機可以存儲的信息。電子郵件不受距離限制,可以與世界上任一的互聯(lián)網(wǎng)用戶互相聯(lián)系。由于使用簡易、投遞迅速、易于保存、不受距離限制等特點,使得電子郵件已經(jīng)成為人們普遍使用的一種應用。 ![]()
通信架構(gòu)電子郵件在幾十年的發(fā)展過程中出現(xiàn)了明顯的變化,從原始的發(fā)送方電腦直接向接收方電腦發(fā)送電子郵件,演變成收發(fā)雙方都使用郵件服務器代為收發(fā)郵件。通過這種方式,電子郵件通信不再依賴接收方當前是否在線,而電子郵件的通信過程由簡單的發(fā)送方到接收方,演變成發(fā)送方電腦到發(fā)送方郵件服務器,發(fā)送方郵件服務器到接收方郵件服務器,以及接收方郵件服務器到接收方電腦的三個通信過程。并且參與通信的四方都不是直接相連,而是分別獨立連接到互聯(lián)網(wǎng)中。這個架構(gòu)中,郵件發(fā)送方和接收方使用的電腦稱為用戶代理。 ![]() 郵件地址使用電子郵件時,需要擁有一個地址,這個地址叫做郵件地址,也叫郵箱地址。它相當于通信地址和姓名。我的電子郵件如下: networkfox@qq.com networkfox 表示用戶的名稱,同一個通信地址內(nèi),名稱必須是唯一的,不能出現(xiàn)重復;@ 表示分隔符;qq.com 是用戶郵箱的郵件接收服務器的域名。 電子郵件的發(fā)送地址由 DNS 管理。DNS 中注冊了郵件地址和對應郵件服務器的域名。這些映射信息被稱為 MX 記錄。比如:qq.com 的 MX 記錄中指定了 mail.qq.com。那么任何發(fā)送給 qq.com 結(jié)尾的郵件都被發(fā)送到 mail.qq.com 服務器。就這樣,根據(jù) MX 記錄中指定的郵件服務器,可以管理不同郵件地址與特定郵件服務器之間的映射關系。 SMTP 協(xié)議提供電子郵件服務的協(xié)議叫做 SMTP 。SMTP 用于收發(fā)雙方的郵件服務器之間,而不是用戶代理和郵件服務器之間的通信方式。在實際使用中,發(fā)送方用戶代理與發(fā)送方服務器之間也常采用 SMTP 協(xié)議。 ![]() SMTP 為了實現(xiàn)高效發(fā)送郵件內(nèi)容,在傳輸層使用了 TCP 協(xié)議,端口號是 25 。在一臺郵件服務器向另一臺郵件服務器發(fā)送郵件時,首先向?qū)Ψ降?TCP 25 端口發(fā)起一條連接。然后利用這條 TCP 連接發(fā)送控制消息和數(shù)據(jù)。 ![]() 盡管 SMTP 協(xié)議的邏輯簡單,也足以順利完成郵件的傳輸工作,但難免存在一些安全缺陷:
漫天的廣告郵件和包含釣魚鏈接的垃圾郵件成為日益嚴重的問題。為了修正 SMTP 出現(xiàn)的問題,IETF 定義了擴展的 SMTP ,即 ESMTP 。ESMTP 提供的擴展功能中包括認證機制和加密機制等。 在整個郵件傳輸?shù)倪^程中,SMTP/ESMTP 協(xié)議定義了郵件服務器之間的消息傳輸方式。在接收服務器收到電子郵件后,接收方(用戶代理)是如何訪問郵件則需要其它的協(xié)議來處理。 POP3 協(xié)議電子郵件通過 SMTP 協(xié)議到達接收方服務器,個人電腦不可能長期處于開機狀態(tài),用戶希望一開機就能收到郵件,然而 SMTP 沒有這種功能。 為了解決這個問題,就引入了 POP3 協(xié)議。POP3 協(xié)議是用于接收電子郵件的協(xié)議。發(fā)送端的郵件使用 SMTP 協(xié)議將電子郵件轉(zhuǎn)發(fā)給一直在線的 POP3 服務器??蛻舳嗽俑鶕?jù) POP3 協(xié)議從 POP3 服務器接收郵件。這個過程中,為了防止別人盜取郵件內(nèi)容,還要進行用戶認證。 ![]() POP3 協(xié)議和 SMTP 協(xié)議一樣,是基于 TCP 的應用層協(xié)議,使用 TCP 110 端口連接郵件服務器。接收方的郵件客戶端程序首先使用 TCP 連接到 POP3 服務器的 TCP 端口 110 ;再進行用戶認證、郵件列表查詢、郵件下載、郵件刪除等操作;操作完成后,客戶端與郵件服務器之間再斷開 TCP 連接。 ![]() POP3 僅負責郵件的下載,郵件從客戶端上傳到郵件服務器由 SMTP 協(xié)議完成。 IMAP 協(xié)議POP3 協(xié)議的郵件客戶端能夠在郵件服務器上執(zhí)行的操作很少,而且郵件要下載到客戶端本地,而不保留在郵件服務器,實際使用時很不方便。目前使用更廣泛的接收電子郵件的協(xié)議是 IMAP 。在 IMAP 中郵件則由服務器進行管理。 ![]() 使用 IMAP 時,不必從服務器上下載所有的郵件也可以查看。由于 IMAP 是在服務器端處理 MIME 信息,它可以實現(xiàn)郵件附件的選擇性下載功能。比如:一封郵件有 5 個附件時,可以只下載其中的 3 個附件。IMAP 還會在服務器上對 “ 已讀/未讀 ” 信息和郵件分類進行管理,所以在不同的電腦上打開郵箱,也能保持同步,使用起來非常方便。 WWW萬維網(wǎng)( WWW )是將互聯(lián)網(wǎng)的信息以超文本形式展現(xiàn)的系統(tǒng),也叫做 Web ??梢燥@示 WWW 信息的客戶端軟件叫做 Web 瀏覽器,有時簡稱為瀏覽器。目前常用的 Web 瀏覽器包括微軟的 Internet Explorer 、谷歌公司的 Google Chrome 、騰訊公司的 QQ 瀏覽器以及 Apple 公司的 Safari 等。 使用瀏覽器,我們不需要關心信息保存在哪個服務器,只需輕輕點擊鼠標,就可以訪問頁面上的鏈接并打開相關信息。 ![]() 通過瀏覽器進行訪問后,顯示在瀏覽器上的內(nèi)容叫做 Web 頁。訪問一個網(wǎng)站時看到的第一個頁面稱為首頁(又稱為主頁)。很多公司的主頁地址形式如下: http://www.公司名稱.com.cn 這類主頁中通常有公司概況、產(chǎn)品信息、招聘信息等內(nèi)容。我們可以點擊這些標題的圖標或鏈接,就可以跳轉(zhuǎn)到對應的頁面上。這些頁面上的信息不僅僅是文字內(nèi)容,還有圖片或動畫,甚至是聲音或其它程序等各種各樣的信息。我們不但可以通過 Web 頁獲取信息,還可以自己制作 Web 頁向全世界發(fā)布信息。 WWW 有 3 個重要的概念,它們分別是訪問信息的方式和位置( URI )、信息的表現(xiàn)形式( HTML )以及信息傳輸( HTTP )等操作。 URIURI 用于標識資源,是一種高效的識別碼,被應用于主頁地址、電子郵件、電話號碼等。 http://www./rfc/rfc4395.txt http://www.:80/index.html http://localhost:321 通常主頁地址被叫做 URL 。URL 常用來表示網(wǎng)絡資源的具體位置。但是 URI 不限于標識互聯(lián)網(wǎng)資源,可以作為所有資源的標識符。簡單說就是 URL 是 URI 的一個子集。 WWW 主要使用 http 和 https 表示 Web 頁的位置和訪問 Web 頁的方法。http 的具體格式如下: http://主機名/路徑 其中主機名可以用域名或 IP 地址表示,端口號表示傳輸端口號。省略端口號時,表示使用 http 的默認端口 80 。路徑是指主機上信息的位置,訪問內(nèi)容表示要傳給 CGI 的信息,部分信息表示頁面當中的位置等。 這種表示方法可以標識互聯(lián)網(wǎng)中特定的數(shù)據(jù)。由于 http 展現(xiàn)的數(shù)據(jù)隨時都有可能發(fā)生變化,所以記住頁面的 URI( URL ),也不能保證下次能夠訪問到這個頁面。 HTMLHTML 是用來描述 Web 頁的一種語言。它可以指定瀏覽器中顯示的文字、文字的大小和顏色,還可以對圖像、動畫或音頻進行設置。 ![]() 在頁面中 HTML 不僅可以文字或圖片附加鏈接,點擊鏈接時還可以呈現(xiàn)鏈接所指的內(nèi)容。互聯(lián)網(wǎng)中任何一個 WWW 服務器中的信息都可以以鏈接的方式展現(xiàn)。 ![]() HTML 也可以說是 WWW 的數(shù)據(jù)表現(xiàn)協(xié)議。只要是用 HTML 展現(xiàn)的數(shù)據(jù),即使是在不同的計算機上,效果基本上是一樣的。 HTTP當用戶在瀏覽器的地址欄里輸入 Web 頁的 URL 后,HTTP 的處理就開始了。HTTP 默認使用 80 端口。它的工作機制,首先是客戶端向服務器的 80 端口建立一個 TCP 連接,然后在這個 TCP 連接上進行請求和應答以及數(shù)據(jù)報文的發(fā)送。 ![]() HTTP 中常用的有兩個版本,一個是 HTTP 1.0 ,另一個是 HTTP 1.1 。在HTTP 1.0 中每一個命令和應答都會觸發(fā)一次 TCP 連接的建立和斷開。而從 HTTP 1.1 開始,允許在一個 TCP 連接上發(fā)送多個命令和應答,這種方式也叫保持連接( keep-alive )。可以大量減少 TCP 連接的建立和斷開操作,提高傳輸效率。 ![]() 網(wǎng)絡管理應用很多應用層協(xié)議廣為人知,是因為我們在日常上網(wǎng)的過程中,會大量使用與這些應用協(xié)議有關的應用程序,這類應用協(xié)議稱為終端用戶應用協(xié)議;另外還有一些應用協(xié)議在網(wǎng)絡中廣泛使用,但我們對它們卻少有聽聞,最多在網(wǎng)絡無法正常使用時,才會意識到它們的存在,這類應用層協(xié)議稱為系統(tǒng)應用協(xié)議。 在日常工作中,網(wǎng)絡工程師經(jīng)常使用到的系統(tǒng)應用協(xié)議有 DHCP 協(xié)議和 DNS 協(xié)議。 ![]() |
|
|