《計算機網(wǎng)絡-自頂向下方法》第二章-應用層 要點

網(wǎng)絡應用程序的兩種主流體系結構

1、客戶-服務器
例子:Web贪薪、FTP、Telnet眠副、電子郵件等画切。

這種體系結構中,有一個總是打開的主機稱為服務器囱怕,它服務于來自許多其他稱為客戶的主機的請求霍弹。在Web應用程序的例子中,總是打開的Web服務器服務于來自瀏覽器(運行在客戶主機上)的請求娃弓。
這種體系結構庞萍,客戶相互之間不直接通信。如忘闻,在Web應用中兩個瀏覽器并不直接通信钝计。

在客戶-服務器應用中,常常會出現(xiàn)一臺單獨的服務器主機跟不上它所有客戶請求的情況齐佳。例如私恬,一個流行的社交網(wǎng)絡站點如果僅有一臺服務器來處理所有請求,很快就會變得不堪重負炼吴。為此本鸣,配備大量主機的數(shù)據(jù)中心常被用于創(chuàng)建強大的虛擬服務器。最為流行的因特網(wǎng)服務——如搜索引擎(Google和Bing)硅蹦、因特網(wǎng)商務(亞馬遜和e-Bay)荣德、基于Web的電子郵件(如Gmail何雅虎郵件)、社交網(wǎng)絡(Facebook和Twitter)等童芹,就應用了一個或多個數(shù)據(jù)中心涮瞻。

2、對等(P2P)
例子:文件共享(BitTorrent)假褪、對等方協(xié)助下載加速器(迅雷)署咽、因特網(wǎng)電話(Skype)、IPTV(迅雷看看、PPstream)宁否。

應用程序在間斷連接的主機對之間使用直接通信窒升,這些主機對被稱為對等方。因為這種對等方通信不必通過專門的服務器慕匠,所以被稱為對等方到對等方的饱须。目前許多流行的、流量密集型應用都是P2P體系結構台谊。如上面列出的一些例子蓉媳。

某些應用具有以上兩者混合的結構體系。如即時訊息應用青伤,服務器被用于跟蹤用戶的IP地址督怜,但用戶到用戶的報文在用戶主機之間(無需通過中間服務器)直接發(fā)送殴瘦。

進程通信

進行通信的主體實際上是進程狠角,而不是程序。

  • 運行在同一個端系統(tǒng)中的進程間通信蚪腋,其規(guī)則由該端系統(tǒng)上的操作系統(tǒng)確定丰歌。
  • 運行在不同端系統(tǒng)中(可能這些端系統(tǒng)還是不同的操作系統(tǒng))的進程間通信,其規(guī)則由網(wǎng)絡協(xié)議確定屉凯。

客戶和服務器進程

網(wǎng)絡應用程序由成對的進程組成立帖,這些進程通過網(wǎng)絡相互發(fā)送報文。

在給定的一對進行之間的通信會話場景中悠砚,發(fā)起通信的進程被標識為客戶晓勇,在會話開始時等待聯(lián)系的進程是服務器

套接字(socket)

?進程與套接字關系的類比:進程是一座房子灌旧,它的套接字是它的門绑咱。

套接字是同一臺主機內應用層與運輸層之間的接口。由于該套接字是建立網(wǎng)絡應用程序的可編程接口枢泰,因此套接字也稱為應用程序和網(wǎng)絡之間的應用程序編程接口(Application Programming Interface描融,API)

應用程序開發(fā)者可以控制套接字在應用層端的一切,但是對該套接字的運輸層端幾乎沒有控制權衡蚂。應用程序開發(fā)者對運輸層的控制僅限于
1窿克、 選擇運輸層協(xié)議
2、設定幾個運輸層參數(shù)毛甲,如最大緩存和最大報文段長度

進程尋址

在一臺主機上運行的進程為了可以向在另一臺主機上運行的進程發(fā)送分組年叮,接收進程需要有一個地址。為了標識接收進程玻募,需要定義2種信息
1谋右、 目的主機的地址(IP地址)
2、 定義在目的主機中的接收進程的標識符(端口號)

因為一臺主機能夠運行許多網(wǎng)絡應用补箍,我要知道是這臺主機的哪個應用程序需要接收信息改执,端口號就是用來區(qū)分應用程序的啸蜜。類比于送信,收件地址(家庭住址)相當于目的主機的IP地址辈挂,收件人相當于端口號(一個家里面往往不止一個人)衬横。

因特網(wǎng)提供的運輸層服務

