《計算機網(wǎng)絡(luò):自頂向下方法與Internet特色》——應(yīng)用層

一、應(yīng)用層協(xié)議原理

網(wǎng)絡(luò)應(yīng)用的核心部件是軟件,網(wǎng)絡(luò)的應(yīng)用軟件分布于兩個或以上的端系統(tǒng)中。(例如Web應(yīng)用:運行在用戶主機的瀏覽器軟件和運行在Web服務(wù)器的Web服務(wù)器軟件)。彼此通信的并不是軟件部件本身,而是進(jìn)程。運行在不同端系統(tǒng)的進(jìn)程通過網(wǎng)絡(luò)交換消息彼此通信。

1.應(yīng)用層協(xié)議

1.應(yīng)用層協(xié)議僅僅是網(wǎng)絡(luò)應(yīng)用的一部分。

Web應(yīng)用:一個文檔格式的標(biāo)準(zhǔn)(HTML)/Web瀏覽器軟件(如IE瀏覽器)/Web服務(wù)器軟件(如Microsoft服務(wù)器)/一個應(yīng)用層協(xié)議(HTTP) ?

電子郵件應(yīng)用:郵件服務(wù)器/郵件閱讀器/電子郵件消息結(jié)構(gòu)標(biāo)準(zhǔn)/一個應(yīng)用層協(xié)議(SMTP)

應(yīng)用層協(xié)議定義運行在不同端系統(tǒng)上的應(yīng)用程序進(jìn)程如何彼此傳遞消息。

具體定義了:(1)所傳遞消息的類型(請求消息和響應(yīng)消息);(2)各種消息類型的語法(消息中的各個字段以及如何定界);(3)各個字段的語義;(4)確定一個進(jìn)程何時以及如何發(fā)出消息或響應(yīng)所收到消息的規(guī)則。

2.客戶和服務(wù)器

一個網(wǎng)絡(luò)應(yīng)用協(xié)議通常由客戶端和服務(wù)器端兩個對等的“端”或?qū)嶓w,他們分別對應(yīng)運行客戶程序的客戶進(jìn)程和運行服務(wù)器程序的服務(wù)器進(jìn)程。處于一個端系統(tǒng)中的客戶端和處于另一個端系統(tǒng)中的服務(wù)器端彼此通信。(例如Web瀏覽器實現(xiàn)的是HTTP客戶端,Web服務(wù)器實現(xiàn)的是HTTP服務(wù)器端)我們把發(fā)起會話的主機標(biāo)記為客戶。

3.進(jìn)程間跨網(wǎng)絡(luò)的通信

一個網(wǎng)絡(luò)應(yīng)用涉及兩臺不同主機中跨網(wǎng)絡(luò)彼此通信的兩個進(jìn)程,這兩個進(jìn)程通過各自的套接字(socket)發(fā)送和接收消息彼此通信。(可以把套接字看作相應(yīng)進(jìn)程上的“門”)

套接字是單臺主機內(nèi)應(yīng)用層和傳輸層之間的接口。

應(yīng)用程序開發(fā)人員可以完全控制套接字的應(yīng)用層一側(cè),對于傳輸層一側(cè)卻只能控制:(1)傳輸協(xié)議的選擇;(2)諸如最大緩沖區(qū)大小和最大片段大小等有限幾個傳輸層參數(shù)的調(diào)整。

應(yīng)用程序進(jìn)程、套接字及底層的傳輸協(xié)議

4.進(jìn)程尋址

為了讓發(fā)送進(jìn)程能夠識別接收進(jìn)程,用于標(biāo)識接收進(jìn)程的消息有兩個:(1)接收主機的主機名或主機地址;(2)在接收主機內(nèi)部識別接收進(jìn)程的標(biāo)識符(接收進(jìn)程的端口號)

5.用戶代理(user agent)

用戶代理是一個位于用戶和網(wǎng)絡(luò)應(yīng)用之間的接口。

例如Web應(yīng)用的用戶代理是瀏覽器,瀏覽器使得用戶可以看web頁面,提供表單輸入,與Java小程序交互等等。

2.應(yīng)用所需的服務(wù)

1.可靠性(無數(shù)據(jù)丟失)

2.帶寬(以特定的持續(xù)速率傳送數(shù)據(jù))

3.實時性

一些網(wǎng)絡(luò)應(yīng)用的服務(wù)需求

3.由因特網(wǎng)傳輸協(xié)議提供的服務(wù)

1.TCP服務(wù)

