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

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

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

1.應用層協(xié)議

1.應用層協(xié)議僅僅是網(wǎng)絡應用的一部分谣沸。

Web應用:一個文檔格式的標準(HTML)/Web瀏覽器軟件(如IE瀏覽器)/Web服務器軟件(如Microsoft服務器)/一個應用層協(xié)議(HTTP) ?

電子郵件應用:郵件服務器/郵件閱讀器/電子郵件消息結構標準/一個應用層協(xié)議(SMTP)

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

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

2.客戶和服務器

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

3.進程間跨網(wǎng)絡的通信

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

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

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

應用程序進程、套接字及底層的傳輸協(xié)議

4.進程尋址

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

5.用戶代理(user agent)

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

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

2.應用所需的服務

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

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

3.實時性

一些網(wǎng)絡應用的服務需求

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

1.TCP服務

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

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

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

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

2.UDP服務

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

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

二搓译、Web:HTTP

1.HTTP概貌

Web頁面由多個對象構成,對象是可由單個URL尋址的文件如HTML文件锋喜、JPEG圖像等。大多數(shù)Web頁面由單個基本HTML文件和若干個所引用的對象構成豌鸡『侔悖基本HTML文件使用相應的URL來引用本頁面的其他對象。每個URL由存放該對象的服務器主機名和該對象的路徑名兩部分構成涯冠。

HTTP定義Web客戶如何從Web服務器請求頁面炉奴,以及服務器如何把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服務器不維護客戶的狀態(tài)信息派任。

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

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

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

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

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

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

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

3.HTTP消息格式

HTTP請求消息

請求消息的一般格式

HTTP響應消息

響應消息的一般格式

4.用戶-服務器交互:身份認證和cookie

HTTP提供了兩種幫助服務器標識用戶的機制:身份認證和cookie。

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

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

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

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

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

5.帶條件的GET

在允許客戶進行高速緩存的同時伞芹,仍確保傳遞給瀏覽器的所有對象都是最新的忘苛。

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

6.Web高速緩存服務器

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

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

三汉形、文件傳送:FTP


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

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

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

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

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

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

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

4.電子郵件

1.SMTP

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

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

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

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文本格式(二進制數(shù)據(jù)應以一定的方式先編碼成ASCII文本)(3)處理包含文本和圖像或其他媒體類型的文檔:HTTP是把每個對象封裝在各自的HTTP響應消息中济欢,SMTP則是把同一個郵件內(nèi)的各個對象置于同一個郵件消息中赠堵。

3.郵件消息格式和MIME

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

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

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

支持多媒體的兩個關鍵MIME頭部是Content-Type:和Content-Transfer-Encoding:半等。

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

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

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

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

POP3

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

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

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

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

在POP3會話期間,用戶代理發(fā)出命令羡儿,POP3服務器則對每個命令響應一個應答礼患。

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

IMAP

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

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

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

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

基于Web的電子郵件

通過HTTP傳輸郵件

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

1.DNS提供的服務

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

DNS協(xié)議是應用層協(xié)議厨相,由其他應用層協(xié)議(HTTP领曼、SMTP鸥鹉、FTP)所使用,運行在UDP上庶骄。

DNS提供的服務:(1)主機名到IP地址的轉換(2)主機別名(3)郵件服務器別名(4)負載分擔

2.DNS工作機理

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

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

為了處理擴展性的問題,DNS使用了大量的以層次方式組織的DNS服務器单刁。沒有一臺DNS服務器擁有Internet中所有主機的映射灸异。層級結構中有3種DNS服務器:根DNS服務器、頂級域DNS服務器幻碱、權威DNS服務器

遞歸查詢和迭代查詢

遞歸和迭代
遞歸查詢

DNS caching:本地DNS服務器緩存了主機/IP地址對绎狭,當再次接受相同請求時可以直接返回請求結果

3.DNS記錄

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

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

DNS記錄

4.DNS消息

DNS消息格式

六蹦狂、用TCP進行套接字編程

七、用UDP進行套接字編程

八朋贬、構建一個簡單的Web服務器

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凯楔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锦募,更是在濱河造成了極大的恐慌摆屯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糠亩,死亡現(xiàn)場離奇詭異虐骑,居然都是意外死亡,警方通過查閱死者的電腦和手機赎线,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門廷没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垂寥,你說我怎么就攤上這事颠黎。” “怎么了滞项?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵狭归,是天一觀的道長。 經(jīng)常有香客問我文判,道長唉铜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任律杠,我火速辦了婚禮潭流,結果婚禮上竞惋,老公的妹妹穿的比我還像新娘。我一直安慰自己灰嫉,他們只是感情好拆宛,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讼撒,像睡著了一般浑厚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上根盒,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天钳幅,我揣著相機與錄音,去河邊找鬼炎滞。 笑死敢艰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的册赛。 我是一名探鬼主播钠导,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼森瘪!你這毒婦竟也來了牡属?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤扼睬,失蹤者是張志新(化名)和其女友劉穎逮栅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窗宇,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡证芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了担映。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡叫潦,死狀恐怖蝇完,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矗蕊,我是刑警寧澤短蜕,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站傻咖,受9級特大地震影響朋魔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卿操,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一警检、第九天 我趴在偏房一處隱蔽的房頂上張望孙援。 院中可真熱鬧,春花似錦扇雕、人聲如沸拓售。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽础淤。三九已至,卻和暖如春哨苛,著一層夾襖步出監(jiān)牢的瞬間鸽凶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工建峭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玻侥,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓迹缀,卻偏偏與公主長得像使碾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祝懂,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容