1、 TCP服務

  • 面向連接的服務:需要執(zhí)行“3次握手”建立兩個進程的套接字之間的TCP連接终蒂。這條連接是全雙工的蜂林,即連接雙方的進程可以在此連接上同時進行報文收發(fā)。當應用程序結束報文發(fā)送時拇泣,必須拆除該連接噪叙。
  • 可靠的數(shù)據(jù)傳送服務:通信進程能依靠TCP,無差錯霉翔、按適當順序交付所有發(fā)送的數(shù)據(jù)睁蕾,沒有字節(jié)的丟失和冗余。
  • 擁塞控制機制:為因特網(wǎng)帶來整體好處债朵。當發(fā)送方和接收方之間的網(wǎng)絡出現(xiàn)擁塞時子眶,TCP擁塞控制機制會抑制發(fā)送進程。該機制也會試圖限制每個TCP連接序芦,使它們達到公平共享網(wǎng)絡帶寬的目的臭杰。

2、 UDP服務

  • 無連接的服務:進程通信前不需要建立連接
  • 不可靠的數(shù)據(jù)傳送服務:當進程將一個報文發(fā)送進UDP套接字時谚中,UDP協(xié)議不保證該報文將到達接收進程渴杆,而且到達接收進程的報文也可能是亂序到達的。
  • 沒有擁塞控制機制:所以UDP的發(fā)送端可以用它選定的任何速率向其下層(網(wǎng)絡層)注入數(shù)據(jù)宪塔。(實際端到端吞吐量可能小于這種速率磁奖,可能是因為中間鏈路的帶寬受限或因為擁塞而造成。)

不同網(wǎng)絡應用對因特網(wǎng)的運輸層服務的要求

  • 不能丟失的數(shù)據(jù)要采用可靠數(shù)據(jù)傳輸蝌麸,即要用TCP協(xié)議点寥;容忍丟失的可采用UDP協(xié)議。
  • 帶寬是彈性的来吩,表明是彈性應用敢辩,它能夠根據(jù)情況或多或少利用可供使用的吞吐量;非彈性的應用——帶寬敏感應用弟疆,對吞吐量會有一定要求戚长。
  • 時間敏感的應用,要求時延較低怠苔。

流行的因特網(wǎng)應用及其應用層協(xié)議和支撐的運輸層協(xié)議

</br>

安全套接字層(Secure Sockets Layer同廉,SSL)

被稱為TCP的加強版,能做TCP所能做的一切,還提供了進程到進程的安全性服務迫肖,包括加密锅劝、數(shù)據(jù)完整性和端點鑒別。

1蟆湖、SSL不是與TCP和UDP在相同層次上的第三種因特網(wǎng)運輸層協(xié)議故爵,而是一種對TCP的加強,這種強化是在應用層上實現(xiàn)的隅津。

2诬垂、SSL有自己的套接字API,區(qū)別于TCP的套接字API伦仍。

</br>

應用層協(xié)議

應用層協(xié)議定義了運行在不同端系統(tǒng)上的應用程序進程如何相互傳遞報文结窘。應用層協(xié)議定義了:

  • 交換的報文類型,如請求報文和響應報文
  • 各種報文類型的語法充蓝,如報文中的各個字段及這些字段是如何描述的
  • 字段的語義隧枫,即這些字段中包含的信息的含義
  • 一個進程何時以及如何發(fā)送報文,對報文進行響應的規(guī)則

應用層協(xié)議是網(wǎng)絡應用的重要組成部分棺克。

Web應用的應用層協(xié)議是HTTP

HTTP服務器不保存關于客戶的任何信息悠垛,所以說HTTP是一個無狀態(tài)協(xié)議线定。

非持續(xù)連接:每個請求/響應對是經(jīng)一個單獨的TCP連接發(fā)送娜谊。
持續(xù)連接:所有請求及其響應經(jīng)相同的TCP連接發(fā)送。

HTTP可以采用非持續(xù)連接和持續(xù)連接斤讥,默認情況下使用持續(xù)連接纱皆,性能更好。

HTTP使用非持續(xù)連接的缺點

  • 需要為每一個請求的對象建立和維護一個全新的連接芭商。對于每個這樣的連接派草,在客戶和服務器中都要分配TCP的緩沖區(qū)和保持TCP變量,這給Web服務器帶來嚴重負擔铛楣。
  • 每一個對象要經(jīng)受兩倍的RTT(往返時間近迁,Round-Trip Time)交付延遲。

