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