TCP服務(wù)模型包括面向連接的服務(wù)和可靠的數(shù)據(jù)傳輸服務(wù)。TCP還包括一個擁塞控制機制。

面向連接的服務(wù)指客戶端和服務(wù)器端的TCP在開始傳輸應(yīng)用層消息之前,先交換傳輸層控制信息。(TCP連接:全雙工連接/松散方式)

可靠的傳輸服務(wù)指的是彼此通信的進(jìn)程可以依賴TCP無錯地順序遞送所有數(shù)據(jù)。

TCP沒有提供的服務(wù):(1)不保證最小傳輸率,不允許發(fā)送進(jìn)程以想要的任意速率發(fā)送;(2)不提供任何延遲保證

2.UDP服務(wù)

不提供非必要服務(wù)/輕量級傳輸協(xié)議/無連接的/沒有握手過程/提供不可靠數(shù)據(jù)傳輸服務(wù)/不保證消息最終到達(dá)接收套接字的順序/不包含擁塞控制機制/不提供定時保證

流行的因特網(wǎng)應(yīng)用及它們的應(yīng)用層協(xié)議和用以支撐的傳輸協(xié)議

二、Web:HTTP

1.HTTP概貌

Web頁面由多個對象構(gòu)成,對象是可由單個URL尋址的文件如HTML文件、JPEG圖像等。大多數(shù)Web頁面由單個基本HTML文件和若干個所引用的對象構(gòu)成。基本HTML文件使用相應(yīng)的URL來引用本頁面的其他對象。每個URL由存放該對象的服務(wù)器主機名和該對象的路徑名兩部分構(gòu)成。

HTTP定義Web客戶如何從Web服務(wù)器請求頁面,以及服務(wù)器如何把Web頁面?zhèn)魉徒o客戶。

(1)1997年底,實現(xiàn)了RFC 1945中定義的HTTP/1.0版本

(2)1998年底,實現(xiàn)了RFC 2616中定義的HTTP/1.1版本

HTTP把TCP作為底層傳輸協(xié)議。

HTTP是一個無狀態(tài)的協(xié)議(stateless protocol),HTTP服務(wù)器不維護客戶的狀態(tài)信息。

2.非持久連接和持久連接

非持久連接:每次服務(wù)器發(fā)出一個對象后,相應(yīng)的TCP連接就被關(guān)閉,也就是說每個連接都沒有持續(xù)到可用于傳送其他對象。每個TCP連接只用于傳輸一個請求消息和一個響應(yīng)消息。

請求并接收一個HTML文件所需的時間估算

非持久連接每個對象都有2個RTT(round-trip time)的響應(yīng)延長,每個對象都遭受TCP緩啟動(slow start)。