HTTP請求報文的通用格式

  • 方法:可填入GET簸州、POST鉴竭、HEAD、PUT岸浑、DELETE等搏存,絕大部分HTTP請求報文使用GET方法
  • URL:如www.baidu.com
  • 版本:HTTP版本
  • 首部字段名:有好幾種首部字段名,如Host矢洲、Connection璧眠、User-agent
  • 值:首部字段名對應的值
  • sp:空格
  • cr:回車(carriage return)
  • lf:換行(line feed)
    (關于回車和換行的區(qū)別,不?太清楚的同學請點擊回車與換行的區(qū)別
  • 實體主體:使用GET方法時,實體主體為空责静;使用POST方法才會有實體主體袁滥。

一個使用GET方法的HTTP請求報文:

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

</br>

HTTP響應報文的通用格式

  • 版本:HTTP版本
  • 狀態(tài)碼:
    200(OK,請求成功灾螃,信息在返回的響應報文中)
    301(Moved Permanently呻拌,請求對象已被永久轉移,新的URL定義在響應報文的Location:首部行中睦焕∶晡眨客戶軟件將自動獲取新的URL——自動跳轉到新URL)
    400(Bad Request,一個通用差錯代碼垃喊,指示該請求不能被服務器理解)
    404(Not Found猾普,被請求的文檔不在服務器上)
    505(HTTP Version Not Supported,服務器不支持請求使用的HTTP協(xié)議版本)
  • 短語:提示信息

上一例中本谜,使用GET方法的HTTP請求報文的響應報文:

HTTP/1.1  200  OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html

(data data data data data ...)

</br>

Cookie

前文說HTTP服務器是無狀態(tài)的初家,不保存客戶信息。但是有時候一個Web站點希望能夠識別用戶乌助,可能是出于服務器希望限制用戶的訪問溜在,或者是出于希望把內容與用戶身份聯(lián)系起來。

為此HTTP可以使用cookie他托。它允許站點對用戶進行跟蹤掖肋。目前大多數(shù)商務Web站點都使用了cookie。

cookie技術的4個組件

  • 在HTTP響應報文中的一個cookie首部行赏参。如Set-cookie: 1678
  • 在HTTP請求報文中的一個cookie首部行志笼。如Cookie: 1678
  • 在用戶端系統(tǒng)中保留有一個cookie文件,并由用戶的瀏覽器進行管理
  • 位于Web站點的一個后端數(shù)據(jù)庫把篓。用于保存cookie纫溃。

Web緩存器 = 代理服務器

顧名思義就是服務器的代理了,它同樣可以處理客戶發(fā)送的HTTP請求報文韧掩,如果它緩存著請求報文所需對象的副本的話紊浩。如果沒有,Web緩存器會先向本體Web服務器獲取所需對象的副本疗锐,再提供服務給客戶坊谁。

通過“條件GET方法”,保證緩存器的對象是最新的窒悔。

采用Web緩存器的好處

  • 大大減少對客戶請求的響應時間
  • 大大減少一個機構的接入鏈路到因特網(wǎng)的通信量呜袁。通過減少通信量,該機構就不必急于增加帶寬简珠,從而降低費用
  • 能從整體上大大減低因特網(wǎng)上的Web流量阶界,從而改善所有應用的性能

</br>

文件傳輸協(xié)議 FTP

事實上虹钮,HTTP和FTP都屬于文件傳輸協(xié)議,所以有許多共同特點膘融。如都運行在TCP上芙粱。

最顯著的區(qū)別是FTP使用兩個并行的TCP連接來傳輸文件,一個是控制連接氧映,一個是數(shù)據(jù)連接春畔。所以也需要兩個端口。
1岛都、 控制連接用于在兩主機之間傳輸控制信息律姨。
2、 數(shù)據(jù)連接用于實際發(fā)送一個文件

先建立控制連接臼疫,再建立數(shù)據(jù)連接择份。

在同一個會話期間,如果用戶還需要傳輸另一個文件烫堤,F(xiàn)TP則打開另一個數(shù)據(jù)連接(TCP連接)荣赶。所以對FTP而言,控制連接貫穿了整個用戶會話期間鸽斟,但是對會話中的每一次文件傳輸都需要建立一個新的數(shù)據(jù)連接拔创,所以FTP的數(shù)據(jù)連接是非持續(xù)連接。

FTP服務器必須在整個會話期間保留用戶的狀態(tài)富蓄,對每個進行中的用戶會話的狀態(tài)信息進行追蹤剩燥,大大限制了FTP同時維持的會話總數(shù)。

</br>

簡單郵件協(xié)議 SMTP

電子郵件系統(tǒng)的3個主要組成部分

  • 用戶代理
  • 郵件服務器
  • STMP

STMP是運用在郵件服務器之間傳輸?shù)膮f(xié)議格粪。

用戶代理負責把用戶發(fā)送的報文發(fā)送給郵件服務器躏吊,以及接收郵件服務器發(fā)送給用戶的報文氛改。

STMP一般不適用中間郵件服務器發(fā)送郵件帐萎,即使這兩個郵件服務器位于地球的兩端。如Alice的郵件服務器在中國香港胜卤,而Bob的服務器在美國圣路易斯疆导,那么這個TCP連接也是從香港服務器到圣路易斯服務器之間的直接相連。特別是葛躏,如果Bob的郵件服務器沒有開機澈段,該報文會保留在Alice的郵件服務器上并等待進行新的嘗試,這意味著郵件并不在中間的某個郵件服務器存留舰攒。

