计算机网络笔记----应用层
應(yīng)用層
- 應(yīng)用層協(xié)議原理
- 網(wǎng)絡(luò)應(yīng)用程序的體系結(jié)構(gòu)
- 客戶-服務(wù)器體系結(jié)構(gòu)
- P2P體系結(jié)構(gòu)
- 進(jìn)程通信
- 進(jìn)程與計(jì)算機(jī)網(wǎng)絡(luò)之間的接口
- 進(jìn)程尋址
- 可供應(yīng)用程序使用的運(yùn)輸服務(wù)
- 可靠數(shù)據(jù)傳輸
- 吞吐量
- 定時(shí)
- 安全性
- 因特網(wǎng)提供的運(yùn)輸服務(wù)
- TCP服務(wù)
- 面向連接的服務(wù)
- 可靠的數(shù)據(jù)傳送服務(wù)
- 擁塞控制
- TCP安全
- UDP服務(wù)
- 應(yīng)用層協(xié)議
- 網(wǎng)絡(luò)應(yīng)用和應(yīng)用層協(xié)議區(qū)別
應(yīng)用層協(xié)議原理
網(wǎng)絡(luò)應(yīng)用程序的體系結(jié)構(gòu)
由應(yīng)用程序研發(fā)者設(shè)計(jì), 規(guī)定了如何在各種端系統(tǒng)上組織該應(yīng)用程序。
兩種主流體系結(jié)構(gòu):客戶-服務(wù)器體系結(jié)構(gòu),對(duì)等(P2P)體系結(jié)構(gòu)。
客戶-服務(wù)器體系結(jié)構(gòu)
客戶(client)和服務(wù)器(server)都是指通信中所涉及的兩個(gè)應(yīng)用進(jìn)程。客戶是服務(wù)請(qǐng)求方,服務(wù)器是服務(wù)提供方。
一個(gè)典型的例子是Web應(yīng)用程序,其中總是打開(kāi)的Web服務(wù)器服務(wù)于來(lái)自瀏覽器(運(yùn)行在客戶主機(jī)上)的請(qǐng)求。當(dāng)Web服務(wù)器接收到來(lái)自某客戶對(duì)某對(duì)象的請(qǐng)求時(shí),它向該客戶發(fā)送所請(qǐng)求的對(duì)象作為響應(yīng)。
特征:
- 客戶相互之間不直接通信。
- 該服務(wù)器具有固定的、周知的地址(IP地址),因?yàn)樵摲?wù)器總是打開(kāi)的,客戶總是能夠通過(guò)向該服務(wù)器的IP地 址發(fā)送分組來(lái)與其聯(lián)系。
該體系結(jié)構(gòu)著名的應(yīng)用程序包括WEB、FTP、Telnet和電子郵件。
在一個(gè)客戶-服務(wù)器應(yīng)用中,常常會(huì)出現(xiàn)一臺(tái)單獨(dú)的服務(wù)器主機(jī)跟不上它所有客戶請(qǐng) 求的情況。例如,一個(gè)流行的社交網(wǎng)絡(luò)站點(diǎn)如果僅有一臺(tái)服務(wù)器來(lái)處理所有請(qǐng)求,將很快變得不堪重負(fù)。為此,配備大量主機(jī)的數(shù)據(jù)中心(data center)常被用于創(chuàng)建強(qiáng)大的虛擬 服務(wù)器。最為流行的因特網(wǎng)服務(wù)一一如搜索引擎(如谷歌、Bing和百度)、因特網(wǎng)商務(wù)(如亞馬遜、e-Bay和阿里巴巴)、基于Web的電子郵件(如Gmail和雅虎郵件)、社交網(wǎng) 絡(luò)(如臉書(shū)、Instagram推特和微信),就應(yīng)用了一個(gè)或多個(gè)數(shù)據(jù)中心。一個(gè)數(shù)據(jù)中心能夠有數(shù)十萬(wàn)臺(tái)服務(wù)器。
P2P體系結(jié)構(gòu)
應(yīng)用程序在間斷連接的主機(jī)對(duì)之間使用直接通信,這些主機(jī)對(duì)被稱為對(duì)等方。因?yàn)檫@種對(duì)等方通信不必通過(guò)專門(mén)的服務(wù)器,該體系結(jié)構(gòu)被稱為對(duì)等方到對(duì)等方的。
許多目前流行的、流量密集型應(yīng)用都是P2P體系結(jié)構(gòu)的。這些應(yīng)用包括文件共享(例如BitTorrent) x對(duì)等方協(xié)助下載加速器(例如迅雷)、因特網(wǎng)電話和視頻會(huì)議(例如Skype)。
P2P體系結(jié)構(gòu)的最引人入勝的特性之一是它們的自擴(kuò)展性 self-scalability o例如, 在一個(gè)P2P文件共享應(yīng)用中,盡管每個(gè)對(duì)等方都由于請(qǐng)求文件產(chǎn)生工作負(fù)載,但每個(gè)對(duì)等 方通過(guò)向其他對(duì)等方分發(fā)文件也為系統(tǒng)增加服務(wù)能力。然而,未來(lái)P2P應(yīng)用由于高度非集中式結(jié)構(gòu),面臨安全性、性 能和可靠性等挑戰(zhàn)。
進(jìn)程通信
用操作系統(tǒng)的術(shù)語(yǔ)來(lái)說(shuō),進(jìn)行通信的實(shí)際上是進(jìn)程(process)而不是程序。一個(gè)進(jìn)程可以被認(rèn)為是運(yùn)行在端系統(tǒng)中的一個(gè)程序。當(dāng)多個(gè)進(jìn)程運(yùn)行在相同的端系統(tǒng)上時(shí),它們使用進(jìn)程間通信機(jī)制相互通信。進(jìn)程間通信的規(guī)則由端系統(tǒng)上的操作系統(tǒng)確定。
在兩個(gè)不同端系統(tǒng)上的進(jìn)程,通過(guò)跨越計(jì)算機(jī)網(wǎng)絡(luò)交換報(bào)文(message)而相互通信。對(duì)每對(duì)通信進(jìn)程, 我們通常將這兩個(gè)進(jìn)程之一標(biāo)識(shí)為客戶(client),而另一個(gè)進(jìn)程標(biāo)識(shí)為服務(wù)器(serve"。 對(duì)于Web而言,瀏覽器是一個(gè)客戶進(jìn)程,Web服務(wù)器是一臺(tái)服務(wù)器進(jìn)程。對(duì)于P2P文件共享,下載文件的對(duì)等方標(biāo)識(shí)為客戶,上載文件的對(duì)等方標(biāo)識(shí)為服務(wù)器。
進(jìn)程與計(jì)算機(jī)網(wǎng)絡(luò)之間的接口
兩個(gè)進(jìn)程互相發(fā)送報(bào)文時(shí),進(jìn)程通過(guò)一個(gè)稱為套接字(socket)的軟件接口向網(wǎng)絡(luò)發(fā)送報(bào)文和從網(wǎng)絡(luò)接收?qǐng)?bào)文。
下圖顯示了兩個(gè)經(jīng)過(guò)因特網(wǎng)通信的進(jìn)程之間的套接字通信(假設(shè)運(yùn)輸層協(xié)議是因特網(wǎng)的TCP協(xié)議):
如該圖所示,套接字是同一臺(tái)主機(jī)內(nèi)應(yīng)用 層與運(yùn)輸層之間的接口。由于該套接字是建立網(wǎng)絡(luò)應(yīng)用程序的可編程接口,因此套接字也 稱為應(yīng)用程序和網(wǎng)絡(luò)之間的應(yīng)用程序編程接口(API)。
應(yīng)用程序開(kāi)發(fā)者可以控制套接字在應(yīng)用層端的一切,但是對(duì)該套接字的運(yùn)輸層端幾乎沒(méi)有控制權(quán)。
應(yīng)用程序開(kāi)發(fā)者對(duì)于運(yùn)輸層的控制僅限于
- 1.選擇運(yùn)輸層協(xié)議;
- 2.也許能設(shè)定幾個(gè)運(yùn)輸層參數(shù),如最大緩存和最大報(bào)文段長(zhǎng)度等。
進(jìn)程尋址
為了向特定目的地發(fā)送郵政郵件,目的地需要有一個(gè)地址。類似地,在一臺(tái)主機(jī)上運(yùn)行的進(jìn)程為了向在另一臺(tái)主機(jī)上運(yùn)行的進(jìn)程發(fā)送分組,接收進(jìn)程需要有一個(gè)地址。為了標(biāo)識(shí)該接收進(jìn)程,需要定義兩種信息
- 1.主機(jī)的地址;
- 2.在目的主機(jī)中指定接收進(jìn)程的標(biāo)識(shí)符。
主機(jī)由IP地址標(biāo)識(shí),IP地址是一個(gè)32比特的量且它能夠唯一地標(biāo)識(shí)該主機(jī)。
除了知道報(bào)文發(fā)送目的地的主機(jī)地址外,發(fā)送進(jìn)程還必須指定運(yùn)行在接收主機(jī)上的接收進(jìn)程(更具體地說(shuō),接收套接字)。因?yàn)橐话愣砸慌_(tái)主機(jī)能夠運(yùn)行許多網(wǎng)絡(luò)應(yīng)用, 這些信息是需要的。
目的地端口號(hào)(port number)用于這個(gè)目的。已經(jīng)給流行的應(yīng)用分配 了特定的端口號(hào)。例如,Web服務(wù)器用端口號(hào)80來(lái)標(biāo)識(shí)。郵件服務(wù)器進(jìn)程(使用SMTP協(xié)議)用端口號(hào)25來(lái)標(biāo)識(shí)。
可供應(yīng)用程序使用的運(yùn)輸服務(wù)
前面講過(guò)套接字是應(yīng)用程序進(jìn)程和運(yùn)輸層協(xié)議之間的接口。在發(fā)送端的應(yīng)用程序?qū)?bào)文推進(jìn)該套接字。在該套接字的另一側(cè),運(yùn)輸層協(xié)議負(fù)責(zé)從接收進(jìn)程的套接字得到該報(bào)文。 包括因特網(wǎng)在內(nèi)的很多網(wǎng)絡(luò)提供了不止一種運(yùn)輸層協(xié)議。
當(dāng)開(kāi)發(fā)一個(gè)應(yīng)用時(shí),必須選擇一種可用的運(yùn)輸層協(xié)議。如何做出這種選擇呢?最可能的方式是,通過(guò)研究這些可用的運(yùn)輸層協(xié)議所提供的服務(wù),選擇一個(gè)最能為你的應(yīng)用需求提供恰當(dāng)服務(wù)的協(xié)議。這種情況類似于在兩個(gè)城市間旅行時(shí)選擇飛機(jī)還是火車作為交通工具。每種運(yùn)輸模式為你提供不同的服務(wù),你必須選擇一種或另一種(例如,火車可以直到市區(qū)上客和下客,而飛機(jī)提供了更短的旅行時(shí)間)。
一個(gè)運(yùn)輸層協(xié)議能夠?yàn)檎{(diào)用它的應(yīng)用程序提供什么樣的服務(wù)呢?我們大體能夠從四個(gè)方面對(duì)應(yīng)用程序服務(wù)要求進(jìn)行分類:可靠數(shù)據(jù)傳輸、吞吐量、定時(shí)和安全性。
可靠數(shù)據(jù)傳輸
分組在計(jì)算機(jī)網(wǎng)絡(luò)中可能丟失。像電子郵件、文件傳輸、遠(yuǎn)程主機(jī)訪問(wèn)、Web文檔傳輸以及金融應(yīng)用等這樣的應(yīng)用,數(shù)據(jù)丟失可能會(huì)造成災(zāi)難性的后果。因此,為了支持這些應(yīng)用,必須做一些工作以確保由應(yīng)用程序的一端發(fā)送的數(shù)據(jù)正確、完全地交付給該應(yīng)用程序的另一端。如果一個(gè)協(xié)議提供了這樣的確保數(shù)據(jù)交付服務(wù),就認(rèn)為提供了可靠數(shù)據(jù)傳輸。
運(yùn)輸層協(xié)議能夠潛在地向應(yīng)用程序提供的一個(gè)重要服務(wù)是進(jìn)程到進(jìn)程的可靠數(shù) 據(jù)傳輸。當(dāng)一個(gè)運(yùn)輸協(xié)議提供這種服務(wù)時(shí),發(fā)送進(jìn)程只要將其數(shù)據(jù)傳遞進(jìn)套接字,就可以完全相信該數(shù)據(jù)將能無(wú)差錯(cuò)地到達(dá)接收進(jìn)程。
當(dāng)一個(gè)運(yùn)輸層協(xié)議不提供可靠數(shù)據(jù)傳輸時(shí),由發(fā)送進(jìn)程發(fā)送的某些數(shù)據(jù)可能到達(dá)不了接收進(jìn)程。這可能能被容忍丟失的應(yīng)用(loss-tolerant application)所接受,最值得注意的是多媒體應(yīng)用,如交談式音頻/視頻,它們能夠承受一定量的數(shù)據(jù)丟失。在這些多媒體應(yīng) 用中,丟失的數(shù)據(jù)引起播放的音頻/視頻出現(xiàn)小干擾,而不是致命的損傷。
吞吐量
運(yùn)輸層協(xié)議能夠以某種特定的速率提供確保的可用吞吐量。使用這種服務(wù),該應(yīng)用程序能夠請(qǐng)求 r 比特/秒的確保吞吐量,并且該運(yùn)輸協(xié)議能夠確保可用吞吐量總是為至少 r 比特/秒。
例如,如果因特網(wǎng)電話應(yīng)用程序?qū)φZ(yǔ)音以32kbps的速率進(jìn)行編碼, 那么它需要以這個(gè)速率向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),并以該速率向接收應(yīng)用程序交付數(shù)據(jù)。如果運(yùn)輸協(xié)議不能提供這種吞吐量,該應(yīng)用程序或以較低速率進(jìn)行編碼(并且接收足夠的吞吐量以 維持這種較低的編碼速率),或它可能必須放棄發(fā)送.這是因?yàn)閷?duì)于這種因特網(wǎng)電話應(yīng)用而言,接收所需吞吐量的一半是幾乎沒(méi)有或根本沒(méi)有用處的。
具有吞吐量要求的應(yīng)用程序被稱為帶寬敏感的應(yīng)用。
帶寬敏感的應(yīng)用具有特定的吞吐量要求,而彈性應(yīng)用(elastic application 能夠根據(jù)當(dāng)時(shí)可用的帶寬或多或少地利用可供使用的吞吐量。電子郵件、文件傳輸以及Web傳送都屬于彈性應(yīng)用。
定時(shí)
運(yùn)輸層協(xié)議也能提供定時(shí)保證。如同具有吞吐量保證那樣,定時(shí)保證能夠以多種形式實(shí)現(xiàn)。一個(gè)保證的例子如 發(fā)送方注入進(jìn)套接字中的每個(gè)比特到達(dá)接收方的套接字不遲于100mso這種服務(wù)將對(duì)交互式實(shí)時(shí)應(yīng)用程序有吸引力,如因特網(wǎng)電話、虛擬環(huán)境、電話會(huì) 議和多方游戲,所有這些服務(wù)為了有效性而要求數(shù)據(jù)交付有嚴(yán)格的時(shí)間限制。
安全性
運(yùn)輸協(xié)議能夠?yàn)閼?yīng)用程序提供一種或多種安全性服務(wù)。例如,在發(fā)送主機(jī) 中,運(yùn)輸協(xié)議能夠加密由發(fā)送進(jìn)程傳輸?shù)乃袛?shù)據(jù),在接收主機(jī)中,運(yùn)輸層協(xié)議能夠在將數(shù)據(jù)交付給接收進(jìn)程之前解密這些數(shù)據(jù)。
因特網(wǎng)提供的運(yùn)輸服務(wù)
因特網(wǎng)(更一般的是TCP/IP網(wǎng)絡(luò))為應(yīng)用程序?yàn)閼?yīng)用程序提供兩個(gè)運(yùn)輸層協(xié)議,即UDP和TCP。
當(dāng)你(作為一個(gè)軟件開(kāi)發(fā)者)為因特網(wǎng)創(chuàng)建一個(gè)新的 應(yīng)用時(shí),首先要做出的決定是,選擇UDP還是選擇TCP。每個(gè)協(xié)議為調(diào)用它們的應(yīng)用程序 提供了不同的服務(wù)集合。
TCP服務(wù)
TCP協(xié)議包括面向連接服務(wù)和可靠數(shù)據(jù)傳輸服務(wù)。還具有擁塞控制機(jī)制。
面向連接的服務(wù)
在應(yīng)用層數(shù)據(jù)報(bào)文開(kāi)始流動(dòng)之前,TCP讓客戶和服務(wù)器互相交 換運(yùn)輸層控制信息。這個(gè)所謂的握手過(guò)程提醒客戶和服務(wù)器,讓它們?yōu)榇罅糠纸M 的到來(lái)做好準(zhǔn)備。在握手階段后,一個(gè)TCP連接就在兩個(gè)進(jìn)程的套接字之間建立了。這條連接是全雙工的,即連接雙方的進(jìn)程可以在此連接上同時(shí)進(jìn)行報(bào)文收發(fā)。當(dāng)應(yīng)用程序結(jié)束報(bào)文發(fā)送時(shí),必須拆除該連接。
可靠的數(shù)據(jù)傳送服務(wù)
通信進(jìn)程能夠依靠TCP,無(wú)差錯(cuò)、按適當(dāng)順序交付所有發(fā)送的數(shù)據(jù)。當(dāng)應(yīng)用程序的一端將字節(jié)流傳進(jìn)套接字時(shí),它能夠依靠TCP將相同的 字節(jié)流交付給接收方的套接字,而沒(méi)有字節(jié)的丟失和冗余。
擁塞控制
這種服務(wù)不一定能為通信進(jìn)程帶來(lái)直接好處,但能為 因特網(wǎng)帶來(lái)整體好處。當(dāng)發(fā)送方和接收方之間的網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),TCP的擁塞控制機(jī)制會(huì)抑制發(fā)送進(jìn)程(客戶或服務(wù)器)。
TCP安全
無(wú)論TCP還是UDP都沒(méi)有提供任何加密機(jī)制,這就是說(shuō)發(fā)送進(jìn)程傳進(jìn)其套接字的數(shù)據(jù),與經(jīng)網(wǎng)絡(luò)傳送到目的進(jìn)程的數(shù)據(jù)相同。因此,舉例來(lái)說(shuō)如果某發(fā)送進(jìn)程以明文方式(即沒(méi)有加密)發(fā)送了一個(gè)口令進(jìn)入它的套接字,該明文口令將經(jīng)過(guò)發(fā)送方與接收方之間的所有鏈路傳送,這就可能在任何中間鏈路被嗅探和發(fā)現(xiàn)。因?yàn)殡[私和其他安全問(wèn) 題對(duì)許多應(yīng)用而言已經(jīng)成為至關(guān)重要的問(wèn)題,所以因特網(wǎng)界已經(jīng)研制了 TCP的加強(qiáng)版 本,稱為安全套接字層(Secure Sockets Layer, SSL)。用SSL加強(qiáng)后的TCP不僅能夠做 傳統(tǒng)的TCP所能做的一切,而且提供了關(guān)鍵的進(jìn)程到進(jìn)程的安全性服務(wù),包括加密、數(shù)據(jù)完整性和端點(diǎn)鑒別。我們強(qiáng)調(diào)SSL不是與TCP和UDP在相同層次上的第三種因特網(wǎng)運(yùn)輸協(xié)議,而是一種對(duì)TCP的加強(qiáng),這種強(qiáng)化是在應(yīng)用層上實(shí)現(xiàn)的。
UDP服務(wù)
UDP是一種不提供不必要服務(wù)的輕量級(jí)運(yùn)輸協(xié)議,它僅提供最小服務(wù)。
UDP是無(wú)連接的,因此在兩個(gè)進(jìn)程通信前沒(méi)有握手過(guò)程。
UDP協(xié)議提供一種不可靠數(shù)據(jù)傳送服務(wù),也就是說(shuō),當(dāng)進(jìn)程將一個(gè)報(bào)文發(fā)送進(jìn)UDP套接字時(shí),UDP協(xié)議并不保證該報(bào)文將到達(dá)接收進(jìn)程。不僅如此,到達(dá)接收進(jìn)程的報(bào)文也可能是亂序到達(dá)的。
UDP沒(méi)有包括擁塞控制機(jī)制,所以UDP的發(fā)送端可以用它選定的任何速率向其下層 (網(wǎng)絡(luò)層)注入數(shù)據(jù)。
應(yīng)用層協(xié)議
應(yīng)用層協(xié)議定義了運(yùn)行在不同端系統(tǒng)上的應(yīng)用程序進(jìn)程如何相互傳遞報(bào)文。
特別是定義了:
- 交換的報(bào)文類型,例如請(qǐng)求報(bào)文和響應(yīng)報(bào)文。
- 各段報(bào)文類型的語(yǔ)法,如報(bào)文中的各個(gè)字段及這些字段是如何描述的。
- 字段的語(yǔ)義,即這些字段中包含的信息的含義。
- 一個(gè)進(jìn)程何時(shí)以及如何發(fā)送報(bào)文,對(duì)報(bào)文進(jìn)行響應(yīng)的規(guī)則。
有些應(yīng)用層協(xié)議是由RFC文檔定義的,因此它們位于公共域中。例如,Web的應(yīng)用層協(xié)議HTTP就作為一個(gè)RFC可供使用。如果瀏覽器開(kāi) 發(fā)者遵從HTTP RFC規(guī)則,所開(kāi)發(fā)出的瀏覽器就能訪問(wèn)任何遵從該文檔標(biāo)準(zhǔn)的Web服務(wù)器并獲取相應(yīng)Web頁(yè)面。還有很多別的應(yīng)用層協(xié)議是專用的,有意不為公共域使用。例如,Skype使用了專用的應(yīng)用層協(xié)議。
網(wǎng)絡(luò)應(yīng)用和應(yīng)用層協(xié)議區(qū)別
應(yīng)用層協(xié)議只是網(wǎng)絡(luò)應(yīng)用的一部分。
比如,Web是一種客戶----服務(wù)器應(yīng)用,它允許客戶按照需求從Web服務(wù)器獲得文檔。
該Web應(yīng)用有很多組成部分,包括文檔格式的標(biāo)準(zhǔn)(即HTML)、Web瀏覽器(如Firefox和Microsoft Internet Explorer)、Web服務(wù)器(如Apache、Microsoft服務(wù)器程序),以及一個(gè)應(yīng)用層協(xié)議。
Web的應(yīng)用層協(xié)議是HTTP,它定義了在瀏覽器和Web服務(wù)器之間傳輸?shù)膱?bào)文格式和序列。因此,HTTP只是Web應(yīng)用的一個(gè)部分。
總結(jié)
以上是生活随笔為你收集整理的计算机网络笔记----应用层的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 真心话100个问题刺激合集大全
- 下一篇: C语言数组、字符与字符串笔记