持久連接:服務(wù)器在發(fā)出響應(yīng)后讓TCP連接繼續(xù)打開著,同一對客戶/服務(wù)器之間的后續(xù)請求和響應(yīng)可以通過這個連接發(fā)送。通常,HTTP服務(wù)器在某個連接閑置一段特定時間后關(guān)閉它。(緩啟動延遲比較?。?/p>

不帶流水線(without pipelining)的持久連接:客戶只在收到前一個請求的響應(yīng)后才發(fā)出新的請求。(每個對象都有1個RTT的響應(yīng)延長、空等請求)

帶流水線(with pipelining)的持久連接(HTTP/1.1默認(rèn)):HTTP客戶每碰見一個引用就立即發(fā)出一個請求。(所有引用對象一共只經(jīng)歷1個RTT的延遲)

3.HTTP消息格式

HTTP請求消息

請求消息的一般格式

HTTP響應(yīng)消息

響應(yīng)消息的一般格式

4.用戶-服務(wù)器交互:身份認(rèn)證和cookie

HTTP提供了兩種幫助服務(wù)器標(biāo)識用戶的機制:身份認(rèn)證和cookie。

用戶認(rèn)證:Web站點要求用戶提供一個用戶名-口令對才能訪問存放在其服務(wù)器中的文檔。HTTP提供特殊的狀態(tài)碼和頭部來幫助Web站點執(zhí)行身份認(rèn)證。

cookie:cookies是一種可由Web站點用來跟蹤用戶的候選機制。

一個客戶首次聯(lián)系一個使用cookie的Web站點。服務(wù)器會在其響應(yīng)中吧phan一個Set-Cookie:頭部。客戶收到這個響應(yīng)消息,往存放在客戶主機中的某個特殊的cookie文件中添加一行,這一行一般包含服務(wù)器主機的主機名和這個與用戶關(guān)聯(lián)的標(biāo)識數(shù)。一段時間后請求同一個服務(wù)器時,由同一個用戶啟動的新客戶會在請求消息中包含一個Cookie:頭部,其值為早先由該服務(wù)器產(chǎn)生的標(biāo)識數(shù)。

用cookie保持用戶狀態(tài)

目的:用戶認(rèn)證時不用每次都輸入用戶名和口令/記住用戶偏好以便投放廣告/建立虛擬購物車

5.帶條件的GET

在允許客戶進(jìn)行高速緩存的同時,仍確保傳遞給瀏覽器的所有對象都是最新的。

滿足(1)使用GET方法(2)包含If-Modified-Since:頭部的HTTP請求消息就是所謂的帶條件的GET消息。

6.Web高速緩存服務(wù)器

Web高速緩存服務(wù)器是具有高速緩存功能的Web代理服務(wù)器,它們在代表客戶執(zhí)行HTTP請求的同時,在自己的硬盤空間中保存進(jìn)來請求到的對象的一個拷貝。

優(yōu)勢:(1)可以充分縮短客戶請求的響應(yīng)時間(特別是在客戶與目標(biāo)服務(wù)器之間的瓶頸帶寬比它與高速緩存服務(wù)器之間的瓶頸帶寬小得多時);(2)顯著降低因特網(wǎng)得總體Web流量;(3)可提供一個用于迅速散布內(nèi)容得基礎(chǔ)設(shè)施。

三、文件傳送:FTP


FTP在本地和遠(yuǎn)程文件系統(tǒng)間傳送文件

FTP也運行在TCP之上。FTP使用兩個并行得TCP連接來傳送文件,(1)控制連接,用于在客戶主機和服務(wù)器主機之間發(fā)送控制信息,如用戶名和口令、改變遠(yuǎn)程目錄得命令、取或放文件的命令;(2)數(shù)據(jù)連接用于真正發(fā)送文件。

帶外(out-of-band)發(fā)送控制信息:FTP/RTSP

帶內(nèi)(in-band)發(fā)送控制信息:HTTP/SMTP

在整個會話期間,控制連接一直打開著,F(xiàn)TP服務(wù)器必須維護關(guān)于用戶的狀態(tài),必須把控制連接與特定的用戶關(guān)聯(lián)起來,必須隨用戶在遠(yuǎn)程目錄樹中的游動跟蹤其當(dāng)前目錄。而數(shù)據(jù)連接則有可能為每次文件傳送請求重新打開一次。

FTP命令:由4個大寫的ASCII字符構(gòu)成(如USER/PASS/LIST/RETR/STOR)

FTP應(yīng)答:一個3位數(shù)值(如331/125/425/452)

4.電子郵件

1.SMTP

郵件服務(wù)器構(gòu)成了電子郵件系統(tǒng)的核心。每個收信人都有一個位于某個郵件服務(wù)器上的郵箱,用于管理和維護已經(jīng)發(fā)送給他的郵件消息。

Alice發(fā)送一個郵件給Bob

SMTP通常不使用中間的郵件服務(wù)器主機中轉(zhuǎn)郵件,即便源端和目的端郵件服務(wù)器主機位于地球上相反的位置也一樣。

SMTP命令:HELO , ? ? ?MAIL FROM ?, ?RCPT TO ?, ?DATA , ?QUIT

2.與HTTP的比較

相同:(1)都用于一臺主機向另一臺主機傳送文件(2)都使用持久連接

不同:(1)HTTP是內(nèi)拉式協(xié)議(pull protocol)---TCP連接是想接收文件的主機發(fā)起的(拉過來);SMTP是外推式協(xié)議(push protocol)---TCP連接是想發(fā)送文件的主機發(fā)起的(推出去)(2)SMTP要求包括信體部分在內(nèi)的每個郵件信息都是7位ASCII文本格式(二進(jìn)制數(shù)據(jù)應(yīng)以一定的方式先編碼成ASCII文本)(3)處理包含文本和圖像或其他媒體類型的文檔:HTTP是把每個對象封裝在各自的HTTP響應(yīng)消息中,SMTP則是把同一個郵件內(nèi)的各個對象置于同一個郵件消息中。

3.郵件消息格式和MIME

郵件消息的每個信頭必須有一個From:頭部和一個To:頭部,還可以有一個Subject:頭部和其他頭部。

SMTP命令是SMTP握手協(xié)議的一部分,郵件消息頭部則屬于郵件消息的一部分。

非ASCII數(shù)據(jù)的MIME擴展(Multipurpose Internet Mail Extensions)

支持多媒體的兩個關(guān)鍵MIME頭部是Content-Type:和Content-Transfer-Encoding:。

Received:頭部(由SMTP接收服務(wù)器插到每個郵件消息的頂端),給出了發(fā)出本消息的SMTP服務(wù)器的主機名(“from”)、收取本消息的SMTP服務(wù)器的主機名(“by”)以及接收服務(wù)器收取本消息的時間。

4.郵件訪問協(xié)議

用戶代理不可能使用SMTP從郵件服務(wù)器獲取郵件消息,因為郵件消息的獲取是一個內(nèi)拉操作,SMTP是一個外推協(xié)議。

電子郵件協(xié)議及其通信實體

POP3

POP3服務(wù)器與郵件服務(wù)器運行在相同的服務(wù)器主機上,前者從用戶的郵箱中讀取并可能刪除郵件消息,后者往用戶的郵箱中寫入郵件消息。

TCP連接建立好之后,POP3依次經(jīng)歷授權(quán)認(rèn)證、處理和更新3個階段。

授權(quán)階段兩個基本命令:user <用戶名> 和 pass<口令>

處理階段有兩種模式:(1)下載并刪除(2)下載并保留 ? list,retr,dele,quit 命令

在POP3會話期間,用戶代理發(fā)出命令,POP3服務(wù)器則對每個命令響應(yīng)一個應(yīng)答。

在用戶代理和郵件服務(wù)器之間的POP3會話期間,POP3服務(wù)器維護一定的狀態(tài)信息,不過POP3服務(wù)器不會跨會話保存狀態(tài)信息。

IMAP

為用戶提供了在自己的郵件服務(wù)器主機中創(chuàng)建文件夾以及將郵件從一個文件夾移動到另一個文件夾的命令

為用戶提供了在遠(yuǎn)程文件夾中查詢郵件的命令,按指定條件去查詢匹配的郵件

維護了會話的用戶狀態(tài)信息

允許用戶代理獲取郵件消息部件

基于Web的電子郵件

通過HTTP傳輸郵件

五、DNS--因特網(wǎng)的目錄服務(wù)

1.DNS提供的服務(wù)

DNS既是一個在由名稱服務(wù)器主機構(gòu)成的層次結(jié)構(gòu)中實現(xiàn)的分布式數(shù)據(jù)庫,又是一個允許客戶主機和名稱服務(wù)器主機通信以使用域名轉(zhuǎn)換服務(wù)的應(yīng)用層協(xié)議。

DNS協(xié)議是應(yīng)用層協(xié)議,由其他應(yīng)用層協(xié)議(HTTP、SMTP、FTP)所使用,運行在UDP上。

DNS提供的服務(wù):(1)主機名到IP地址的轉(zhuǎn)換(2)主機別名(3)郵件服務(wù)器別名(4)負(fù)載分擔(dān)

2.DNS工作機理

集中式設(shè)計的問題:單點故障/巨大訪問量/遠(yuǎn)距離集中式數(shù)據(jù)庫/維護

DNS是一個在因特網(wǎng)中實現(xiàn)分布式數(shù)據(jù)庫的范例。

為了處理擴展性的問題,DNS使用了大量的以層次方式組織的DNS服務(wù)器。沒有一臺DNS服務(wù)器擁有Internet中所有主機的映射。層級結(jié)構(gòu)中有3種DNS服務(wù)器:根DNS服務(wù)器、頂級域DNS服務(wù)器、權(quán)威DNS服務(wù)器

遞歸查詢和迭代查詢

遞歸和迭代
遞歸查詢

DNS caching:本地DNS服務(wù)器緩存了主機/IP地址對,當(dāng)再次接受相同請求時可以直接返回請求結(jié)果

3.DNS記錄

共同實現(xiàn)了DNS分布式數(shù)據(jù)庫的所有DNS服務(wù)器存儲了資源記錄(Resource Record,RR),每個DNS應(yīng)答消息攜帶一個或多個資源記錄

資源記錄包含了下列字段:(Name,Value,Type,TTL)

DNS記錄

4.DNS消息

DNS消息格式

六、用TCP進(jìn)行套接字編程

七、用UDP進(jìn)行套接字編程

八、構(gòu)建一個簡單的Web服務(wù)器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容