SMTP與HTTP的對比

1败富、兩者都用于從一臺主機向另一臺主機傳送文件,都使用持續(xù)連接摩窃。HTTP從Web服務器向Web客戶傳送文件兽叮;SMTP從一個郵件服務器向另一個郵件服務器傳送文件芬骄。

2、HTTP是一個拉協(xié)議(pull protocol)鹦聪。即在方便時账阻,用戶使用HTTP從服務器拉取信息;SMTP是一個推協(xié)議(push protocol)泽本,發(fā)送郵件服務器把文件推向接收郵件服務器淘太。

3、SMTP要求每個報文(包括它們的體)使用7比特ASCII碼格式规丽。如果報文包含非7比特ASCII字符(如有重音的法文字符)或二進制數(shù)據(jù)(如圖形文件)蒲牧,則報文必須按照7特比ASCII碼進行編碼。HTTP數(shù)據(jù)不受這種限制赌莺。

4造成、處理一個既包含文本又包含圖形的文檔的方式不同。SMTP把所有報文對象放在一個報文中雄嚣;HTTP把每個對象封裝到它自己的HTTP響應報文中晒屎。

</br>

DNS協(xié)議

因特網(wǎng)上的主機的標識有2種方式
1、 主機名缓升,如www.baidu.com
2鼓鲁、 IP地址,如xxx.xxx.xxx.xxx

這兩種標識其實指代的是同一樣東西港谊,就如你父親叫你全名和叫你兒子是一樣的一個道理骇吭。那為什么需要2種標識呢?
因為我們人類喜歡主機名這種便于記憶的標識歧寺,而對路由器來說燥狰,它更喜歡定長的、有層次結構的IP地址斜筐。我們在瀏覽器的地址上輸入網(wǎng)址時都是輸入其主機號龙致。

所以我們需要一種能進行主機名到IP地址轉換的服務,也就是域名系統(tǒng)(Domain Name System顷链,DNS)目代。DNS協(xié)議運行在UDP上,使用53號端口嗤练。

DNS也是應用層協(xié)議榛了,它通常會被其他應用層協(xié)議所使用,包括HTTP煞抬、SMTP和FTP霜大。

DNS除了將主機名轉換為IP地址,還有以下服務
1革答、識別主機別名(用于HTTP战坤、FTP)
2遮婶、識別郵件服務器別名(用于SMTP)
3、負載分配

DNS服務器采用分布式湖笨、層次數(shù)據(jù)庫

DNS緩存

與Web緩存器一樣旗扑,DNS服務器同樣有緩存器。

P2P體系結構

相比于客戶-服務器體系結構慈省,P2P具有自擴展性臀防,表現(xiàn)在對等方N越大,最小分發(fā)時間也趨于平緩边败。這種自擴展性的直接成因是:對等方除了是比特的消費者外還是它們的重新分發(fā)者袱衷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笑窜,隨后出現(xiàn)的幾起案子致燥,更是在濱河造成了極大的恐慌,老刑警劉巖排截,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫌蚤,死亡現(xiàn)場離奇詭異,居然都是意外死亡断傲,警方通過查閱死者的電腦和手機脱吱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來认罩,“玉大人箱蝠,你說我怎么就攤上這事】汛梗” “怎么了宦搬?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長劫拗。 經(jīng)常有香客問我间校,道長,這世上最難降的妖魔是什么杨幼? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任撇簿,我火速辦了婚禮,結果婚禮上差购,老公的妹妹穿的比我還像新娘。我一直安慰自己汉嗽,他們只是感情好欲逃,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饼暑,像睡著了一般稳析。 火紅的嫁衣襯著肌膚如雪洗做。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天彰居,我揣著相機與錄音诚纸,去河邊找鬼。 笑死陈惰,一個胖子當著我的面吹牛畦徘,可吹牛的內容都是我干的。 我是一名探鬼主播抬闯,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼井辆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了溶握?” 一聲冷哼從身側響起杯缺,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睡榆,沒想到半個月后萍肆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡胀屿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年匾鸥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碉纳。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡勿负,死狀恐怖,靈堂內的尸體忽然破棺而出劳曹,到底是詐尸還是另有隱情奴愉,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布铁孵,位于F島的核電站锭硼,受9級特大地震影響,放射性物質發(fā)生泄漏蜕劝。R本人自食惡果不足惜檀头,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岖沛。 院中可真熱鬧暑始,春花似錦、人聲如沸婴削。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唉俗。三九已至嗤朴,卻和暖如春配椭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹姊。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工股缸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吱雏。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓敦姻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坎背。 傳聞我的和親對象是個殘疾皇子替劈,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容