![計算機(jī)網(wǎng)絡(luò)002課件_第1頁](http://file4.renrendoc.com/view/cea3f8af5d85b1c94b1297f9e53659d4/cea3f8af5d85b1c94b1297f9e53659d41.gif)
![計算機(jī)網(wǎng)絡(luò)002課件_第2頁](http://file4.renrendoc.com/view/cea3f8af5d85b1c94b1297f9e53659d4/cea3f8af5d85b1c94b1297f9e53659d42.gif)
![計算機(jī)網(wǎng)絡(luò)002課件_第3頁](http://file4.renrendoc.com/view/cea3f8af5d85b1c94b1297f9e53659d4/cea3f8af5d85b1c94b1297f9e53659d43.gif)
![計算機(jī)網(wǎng)絡(luò)002課件_第4頁](http://file4.renrendoc.com/view/cea3f8af5d85b1c94b1297f9e53659d4/cea3f8af5d85b1c94b1297f9e53659d44.gif)
![計算機(jī)網(wǎng)絡(luò)002課件_第5頁](http://file4.renrendoc.com/view/cea3f8af5d85b1c94b1297f9e53659d4/cea3f8af5d85b1c94b1297f9e53659d45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章應(yīng)用層
網(wǎng)絡(luò)應(yīng)用是計算機(jī)網(wǎng)絡(luò)的重要功能之一。20世紀(jì)80年代:基于文本的電子郵件、文件傳輸、文本聊天等等。20世紀(jì)90年代:Web應(yīng)用、IP電話、視頻會議等。20世紀(jì)末:即時訊息、P2P對等文件共享。1學(xué)習(xí)目標(biāo)和主要內(nèi)容學(xué)習(xí)目標(biāo)網(wǎng)絡(luò)應(yīng)用的原理和實現(xiàn)方面的知識。主要內(nèi)容應(yīng)用層概念:應(yīng)用層協(xié)議、客戶機(jī)與服務(wù)器、進(jìn)程、套接字和運(yùn)輸層接口。應(yīng)用程序:Web、電子郵件、域名系統(tǒng)DNS及P2P對等文件共享。開發(fā)網(wǎng)絡(luò)應(yīng)用程序的方法:套接字API編程。2本章內(nèi)容2.1應(yīng)用層協(xié)議原理2.2Web和HTTP2.3FTP2.4電子郵件2.5DNS2.6P2P文件共享2.7TCP的套接字編程2.8UDP的套接字編程2.9構(gòu)建一個Web服務(wù)器2.10小結(jié)3流行的網(wǎng)絡(luò)應(yīng)用程序E-mailWeb即時訊息遠(yuǎn)程注冊P2P文件共享多用戶網(wǎng)絡(luò)游戲流式存儲視頻片段因特網(wǎng)電話實時視頻會議大規(guī)模并行計算編制應(yīng)用程序4網(wǎng)絡(luò)應(yīng)用程序的研發(fā)要點寫出能夠分別在不同端系統(tǒng)運(yùn)行,并通過網(wǎng)絡(luò)相互通信的程序。如Web應(yīng)用程序,由兩個可以相互通信的程序組成瀏覽器程序:運(yùn)行在用戶主機(jī)上;Web服務(wù)器程序:運(yùn)行在Web服務(wù)器主機(jī)上。應(yīng)用程序軟件只在端系統(tǒng)運(yùn)行,不需在網(wǎng)絡(luò)核心設(shè)備上運(yùn)行。網(wǎng)絡(luò)核心設(shè)備無應(yīng)用層,只有較低層。
如圖2-1。5本節(jié)內(nèi)容2.1.1網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)2.1.2進(jìn)程通信2.1.3應(yīng)用層協(xié)議2.1.4應(yīng)用所需要的服務(wù)2.1.5因特網(wǎng)運(yùn)輸協(xié)議提供的服務(wù)2.1.6本書介紹的網(wǎng)絡(luò)應(yīng)用Web、文件傳輸、電子郵件、目錄服務(wù)、對等文件共享等五個。62.1.1網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)應(yīng)用程序體系結(jié)構(gòu):規(guī)定如何在各種端系統(tǒng)上組織應(yīng)用程序,由研發(fā)者設(shè)計。
三種類型:客戶機(jī)/服務(wù)器對等(P2P)客戶機(jī)/服務(wù)器與P2P的混合71、客戶機(jī)/服務(wù)器體系結(jié)構(gòu)服務(wù)器:
總是打開為多個客戶機(jī)請求提供服務(wù)永久的IP地址可擴(kuò)展為服務(wù)器場(主機(jī)群集)客戶機(jī):總是打開或間歇打開向服務(wù)器發(fā)出請求具有動態(tài)的IP地址彼此之間不直接通信
如Web應(yīng)用程序:總是打開的Web服務(wù)器為運(yùn)行在客戶機(jī)主機(jī)上的瀏覽器的請求提供服務(wù)(接收客戶機(jī)請求,并發(fā)送響應(yīng)結(jié)果)。
服務(wù)器響應(yīng)客戶請求82、純P2P體系結(jié)構(gòu)(peer-to-peer)
無(最少)打開的服務(wù)器任意端系統(tǒng)(對等方)可以直接通信對等方間歇地連接,IP地址不固定例:文件分發(fā)、因特網(wǎng)電話等??蓴U(kuò)展度高、難以管理93、客戶機(jī)/服務(wù)器與P2P的混合Napster:MP3文件共享應(yīng)用程序。
P2P:對等方直接交換MP3文件服務(wù)器注冊/定位:對等方在中心服務(wù)器上注冊內(nèi)容對等方查詢相同的中心服務(wù)器以定位內(nèi)容即時訊息:P2P:兩個用戶直接聊天服務(wù)器檢測/定位:用戶在線時,向中心服務(wù)器注冊其IP地址用戶聯(lián)系中心服務(wù)器以找到聊天伙伴的IP地址102.1.2進(jìn)程通信進(jìn)程(process):在主機(jī)上運(yùn)行的程序。進(jìn)程通信:同一主機(jī)中兩個進(jìn)程間的通信:由操作系統(tǒng)控制;不同主機(jī)中進(jìn)程間的通信:通過網(wǎng)絡(luò)交換報文進(jìn)行。
發(fā)送進(jìn)程:產(chǎn)生報文并向網(wǎng)絡(luò)發(fā)送;
接收進(jìn)程:接收報文,并回送報文。如圖2-1。111、客戶機(jī)和服務(wù)器進(jìn)程網(wǎng)絡(luò)應(yīng)用程序由成對的進(jìn)程組成,并通過網(wǎng)絡(luò)相互發(fā)送報文。如圖2-1
根據(jù)功能分別標(biāo)示為客戶機(jī)和服務(wù)器客戶機(jī)進(jìn)程:發(fā)起通信的進(jìn)程。
服務(wù)器進(jìn)程:等待其他進(jìn)程聯(lián)系的進(jìn)程。如Web應(yīng)用程序中,一個客戶機(jī)瀏覽器進(jìn)程向某個Web服務(wù)器進(jìn)程發(fā)起聯(lián)系,交換報文。12說明:
P2P結(jié)構(gòu)的應(yīng)用程序也可分別看成是客戶機(jī)進(jìn)程或服務(wù)器進(jìn)程。如,對等方A(客戶機(jī))請求對等方B(服務(wù)器)發(fā)送某個文件。132、套接字(socket)套接字:同一臺主機(jī)內(nèi)應(yīng)用層與運(yùn)輸層之間的接口。也叫應(yīng)用程序和網(wǎng)絡(luò)之間的應(yīng)用程序接口API
,是在網(wǎng)絡(luò)上建立網(wǎng)絡(luò)應(yīng)用程序的可編程接口。進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器因特網(wǎng)由操作系統(tǒng)控制由應(yīng)用研發(fā)者控制應(yīng)用層運(yùn)輸層14進(jìn)程與套接字關(guān)系進(jìn)程類似房子,套接字是進(jìn)程的門。進(jìn)程通過套接字在網(wǎng)絡(luò)上發(fā)送和接收報文。進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器因特網(wǎng)由操作系統(tǒng)控制由應(yīng)用研發(fā)者控制發(fā)送進(jìn)程:把報文推出門(套接字)。傳送報文:通過下面網(wǎng)絡(luò)把報文傳送到目的進(jìn)程門口。接收進(jìn)程:通過其門(套接字)接收報文15說明應(yīng)用程序開發(fā)者可以控制套接字應(yīng)用層端的全部;對套接字的運(yùn)輸層端幾乎不能控制(只能選擇運(yùn)輸層協(xié)議、設(shè)定幾個運(yùn)輸層參數(shù)等)。應(yīng)用程序開發(fā)者選擇了一個運(yùn)輸層協(xié)議,則應(yīng)用程序就建立在由該協(xié)議提供的運(yùn)輸層服務(wù)之上。如TCP協(xié)議。進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器因特網(wǎng)由操作系統(tǒng)控制由應(yīng)用研發(fā)者控制163、進(jìn)程尋址主機(jī)上的進(jìn)程可以有多個。網(wǎng)絡(luò)中有多個主機(jī),每個主機(jī)上有多個進(jìn)程。進(jìn)程識別信息:表示哪臺主機(jī)上的哪一個進(jìn)程。源主機(jī)上的進(jìn)程向目的主機(jī)上的進(jìn)程發(fā)送報文時,應(yīng)帶有接收進(jìn)程的識別信息(標(biāo)識)。進(jìn)程尋址:根據(jù)進(jìn)程識別信息找到相應(yīng)進(jìn)程。如何識別進(jìn)程?確定主機(jī)確定進(jìn)程17進(jìn)程識別信息(兩部分)主機(jī)名稱或地址:網(wǎng)絡(luò)中的哪一個主機(jī)。因特網(wǎng)中,用IP地址標(biāo)識(32位,全球惟一)。進(jìn)程的標(biāo)識:主機(jī)中的哪一個進(jìn)程。因特網(wǎng)中,采用端口號標(biāo)識(portnumber)。常用的應(yīng)用程序被指派固定的端口號(周知端口)。如,Web服務(wù)進(jìn)程(HTTP協(xié)議):80郵件服務(wù)進(jìn)程(SMTP協(xié)議):25創(chuàng)建一個新的網(wǎng)絡(luò)應(yīng)用程序時,必須分配一個新的端口號。不重復(fù)。184、用戶代理(useragent)是用戶與網(wǎng)絡(luò)應(yīng)用程序之間的接口。如:Web應(yīng)用的用戶代理:是一些瀏覽器軟件。一個通過套接字收發(fā)報文,并提供用戶接口的進(jìn)程。電子郵件應(yīng)用程序用戶代理:是“郵件閱讀器”。允許用戶進(jìn)行郵件的撰寫和閱讀。192.1.3應(yīng)用層協(xié)議定義了運(yùn)行在不同端系統(tǒng)上的應(yīng)用程序進(jìn)程間傳遞報文的格式和方式。具體內(nèi)容:
交換的報文類型:如請求報文和響應(yīng)報文;各種報文類型的語法:報文中的各個字段及描述;字段的語義:字段包含信息的含義;進(jìn)程何時、如何發(fā)送報文及對報文進(jìn)行響應(yīng)的規(guī)則。20說明公共領(lǐng)域協(xié)議:由標(biāo)準(zhǔn)文檔RFC定義,如HTTP。
專用層協(xié)議:如P2P使用的協(xié)議。應(yīng)用層協(xié)議是網(wǎng)絡(luò)應(yīng)用的一部分。如Web應(yīng)用,客戶機(jī)從Web服務(wù)器獲得“文檔”。組成:HTML、Web瀏覽器、Web服務(wù)器程序,以及一個應(yīng)用層協(xié)議HTTP(超文本傳輸協(xié)議)等。HTTP定義了在瀏覽器程序和Web服務(wù)器程序間傳輸?shù)膱笪母袷胶托蛄?。其他協(xié)議:電子郵件協(xié)議SMTP等等212.1.4應(yīng)用程序所需要的服務(wù)應(yīng)用程序間通信:由運(yùn)輸協(xié)議跨越網(wǎng)絡(luò)將發(fā)送進(jìn)程的報文傳輸?shù)浇邮者M(jìn)程的門戶
。需要使用運(yùn)輸協(xié)議所提供的服務(wù)。運(yùn)輸協(xié)議有多種,提供的服務(wù)不同。進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器因特網(wǎng)由操作系統(tǒng)控制由應(yīng)用研發(fā)者控制22應(yīng)用程序需要什么樣的運(yùn)輸服務(wù)?可靠的數(shù)據(jù)傳輸(無數(shù)據(jù)丟失)數(shù)據(jù)不能丟失的應(yīng)用:如文件傳輸、金融事務(wù)等。能容忍數(shù)據(jù)丟失的應(yīng)用:如多媒體應(yīng)用。帶寬(數(shù)據(jù)傳輸率)帶寬敏感的應(yīng)用:需要特定的帶寬才能正常工作。如,因特網(wǎng)電話、其他多媒體應(yīng)用。彈性應(yīng)用:使用的帶寬多或少影響不大。如電子郵件、文件傳輸以及Web傳輸。定時(數(shù)據(jù)傳輸?shù)臅r間限制)交互式實時應(yīng)用:對時間敏感,要求時延小。如,因特網(wǎng)電話、視頻會議以及多方游戲等。非實時應(yīng)用:時延無限制,低更好。23典型應(yīng)用的運(yùn)輸服務(wù)要求應(yīng)用程序文件傳輸電子郵件Web文檔實時音頻/視頻(因特網(wǎng)電話/視頻會議)存儲音頻/視頻交互式游戲即時訊息數(shù)據(jù)丟失不能丟失
不能丟失不能丟失容忍丟失容忍丟失容忍丟失不能丟失
帶寬彈性彈性彈性音頻:5kbps-1Mbps視頻:10kbps-5Mbps同上幾kbps以上彈性時間敏感不不不是,100ms是,幾秒是,100ms是和不是242.1.5因特網(wǎng)運(yùn)輸協(xié)議提供的服務(wù)兩個運(yùn)輸層協(xié)議:用戶數(shù)據(jù)報協(xié)議UDP傳輸控制協(xié)議TCP每個協(xié)議為調(diào)用它們的應(yīng)用程序提供不同的服務(wù)模型。在創(chuàng)建一個新的因特網(wǎng)應(yīng)用時,要選擇其中一個。251、TCP服務(wù)兩個方面:面向連接的服務(wù):可靠的傳輸服務(wù):26面向連接的服務(wù)劃分三階段建立連接(握手過程):客戶機(jī)程序和服務(wù)器程序之間互相交換控制信息,在兩個進(jìn)程的套接字之間建立一個TCP連接。傳輸報文:連接是全雙工的,即連接雙方的進(jìn)程可以在此連接上同時進(jìn)行報文收發(fā)。拆除連接:應(yīng)用程序報文發(fā)送結(jié)束。27可靠的傳輸服務(wù)通信進(jìn)程可以無差錯、按適當(dāng)順序交付發(fā)送的數(shù)據(jù)。沒有數(shù)據(jù)丟失和重復(fù)。28擁塞控制當(dāng)發(fā)送方和接收方之間的網(wǎng)絡(luò)出現(xiàn)擁塞時,會抑制發(fā)送進(jìn)程速率。對整個網(wǎng)絡(luò)有益。29未提供的服務(wù)不確保最小傳輸速率:發(fā)送進(jìn)程受擁塞控制機(jī)制制約;不提供時延保證:數(shù)據(jù)傳輸?shù)臅r間不確定。
TCP協(xié)議能保證交付所有的數(shù)據(jù),但并不保證這些數(shù)據(jù)傳輸?shù)乃俾室约捌诖膫鬏敃r延。TCP協(xié)議不適合實時應(yīng)用。302、UDP服務(wù)提供最小服務(wù)模式運(yùn)行。無連接:兩個進(jìn)程通信前沒有握手過程;不可靠數(shù)據(jù)傳輸:不保證報文能夠被接收,或收到的報文是亂序到達(dá)。沒有擁塞控制機(jī)制:發(fā)送進(jìn)程可以任何速率發(fā)送數(shù)據(jù)不提供時延保證:適于實時應(yīng)用。31因特網(wǎng)應(yīng)用、應(yīng)用協(xié)議與運(yùn)輸協(xié)議
應(yīng)用 應(yīng)用層協(xié)議 傳輸協(xié)議電子郵件 SMTP TCP遠(yuǎn)程終端訪問Telnet TCPWeb HTTP TCP文件傳輸 FTP TCP遠(yuǎn)程文件服務(wù)器NFS UDP或TCP流媒體 HTTP、RTPUDP或TCP因特網(wǎng)電話 SIP、RTP 典型用UDP322.2Web應(yīng)用和HTTP協(xié)議產(chǎn)生于20世紀(jì)90年代初期。改變了人們與工作環(huán)境內(nèi)外的交流方式;提升因特網(wǎng)地位;生活和工作發(fā)生變化;方便、快捷得到所需要的信息(按需操作);任何人在Web上發(fā)布信息;超鏈接和搜索引擎幫助人們?yōu)g覽Web站點。33本節(jié)內(nèi)容2.2.1HTTP概況2.2.2HTTP連接2.2.3HTTP報文格式2.2.4用戶與服務(wù)器交互:Cookie2.2.5HTTP內(nèi)容2.2.6Web緩存2.2.7條件GET方法342.2.1HTTP概況HTTP(超文本傳輸協(xié)議):應(yīng)用層協(xié)議,Web的核心。包括兩部分:客戶機(jī)程序服務(wù)器程序分別運(yùn)行在不同的端系統(tǒng)中,通過交換HTTP報文進(jìn)行會話。HTTP協(xié)議定義了報文的格式以及客戶機(jī)和服務(wù)器交換報文的方式。
35Web常用術(shù)語Web頁(文檔):由若干對象組成。
對象:是文件。通過一個URL地址來尋址。如HTML文件、JPEG圖形文件、Java小程序等。
Web頁含有一個基本的HTML文件及幾個引用對象。例如,一個Web頁包含HTML文本和5個JPEG圖形文件(即有6個對象)。在基本的HTML文件中,每個對象可由URL來尋址。
超文本標(biāo)記語言統(tǒng)一資源定位符36Web常用術(shù)語URL:UniformResourceLocator。統(tǒng)一資源定位符。標(biāo)識萬維網(wǎng)WWW上的各種文檔,全網(wǎng)范圍唯一。URL地址組成:存放對象的服務(wù)器主機(jī)名和對象的路徑名。如
http://www.someS/somedepartment/picture.gif
主機(jī)名路徑名37Web常用術(shù)語瀏覽器(客戶機(jī)):是Web應(yīng)用的用戶代理,用于顯示所請求的Web頁,提供導(dǎo)航功能和配置屬性。
實現(xiàn)了HTTP協(xié)議的客戶機(jī)端。Web服務(wù)器:用于存貯Web對象(由URL尋址)。實現(xiàn)HTTP協(xié)議的服務(wù)器端。
HTTP協(xié)議定義了Web客戶機(jī)(瀏覽器)如何向Web站點請求Web頁,以及服務(wù)器如何將Web頁傳送給客戶機(jī)。38客戶機(jī)和服務(wù)器之間交互過程PC運(yùn)行Explorer服務(wù)器運(yùn)行ApacheWeb服務(wù)器Mac運(yùn)行NavigatorHTTP請求HTTP請求HTTP響應(yīng)HTTP響應(yīng)客戶機(jī):用戶請求一個Web頁(如點擊一個超鏈接),瀏覽器向服務(wù)器發(fā)出對該頁所含對象的“HTTP請求報文”。服務(wù)器:接受請求,回發(fā)包含請求對象的“HTTP響應(yīng)報文”39說明HTTP協(xié)議使用的底層運(yùn)輸協(xié)議是TCP。工作過程:
創(chuàng)建TCP連接交換報文關(guān)閉TCP連接客戶機(jī)先與服務(wù)器建立TCP連接,然后,瀏覽器和服務(wù)器進(jìn)程通過套接字訪問TCP:如圖2-3客戶機(jī):從其套接字接口發(fā)送“HTTP請求報文”和接收“響應(yīng)報文”;服務(wù)器:從其套接字口接收“HTTP請求報文”和發(fā)送“響應(yīng)報文”。40說明TCP提供可靠的數(shù)據(jù)傳輸服務(wù):客戶機(jī)進(jìn)程和服務(wù)器進(jìn)程發(fā)出的每個HTTP報文能完整地到達(dá)對方。HTTP是無狀態(tài)協(xié)議:服務(wù)器不保存關(guān)于客戶機(jī)的任何信息。Web使用客戶機(jī)/服務(wù)器結(jié)構(gòu),Web服務(wù)器總是打開,有一個固定IP地址,為多個瀏覽器服務(wù)。412.2.2HTTP連接持久HTTP連接一個TCP連接上可以傳送多個Web對象傳送多個請求/相應(yīng)對非持久HTTP連接每個TCP連接上只傳送一個Web對象只傳送一個請求/相應(yīng)對默認(rèn)方式下使用持久連接421、非持久連接例,客戶機(jī)向服務(wù)器請求傳送一個Web頁:含有一個基本HTML文件和10個JPEG圖形,11個對象位于同一個服務(wù)器上。HTML文件的URL為:http://www.someS/someDepartment/home.index43工作過程1a.
HTTP客戶初始化一個與服務(wù)器主機(jī)www.someS中HTTP服務(wù)器進(jìn)程的TCP連接
2.
HTTP客戶發(fā)送一個HTTP請求報文(包含URL)到TCP連接套接字,
報文指明客戶需要的Web對象-someDepartment/home.index1b.
www.someS服務(wù)器主機(jī)中的HTTP服務(wù)器在80端口監(jiān)聽來自HTTP客戶的TCP連接請求,收到連接請求,接受,建立連接,通知客戶。3.
HTTP服務(wù)器接收請求報文,產(chǎn)生一個響應(yīng)報文(包含被請求對象),并發(fā)送到其TCP連接套接字timeTCP連接報文傳輸445.
HTTP客戶機(jī)接收包含HTML文件的響應(yīng)報文,顯示并解析HTML文件,發(fā)現(xiàn)10個引用的jpeg對象6.
對10個jpeg對象重復(fù)步驟1~54.
HTTP服務(wù)器關(guān)閉TCP連接time45說明:每個TCP連接在服務(wù)器返回對象后關(guān)閉(非持久)。每個TCP連接只傳輸一個請求報文和一個響應(yīng)報文;上例中,要建立11個TCP連接。瀏覽器可同時打開多個連接:并行的TCP連接:并行數(shù)大于1。默認(rèn)打開5~10個。串行的TCP連接:最大并行數(shù)為1。46請求一個HTML文件所需時間即從客戶機(jī)請求基本HTML文件開始,到用戶收到整個文件為止所花時間。往返時延RTT:一個小分組從客戶機(jī)到服務(wù)器,再回到客戶機(jī)所花時間。包括傳播時延、排隊時延以及處理時延。47TCP連接的“三次握手”過程客戶機(jī)發(fā)送一個TCP連接請求報文服務(wù)器回送一個TCP確認(rèn)響應(yīng)報文客戶機(jī)向服務(wù)器發(fā)送一個包含“
HTTP請求”與“TCP確認(rèn)”的報文總響應(yīng)時間:兩個RTT時延加上服務(wù)器發(fā)送文件的時間總計=2RTT+文件傳輸時間傳輸文件的時間發(fā)起TCP連接RTT請求文件RTT接收文件時間時間三次握手建立TCP連接交換報文48非持久連接缺點服務(wù)器負(fù)擔(dān)重:每一個請求對象建立和維護(hù)一個新的連接。每一個對象的傳輸時延長:包含兩個RTT時延,一個用于TCP建立,一個用于請求和接收對象。492、持久連接服務(wù)器在發(fā)送響應(yīng)后保持該TCP連接:相同客戶機(jī)與服務(wù)器之間的后續(xù)請求和響應(yīng)報文通過相同的連接進(jìn)行傳送。如,一個Web頁的所有對象可以通過一個持久TCP連接傳送?;蛲环?wù)器上的多個Web頁也可以通過一個持久TCP連接傳送給同一個客戶機(jī)。連接經(jīng)一定時間間隔(超時間隔)未被使用,服務(wù)器就關(guān)閉該連接。50持久連接兩種方式非流水線方式:客戶機(jī)只能在前一個響應(yīng)接收到之后才能發(fā)出新的請求??蛻魴C(jī)為每一個引用對象的請求和接收都使用一個RTT時延。會浪費(fèi)一些服務(wù)器資源:服務(wù)器在發(fā)送完一個對象,等待下一個請求時,會出現(xiàn)空閑狀態(tài)。51持久連接兩種方式流水線方式:客戶機(jī)可一個接一個連續(xù)產(chǎn)生請求(只要有引用就產(chǎn)生),即在前一個請求接收到響應(yīng)之前可以產(chǎn)生新的請求。服務(wù)器一個接一個連續(xù)發(fā)送相應(yīng)對象。特點:節(jié)省RTT時延,可能所有引用對象只花費(fèi)一個。TCP連接空閑時間很短。
默認(rèn)方式:流水線方式的持久連接。521、HTTP請求報文客戶機(jī)向服務(wù)器發(fā)送。ASCII文本形式,易讀。
例:GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0Connection:closeAccept-language:fr(另外的回車,換行)
請求行(GET,POST,HEAD命令)首部行回車,換行指示報文的結(jié)束對象URL路徑名版本對象主機(jī)瀏覽器類型非持久方法(命令)——GET:請求一個對象。POST:提交表單(添加信息)。HEAD:請求返回對象響應(yīng)報文首部返回對象的語言53HTTP請求報文通用格式請求行首部行實體主體方法版本首部字段名首部字段名值值542、HTTP響應(yīng)報文HTTP/1.1200OKConnectioncloseDate:Thu,06Aug199812:00:15GMT服務(wù)器:Apache/1.3.0(Unix)Last-Modified:Mon,22Jun1998…...Content-Length:6821Content-Type:text/html
datadatadatadatadata...
狀態(tài)行(版本、狀態(tài)碼、狀態(tài)短語)首部行實體:數(shù)據(jù),如請求的HTML文件請求成功關(guān)閉連接發(fā)送日期對象創(chuàng)建或修改日期對象長度服務(wù)器到客戶機(jī)的回答55HTTP響應(yīng)狀態(tài)碼200OK請求成功,請求的對象在這個報文后面301MovedPermanently請求的對象已轉(zhuǎn)移,新的URL在響應(yīng)報文的Location:首部行中指定400BadRequest請求報文不為服務(wù)器理解404NotFound請求的文檔沒有在該服務(wù)器上發(fā)現(xiàn)505HTTPVersionNotSupported服務(wù)器不支持請求報文使用的HTTP版本在服務(wù)器到客戶機(jī)響應(yīng)報文中的首行。56自行試驗HTTP(客戶機(jī)側(cè))1.Telnet到某個Web服務(wù)器上:打開到位于的端口80(默認(rèn)的HTTP服務(wù)器端口).鍵入的任何東西將發(fā)送到位于的80端口telnet802.鍵入一個GETHTTP請求:GET/~ross/HTTP/1.1Host:向HTTP服務(wù)器發(fā)送最小的GET請求3.得到由HTTP服務(wù)器發(fā)送的響應(yīng)報文!572.2.4用戶與服務(wù)器交互:Cookie
HTTP服務(wù)器是無狀態(tài)的,不保存客戶信息。Cookie:允許Web站點跟蹤、識別用戶;服務(wù)器可以限制用戶訪問,或把內(nèi)容與用戶身份關(guān)聯(lián)。
許多重要的Web站點使用cookies。包括四個部分1)在HTTP響應(yīng)報文中有一個cookie首部行2)在HTTP請求報文中有一個cookie首部行3)用戶主機(jī)中保留有一個cookie文件并由瀏覽器管理4)Web站點的后端數(shù)據(jù)庫保存cookie58例Susan總是從相同的PC訪問因特網(wǎng)她首次訪問一個特定的電子商務(wù)站點當(dāng)起始HTTP請求到達(dá)站點時,站點產(chǎn)生一個獨(dú)特的ID,并為ID在后端數(shù)據(jù)庫中生成一個表項59工作過程客戶機(jī)服務(wù)器普通HTTP請求報文普通HTTP響應(yīng)+Set-cookie:1678普通HTTP請求報文cookie:1678普通HTTP響應(yīng)報文普通HTTP請求報文cookie:1678普通HTTP響應(yīng)報文特定cookie動作特定cookie動作服務(wù)器為用戶生成ID1678后端數(shù)據(jù)庫中的表項訪問訪問Cookiefile識別碼1678Cookiefile保存1678Cookiefile識別碼1678一個星期以后:60Cookie用途身份認(rèn)證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會話狀態(tài)(Webe-mail)Cookie缺陷站點可以知道用戶許多信息不利用戶隱私保護(hù)612.2.5HTTP內(nèi)容傳輸Web頁面所含對象:如HTML文件、JPEG文件、Java小應(yīng)用程序等等??梢詡鬏斊渌愋偷奈募喝鐐鬏擷ML(可擴(kuò)充的標(biāo)識語言)文件。P2P文件共享中:作為文件傳輸協(xié)議使用。用于流式存儲的音頻和視頻。622.2.6Web緩存Web緩存器(Webcache):也叫代理服務(wù)器。能夠代表起始服務(wù)器來滿足HTTP請求的網(wǎng)絡(luò)實體。保存最近請求過的對象的副本??稍诳蛻魴C(jī)或服務(wù)器工作,也可在中間系統(tǒng)工作。起始(原始)服務(wù)器(originserver):對象最初存放并始終保持其拷貝的服務(wù)器。目標(biāo):
代替原始服務(wù)器滿足HTTP請求。63使用Web緩存器用戶配置瀏覽器:
所有Web訪問經(jīng)由緩存瀏覽器向緩存發(fā)送所有HTTP請求對象在緩存中:緩存器返回對象不在:緩存向原始服務(wù)器發(fā)出請求,接收對象后轉(zhuǎn)發(fā)給客戶機(jī)客戶機(jī)代理服務(wù)器客戶機(jī)HTTP請求HTTP請求HTTP響應(yīng)HTTP響應(yīng)HTTP請求HTTP響應(yīng)起始服務(wù)器起始服務(wù)器客戶機(jī)通過Web緩存器請求對象。64具體操作過程瀏覽器:建立一個到緩存的TCP連接,并向緩存發(fā)送一個對該對象HTTP請求Web緩存器:檢查本地是否有該對象的拷貝。有:就用HTTP響應(yīng)報文向瀏覽器轉(zhuǎn)發(fā)該對象例:假設(shè)瀏覽器請求對象/campus.gif客戶機(jī)代理服務(wù)器客戶機(jī)HTTP請求HTTP請求HTTP響應(yīng)HTTP響應(yīng)HTTP請求HTTP響應(yīng)起始服務(wù)器起始服務(wù)器65緩存在TCP連接上發(fā)送獲取該對象的請求。起始服務(wù)器收到請求,向緩存發(fā)送該對象的HTTP響應(yīng)緩存接收該對象,存儲一份在本地中,并通過HTTP響應(yīng)報文向瀏覽器轉(zhuǎn)發(fā)該對象(通過已經(jīng)建立的TCP連接)。客戶機(jī)代理服務(wù)器客戶機(jī)HTTP請求HTTP請求HTTP響應(yīng)HTTP響應(yīng)HTTP請求HTTP響應(yīng)起始服務(wù)器起始服務(wù)器沒有:與該對象的起始服務(wù)器打開一個TCP連接??蛻魴C(jī)
Web緩存器起始服務(wù)器66說明Web緩存器既可以是服務(wù)器也可以是客戶機(jī):當(dāng)它接收瀏覽器請求并發(fā)回響應(yīng)時,是服務(wù)器;當(dāng)它向起始服務(wù)器發(fā)出請求并接收響應(yīng)時,是客戶機(jī)67Web緩存優(yōu)點減少客戶機(jī)請求的響應(yīng)時間:客戶機(jī)
Web緩存器起始服務(wù)器
高速鏈路
減少機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò)與因特網(wǎng)連接鏈路上的通信量:降低開銷,改善各種應(yīng)用的性能。68例1,無Web緩存包括兩個網(wǎng)絡(luò):機(jī)構(gòu)的內(nèi)部網(wǎng)絡(luò)和因特網(wǎng)。
機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò):是一個高速的局域網(wǎng)。其路由器與因特網(wǎng)上的路由器通過一條1.5Mbps的鏈路連接。起始服務(wù)器:與因特網(wǎng)相連,遍布全球。起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路69假設(shè)平均對象長度為100kb機(jī)構(gòu)內(nèi)瀏覽器對原始服務(wù)器上對象的平均請求率=15/sec機(jī)構(gòu)內(nèi)的HTTP報文小,忽略從因特網(wǎng)路由器轉(zhuǎn)發(fā)HTTP請求報文,到收到其響應(yīng)報文的時間平均=2s(因特網(wǎng)時延)
起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路70總的響應(yīng)時間
瀏覽器從請求一個對象到接收到的時間:三部分和局域網(wǎng)時延接入鏈路時延(兩個路由器間)因特網(wǎng)時延起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路71局域網(wǎng)時延:與流量強(qiáng)度有關(guān)(比特到達(dá)率/推出率)
(15請求/s)×(100kb/請求)/(10Mbit/s)=0.15強(qiáng)度為0.15的通信量最多數(shù)十毫秒的時延,可忽略接入鏈路時延:與接入流量強(qiáng)度
(路由器之間)有關(guān)(15請求/s)×(100kb/請求)/(1.5Mbit/s)=1強(qiáng)度接近1,鏈路時延非常大或無限增長??傢憫?yīng)時間=接入鏈路時延+因特網(wǎng)時延=(分鐘+2sec)請求時間長,用戶難接受。72改進(jìn)方法一增加接入鏈路的速率:如從1.5Mbps增加到10Mbps,使鏈路上的流量強(qiáng)度減少到0.15,鏈路時延也可以忽略了。
總響應(yīng)時間=因特網(wǎng)時延=2秒鐘投資較大,成本昂貴。73改進(jìn)方法二
在機(jī)構(gòu)網(wǎng)絡(luò)中安裝一個Web緩存器。起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路機(jī)構(gòu)緩存器Web緩存器的命中率:緩存器滿足請求的比率(0.2~0.7)。設(shè)命中率為0.4。74改進(jìn)方法二起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路機(jī)構(gòu)緩存器局域網(wǎng)時延:客戶機(jī)和緩存器位于同一局域網(wǎng),40%的請求幾乎會立即得到響應(yīng),時延約10ms。
剩下的60%請求需要通過訪問起始服務(wù)器才能滿足。100kb/10Mbps75接入鏈路時延:
只有60%的請求對象通過接入鏈路傳送,流量強(qiáng)度從1.0減小到0.6。通常,在1.5Mbps鏈路上,當(dāng)流量強(qiáng)度小于0.8時,時延很小,可忽略。起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路機(jī)構(gòu)緩存器Web緩存器減少響應(yīng)時延,成本低
平均時延為:
0.4×(0.01s)+0.6×(0.01s+2s)=1.21s0.01s2s762.2.7條件GET方法高速緩存:減少響應(yīng)時間;存放在緩存中的對象拷貝可能是舊的。即保存在起始Web服務(wù)器中的對象可能已經(jīng)被修改。條件GET方法:使緩存器能夠證實其保存的對象是否為最新。如果緩存中是最新對象版本,可繼續(xù)使用,起始Web服務(wù)器就不需重新發(fā)送該對象。77條件GET方法使用Web服務(wù)器回發(fā)響應(yīng)報文:包括對象的最后修改時間Last-modified:date1緩存檢查Web服務(wù)器中的該對象是否已被修改,發(fā)送一個條件GET請求報文:
If-modified-since:date1告訴服務(wù)器,僅當(dāng)自指定日期之后該對象被修改過,才發(fā)送該對象。若Web服務(wù)器中的該對象未被修改,則響應(yīng)報文含有304NotModified,并且實體為空。78例緩存器服務(wù)器304NotModified實體為空對象未修改GET/fruit/kiwi.gifHTTP/l.1Host:
HTTP/1.0200OKLast-modified:date1<data>緩存器將對象轉(zhuǎn)發(fā)到瀏覽器,并保存對象到本地(包括對象的最后修改時間)。一周后,用戶再次請求該對象(仍保留在緩存中),緩存發(fā)送一個條件GET,檢查該對象是否已被修改GET/fruit/kiwi.gifHTTP/l.1Host:
If-modified-since:date1對象未修改,緩存可以繼續(xù)使用該對象的拷貝,并轉(zhuǎn)發(fā)給用戶瀏覽器。792.3文件傳輸協(xié)議:FTP
本地主機(jī)上的用戶,向遠(yuǎn)程主機(jī)上傳或者下載文件。用戶通過一個FTP用戶代理與FTP服務(wù)器交互。文件傳輸FTP服務(wù)器FTP用戶接口FTP客戶機(jī)本地文件系統(tǒng)遠(yuǎn)程文件系統(tǒng)主機(jī)上的用戶上傳下載80文件傳輸過程用戶提供遠(yuǎn)程主機(jī)的主機(jī)名:在本地主機(jī)的FTP客戶機(jī)進(jìn)程與遠(yuǎn)程主機(jī)FTP服務(wù)器進(jìn)程之間建立TCP連接;提供用戶標(biāo)識和口令:在該TCP連接上向服務(wù)器傳送。服務(wù)器驗證通過后,進(jìn)行文件傳送(雙向):將本地文件系統(tǒng)中的文件傳送到遠(yuǎn)程文件系統(tǒng)(上傳)或從遠(yuǎn)程文件系統(tǒng)中得到文件(下載)文件傳輸FTP服務(wù)器FTP用戶接口FTP客戶機(jī)本地文件系統(tǒng)遠(yuǎn)程文件系統(tǒng)主機(jī)上的用戶81FTP與HTTP比較
都是文件傳輸協(xié)議,并運(yùn)行在TCP上。
FTP使用了兩個并行的TCP連接:控制連接:數(shù)據(jù)連接:FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口21TCP數(shù)據(jù)連接端口2082控制連接用于在兩主機(jī)間傳輸控制信息(如用戶標(biāo)識、口令等)FTP會話開始前,F(xiàn)TP的客戶機(jī)與服務(wù)器在21號端口上建立。FTP的客戶機(jī)通過該連接發(fā)送用戶標(biāo)識和口令,或改變遠(yuǎn)程目錄的命令。FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口21TCP數(shù)據(jù)連接端口2083數(shù)據(jù)連接
用于準(zhǔn)確傳輸文件。當(dāng)服務(wù)器收到一個文件傳輸?shù)拿詈?從遠(yuǎn)程主機(jī)上讀或?qū)?,在20端口發(fā)起一個到客戶機(jī)的數(shù)據(jù)連接。在該數(shù)據(jù)連接上傳送一個文件并關(guān)閉連接??刂七B接是持久的:在整個用戶會話期間一直保持;數(shù)據(jù)連接是非持久的:會話中每進(jìn)行一次文件傳輸,都需要建立一個新的數(shù)據(jù)連接。FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口21TCP數(shù)據(jù)連接端口2084
FTP的控制信息是帶外傳送(out-of-band):使用分離的控制連接;
HTTP的控制信息是帶內(nèi)傳輸(in-band):請求和響應(yīng)都是在傳輸文件的TCP連接中發(fā)送。FTP協(xié)議是有狀態(tài)的:FTP服務(wù)器對每個活動用戶會話的狀態(tài)進(jìn)行追蹤,并保留;限制同時會話的總數(shù)。
HTTP協(xié)議是無狀態(tài)的:不對用戶狀態(tài)進(jìn)行追蹤。85FTP命令,響應(yīng)命令示例:經(jīng)控制信道以ASCII文本發(fā)送USERusernamePASSpasswordLIST返回當(dāng)前目錄中的文件列表RETRfilename獲取(get)文件STORfilename
存儲(puts)文件到遠(yuǎn)程主機(jī)返回碼示例:狀態(tài)碼和短語(如在HTTP中的那樣)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile862.4因特網(wǎng)中的電子郵件電子郵件快速、多方接收,包含附件、超鏈接、圖像、聲音、視頻等等。本節(jié)討論電子郵件的核心,即應(yīng)用層協(xié)議。87因特網(wǎng)電子郵件系統(tǒng)的總體結(jié)構(gòu)三部分:用戶代理郵件服務(wù)器簡單郵件傳輸協(xié)議SMTP用戶郵箱輸出報文隊列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理用戶代理郵件服務(wù)器用戶代理SMTPSMTPSMTP電子郵件地址用戶郵箱名@主機(jī)名881、用戶代理(user
agent)當(dāng)用戶完成郵件撰寫時,郵件代理向其郵件服務(wù)器發(fā)送郵件,并存放在發(fā)送隊列中。當(dāng)用戶想讀取一條報文時,郵件代理從其郵件服務(wù)器的郵箱中獲取該報文。用戶郵箱輸出報文隊列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理SMTP郵件閱讀器。允許用戶閱讀、回復(fù)、發(fā)送、保存和撰寫報文。種類:GUI(圖形用戶接口):閱讀和編寫多媒體郵件。如Outlook、Foxmail等。892、郵件服務(wù)器(mailserver)郵箱:發(fā)送給用戶的報文。報文隊列:用戶要發(fā)出的郵件報文。用戶郵箱輸出報文隊列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理SMTP郵件發(fā)送主要過程:郵件保存到發(fā)送方報文隊列通過SMTP協(xié)議轉(zhuǎn)發(fā)到接收方郵件服務(wù)器,保存到相應(yīng)郵箱中若投遞失敗,發(fā)送方將其保存在一個報文隊列中,以后每30分鐘發(fā)送一次,若幾天后仍未成功,將該報文刪除,并通知發(fā)送方。用戶訪問自己郵箱時,郵件服務(wù)器對其身份進(jìn)行驗證(用戶名和口令)。903、簡單郵件傳送協(xié)議SMTP
從發(fā)送方的郵件服務(wù)器向接收方的郵件服務(wù)器發(fā)送郵件。應(yīng)用層協(xié)議。使用TCP可靠數(shù)據(jù)傳輸服務(wù)。包括兩部分:客戶機(jī)端:在發(fā)送方郵件服務(wù)器上運(yùn)行;服務(wù)器端:在接收方郵件服務(wù)器上運(yùn)行。每個郵件服務(wù)器上都有SMTP的客戶機(jī)端和服務(wù)器端。91本節(jié)內(nèi)容2.4.1SMTP2.4.2SMTP與HTTP比較 2.4.3郵件報文格式和MIME2.4.4郵件訪問協(xié)議922.4.1
SMTP1)Alice啟動郵件代理,提供接收方的郵件地址,撰寫郵件2)用戶代理把報文發(fā)給其郵件服務(wù)器,放在發(fā)送隊列中
3)SMTP的客戶機(jī)側(cè)創(chuàng)建與Bob的郵件服務(wù)器的TCP連接4)SMTP通過TCP連接發(fā)送報文5)Bob的郵件服務(wù)器接收并將該報文放入Bob的郵箱6)Bob調(diào)用其用戶代理來讀報文用戶代理郵件服務(wù)器郵件服務(wù)器用戶代理123456把一封郵件從發(fā)送郵件服務(wù)器傳送到接收郵件服務(wù)器的過程:如Alice向Bob發(fā)送報文SMTPBobAlice932.4.1
SMTP1)Alice啟動郵件代理,提供接收方的郵件地址,撰寫郵件2)用戶代理把報文發(fā)給其郵件服務(wù)器,放在發(fā)送隊列中
3)SMTP的客戶機(jī)側(cè)創(chuàng)建與Bob的郵件服務(wù)器的TCP連接4)SMTP通過TCP連接發(fā)送報文5)Bob的郵件服務(wù)器接收并將該報文放入Bob的郵箱6)Bob調(diào)用其用戶代理來讀報文用戶代理郵件服務(wù)器郵件服務(wù)器用戶代理123456把一封郵件從發(fā)送郵件服務(wù)器傳送到接收郵件服務(wù)器的過程:如Alice向Bob發(fā)送報文SMTPBobAlice94說明客戶使用TCP來可靠傳輸郵件報文到服務(wù)器端口號25。建立TCP連接:握手:指明收發(fā)雙方的郵件地址郵件報文的傳輸結(jié)束:關(guān)閉TCP連接95SMTP不使用中間郵件服務(wù)器發(fā)送郵件,即TCP連接是從發(fā)送方到接收方的直接相連。如果接收方的郵件服務(wù)器沒有開機(jī),該郵件仍保留在發(fā)送方郵件服務(wù)器上,并在以后進(jìn)行再次傳送。郵件不會在某個中間郵件服務(wù)器停留。96共同點都用于從一臺主機(jī)向另一臺主機(jī)傳送文件
?
HTTP用于從Web服務(wù)器向Web客戶機(jī)(瀏覽器)傳送文件(對象);
?
SMTP用于從一個郵件服務(wù)器向另一個郵件服務(wù)器傳送文件(電子郵件報文)。
持久HTTP和SMTP都使用持久連接。97區(qū)別HTTP是拉協(xié)議:用戶使用HTTP從服務(wù)器拉取信息。其TCP連接是由想獲取文件的機(jī)器發(fā)起。
SMTP是推協(xié)議:發(fā)送郵件服務(wù)器把文件推向接收郵件服務(wù)器,其TCP連接是由要發(fā)送文件的機(jī)器發(fā)起。
98區(qū)別
SMTP使用7位ASCII碼格式:對一些包含了非7位ASCII字符的報文或二進(jìn)制數(shù)據(jù)(如圖片、聲音),需要按照7位ASCII碼進(jìn)行編碼,再傳送。在接收方需要解碼還原為原有報文。
HTTP數(shù)據(jù)沒有該限制。對含有文本和圖形(或其他媒體類型)的文檔:HTTP把每個對象封裝在它各自的HTTP響應(yīng)報文中發(fā)送電子郵件則把所有報文對象放在一個報文中。99郵件報文格式首部行(收發(fā)人、主題)To:From:Subject:主體“報文”,
均為ASCII字符首部主體空行100
MIME(多用途因特網(wǎng)郵件擴(kuò)展)
SMTP只傳送7位的ASCII碼。SMTP不能傳送可執(zhí)行文件或其他的二進(jìn)制對象。
MIME:用于非ASCII數(shù)據(jù)傳輸。將非ASCII數(shù)據(jù)編碼后傳輸,接收方再解碼還原。增加新的MIME郵件首部采用某種編碼101
例:傳輸一個jpeg圖形
From:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata
base64encodeddata
多媒體數(shù)據(jù)類型,子類型,聲明參數(shù)使用數(shù)據(jù)編碼的方法MIME版本編碼數(shù)據(jù)base64編碼:用于二進(jìn)制文件jpeg格式的靜止圖像102
接收的報文
From:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata
base64encodeddata
Received:fromcress.frby;12oct9815:27:39GMT添加一個Received:首部行1032.4.4郵件訪問協(xié)議發(fā)送方:用戶代理用SMTP將郵件推入其郵件服務(wù)器郵件服務(wù)器再用SMTP將郵件轉(zhuǎn)發(fā)到接收方的郵件服務(wù)器接收方:通過其用戶代理使用一個郵件訪問協(xié)議(不是SMTP),從其郵件服務(wù)器上取回郵件。
取郵件是一個拉操作,而SMTP協(xié)議是一個推協(xié)議。
用戶代理發(fā)送方郵件服務(wù)器用戶代理SMTP訪問協(xié)議接收方郵件服務(wù)器SMTP104郵件訪問協(xié)議:從服務(wù)器獲取郵件。種類:POP3(第三版的郵局協(xié)議)IMAP(因特網(wǎng)郵件訪問協(xié)議)HTTP1051、POP3簡單、功能有限。在用戶代理打開了一個到郵件服務(wù)器(服務(wù)器)端口110上的TCP連接后,開始工作。106工作步驟(三階段):特許階段:用戶代理發(fā)送用戶名和口令獲得下載郵件的特許。(身份認(rèn)證)事務(wù)處理階段:用戶代理取回報文,可對郵件進(jìn)行某些操作。如做刪除標(biāo)記、取消刪除標(biāo)記、獲取統(tǒng)計信息等。更新階段:郵件服務(wù)器刪除帶有刪除標(biāo)記的報文,結(jié)束POP會話。1072、IMAPPOP3缺陷:用戶讀取郵件后,服務(wù)器不再保存。IMAP:功能強(qiáng)在用戶的PC機(jī)上運(yùn)行IMAP客戶程序,然后與ISP的郵件服務(wù)器上的IMAP服務(wù)器程序建立TCP連接。用戶在自己的PC機(jī)上就可以操縱郵件服務(wù)器的郵箱,就像在本地操縱一樣,是一個聯(lián)機(jī)協(xié)議。未發(fā)出刪除命令前,一直保存在郵件服務(wù)器實現(xiàn)起來復(fù)雜。1083、基于web的電子郵件
1995年12月Hotmail引入該技術(shù)。用戶使用瀏覽器收發(fā)電子郵件。用戶代理是普通的瀏覽器,用戶和其遠(yuǎn)程郵箱之間的通信通過HTTP進(jìn)行:發(fā)件人使用HTTP將電子郵件報文從其瀏覽器發(fā)送到其郵件服務(wù)器上;收件人使用HTTP從其郵箱中取一個報文到瀏覽器;郵件服務(wù)器之間發(fā)送和接收郵件時,使用SMTP。用戶可以在遠(yuǎn)程服務(wù)器上以層次目錄方式組織報文。如,Hotmail、Yahoo、Mail等。1092.5DNS:因特網(wǎng)的目錄服務(wù)標(biāo)識主機(jī)的兩種方式:主機(jī)名:由不定長的字母和數(shù)字組成。便于記憶。如
路由器處理困難。IP地址:由4個字節(jié)組成,有著嚴(yán)格的層次結(jié)構(gòu)。路由器容易處理。如IP地址(點分十進(jìn)制):3
網(wǎng)絡(luò)號主機(jī)號1102.5.1DNS提供的服務(wù)報文在網(wǎng)絡(luò)中傳輸,使用IP地址。域名系統(tǒng)DNS(DomainNameSystem):進(jìn)行主機(jī)名到IP地址的轉(zhuǎn)換。一個由分層的DNS服務(wù)器實現(xiàn)的分布式數(shù)據(jù)庫允許主機(jī)查詢分布式數(shù)據(jù)庫的應(yīng)用層協(xié)議;111說明運(yùn)行BIND軟件的UNIX機(jī)器;DNS協(xié)議運(yùn)行在UDP之上,使用53號端口。DNS通常直接由其他的應(yīng)用層協(xié)議(包括HTTP、SMTP和FTP)使用,以將用戶提供的主機(jī)名解析為IP地址。用戶只是間接使用。112例,某個用戶主機(jī)上的一個瀏覽器訪問某個Web頁,/index.html用戶主機(jī)要將一個HTTP請求報文發(fā)送到Web服務(wù)器,需先得到相應(yīng)的IP地址。過程如下:用戶主機(jī)上運(yùn)行DNS應(yīng)用的客戶機(jī)端。瀏覽器從URL中解析出主機(jī)地址,傳給DNS客戶機(jī)端。DNS客戶機(jī)向DNS服務(wù)器發(fā)送一個包含主機(jī)名的請求;DNS客戶機(jī)收到含有對應(yīng)主機(jī)名的IP地址的回答報文;瀏覽器向該IP地址指定的HTTP服務(wù)器發(fā)起一個TCP連接。增加一定時延。113DNS服務(wù)主機(jī)名到IP地址的轉(zhuǎn)換主機(jī)別名規(guī)范名和別名:通過DNS可以得到主機(jī)別名對應(yīng)的規(guī)范主機(jī)名及IP地址。郵件服務(wù)器別名負(fù)載分配1142.6P2P文件共享
位于網(wǎng)絡(luò)邊緣的PC機(jī)(對等方peer)互相之間可以直接獲取對象。例,用戶Alice使用P2P文件共享應(yīng)用程序下載MP3。說明:每個參與的對等方既是內(nèi)容的消費(fèi)者也是內(nèi)容的發(fā)布者(下載同時也向其他用戶上載)。115過程
在PC機(jī)上運(yùn)行一個P2P文件共享應(yīng)用軟件(對等方);通過ADSL間歇地與接入因特網(wǎng)(無固定IP地址)使用該應(yīng)用程序搜索一首MP3歌曲;顯示一張有該首歌曲的對等方列表:所有在線對等方,并愿意共享該首音樂的MP3拷貝對等方都是普通的PC,是因特網(wǎng)用戶。列表中提供一些附加信息,如接入帶寬和下載時間。選擇一個對等方(Bob)并向其請求該MP3文件;兩個用戶之間建立一個直接的TCP連接;
MP3文件從Bob的PC機(jī)向Alice的PC發(fā)送;下載期間若偶然斷開,可從其他對等方繼續(xù)下載。116P2P文件共享特點直接在對等方間傳輸:所有內(nèi)容不經(jīng)過第三方服務(wù)器高度的可擴(kuò)展能力:利用眾多對等方集合中的資源去分發(fā)內(nèi)容使用客戶機(jī)/服務(wù)器模式:請求的對等方是客戶機(jī),被選中的對等方是服務(wù)器。服務(wù)器對等方使用文件傳輸協(xié)議向客戶機(jī)對等方傳送。?通過傳送“HTTP請求”和“HTTP響應(yīng)”報文進(jìn)行。所有的對等方必須既能運(yùn)行文件傳輸協(xié)議的客戶機(jī)端程序,又能運(yùn)行服務(wù)器端程序。?對等方既是一個客戶機(jī),又是一個瞬時Web服務(wù)器。117內(nèi)容定位體系結(jié)構(gòu)
一個對等方如何確定哪個對等方有所需要的內(nèi)容。(1)集中式目錄(2)查詢洪泛(3)利用不均勻性(KaZaA)118(1)集中式目錄目錄服務(wù)器(大型服務(wù)器或服務(wù)器場):提供目錄服務(wù)。收集可共享的對象,建立集中式的動態(tài)數(shù)據(jù)庫(對象名稱到IP地址的映射)。集中式目錄服務(wù)器對等方AliceBob111123源于Napster公司(第一家世界范圍內(nèi)從事MP3對等應(yīng)用程序)設(shè)計。119主要工作通知:對等方啟動時,將其IP地址及可共享內(nèi)容通知目錄服務(wù)器;查詢內(nèi)容:用戶查詢需要共享的對象。如,Alice查詢某首歌。獲取內(nèi)容:來自Bob。更新:當(dāng)對等方獲得新對象或刪除對象時,通知目錄服務(wù)器更新。對等方AliceBob111123通知和更新集中式目錄服務(wù)器查詢文件傳輸屬于客戶機(jī)/服務(wù)器與P2P的混合結(jié)構(gòu)。120
集中式目錄存在的問題單點故障性能瓶頸侵犯版權(quán)可靠性:文件傳輸是分散的,但定位內(nèi)容的過程是高度集中的。121(2)查詢洪泛:Gnutella是一個公共域文件共享應(yīng)用程序。全分布方式:無中心服務(wù)器許多Gnutella客戶機(jī)實現(xiàn)協(xié)議:運(yùn)行在對等方。實現(xiàn):對等方先形成一個抽象的邏輯網(wǎng)絡(luò)(覆蓋網(wǎng)絡(luò)):通過洪泛查詢,找到所需對象:如,某個對等方Alice想得到一個對象。122特點設(shè)計簡單。擴(kuò)展性差。“查詢報文”在網(wǎng)絡(luò)中產(chǎn)生很大的流量。限范圍的洪泛查詢:在“查詢報文”中設(shè)置一個計數(shù)字段,并給定一個特定值。可能減少對等方數(shù)量。123覆蓋網(wǎng)絡(luò)如果對等方X和Y間有一條TCP連接,則存在一條邊所有活動對等方和邊形成覆蓋網(wǎng)絡(luò)邊不是物理鏈路一個對等方所連接的節(jié)點少于10個。124洪泛查詢查詢查詢命中查詢查詢查詢命中查詢查詢查詢命中文件傳輸:HTTP向覆蓋網(wǎng)絡(luò)中的每個鄰居發(fā)送“查詢報文”;每個鄰居再向鄰居轉(zhuǎn)發(fā),使覆蓋網(wǎng)絡(luò)上的每個對等方都能收到該查詢;如果收到查詢的對等方中有被請求對象,沿反向路徑回發(fā)“查詢命中”報文;可能收到多個對等方發(fā)回的“查詢命中”報文選擇一個對等方,雙方建立一條直接的TCP連接,并通過HTTP報文得到內(nèi)容。125
對等方X加入對等方X維持一張對等方列表(IP地址)X試圖與列表上的對等方建立TCP,直到與Y建立連接X向Y發(fā)送Ping報文;Y向鄰居轉(zhuǎn)發(fā)Ping報文所有收到Ping報文的對等方Z用Pong報文響應(yīng)(IP地址)X收到多個Pong報文,建立多個TCP連接,即多個邊126KaZaA
與Gnutella類似,無專用服務(wù)器,但對等方地位不平等。實現(xiàn):對等方先形成一個層次的覆蓋網(wǎng)絡(luò)通過查詢,找到所需對象。
127層次覆蓋網(wǎng)絡(luò)每組包括若干個組員,一個組長組員與其組長有一個TCP連接,將共享內(nèi)容告訴組長。組長維護(hù)一個數(shù)據(jù)庫,該組的共享內(nèi)容及相關(guān)對等方的IP地址。相關(guān)組長之間建立TCP連接組長追蹤其所有子節(jié)點上的內(nèi)容普通對等方組長對等方在覆蓋網(wǎng)絡(luò)中的鄰居關(guān)系對等方根據(jù)通信關(guān)系劃分若干組,組成層次結(jié)構(gòu)。128KaZaA:查詢對等方確定到某個特定對象的方法:向組長發(fā)出查詢,組長用本組中具有該對象的對等方列表響應(yīng);或與其他組長聯(lián)系,請它們向該對等方發(fā)送具有該對象的對等方列表。129KaZaA特點層次覆蓋網(wǎng)絡(luò)查詢流量不大設(shè)計技巧請求排隊:限制并行上載數(shù)量激勵優(yōu)先權(quán):上載文件比下載文件多的用戶優(yōu)先。并行下載:從多個對等方請求并下載同一個文件的不同部分。1302.7TCP套接字編程網(wǎng)絡(luò)應(yīng)用程序的核心:客戶機(jī)程序和服務(wù)器程序。運(yùn)行時,分別創(chuàng)建一個客戶機(jī)進(jìn)程和一個服務(wù)器進(jìn)程,相互之間通過套接字讀寫數(shù)據(jù)進(jìn)行通信。網(wǎng)絡(luò)應(yīng)用程序類型:通用應(yīng)用程序:通過RFC文檔所定義的標(biāo)準(zhǔn)協(xié)議來實現(xiàn)程序必須滿足該RFC所規(guī)定的規(guī)則;使用與協(xié)議相關(guān)的端口號。如Web應(yīng)用專用的應(yīng)用程序:程序不必符合RFC規(guī)則;開發(fā)者根據(jù)實際應(yīng)用設(shè)計;不能使用RFC中定義的周知端口號。131說明
研發(fā)初期,先選擇運(yùn)輸層協(xié)議:TCP:面向連接的,為兩個端系統(tǒng)之間的數(shù)據(jù)流動提供可靠的字節(jié)流通道。UDP:無連接的,從一個端系統(tǒng)向另一個端系統(tǒng)發(fā)送獨(dú)立的數(shù)據(jù)分組,不對交付提供任何保證。1322.7.1TCP套接字編程
運(yùn)行在不同機(jī)器上的進(jìn)程彼此通過套接字傳遞報文來進(jìn)行通信。進(jìn)程/套接字:房子/門戶,即套接字是應(yīng)用進(jìn)程和TCP之間的門戶。程序開發(fā)者可以控制應(yīng)用層端所有東西;不能控制運(yùn)輸層端。
TCP服務(wù):
從一個進(jìn)程到另一個進(jìn)程的可靠字節(jié)傳輸由操作系統(tǒng)控制進(jìn)程具有緩存,變量的TCP套接字由應(yīng)用程序研發(fā)者控制主機(jī)或服務(wù)器進(jìn)程具有緩存,變量的TCP套接字由操作系統(tǒng)控制主機(jī)或服務(wù)器internet由應(yīng)用程序研發(fā)者控制133客戶機(jī)和服務(wù)器程序之間的交互
先建立TCP連接,再進(jìn)行數(shù)據(jù)傳輸??蛻魴C(jī)程序是連接的發(fā)起方;服務(wù)器必須先準(zhǔn)備好,對客戶機(jī)程序發(fā)起的連接做出響應(yīng):·服務(wù)器程序事先已經(jīng)在系統(tǒng)中運(yùn)行;·服務(wù)器程序的一個套接字(歡迎套接字)已經(jīng)打開,準(zhǔn)備接收客戶機(jī)程序發(fā)起的連接(敲門)。具體過程:134建立TCP連接客戶機(jī)進(jìn)程向服務(wù)器發(fā)起一個TCP連接:
創(chuàng)建一個本地套接字,指定相應(yīng)服務(wù)器進(jìn)程的地址(IP地址和端口號)。建立一個TCP連接:當(dāng)服務(wù)器聽到客戶機(jī)的連接請求(敲門)時,創(chuàng)建一個新套接字,經(jīng)過“三次握手”,客戶機(jī)套接字和服務(wù)器套接字之間建立一個TCP連接(直接的虛擬管道)。135傳送數(shù)據(jù)TCP連接為客戶機(jī)和服務(wù)器了一個直接的傳輸管道??煽康?順序的,字節(jié)流的傳輸136術(shù)語流:流入或流出某進(jìn)程的一串字符序列。輸入流:來自某個輸入源(如鍵盤)、或某個套接字(因特網(wǎng)的數(shù)據(jù)流入套接字)。輸出流:到某個輸出源(如顯示器)、或某個套接字(數(shù)據(jù)通過套接字流向因特網(wǎng))。1372.7.2Java應(yīng)用程序示例
客戶機(jī)和服務(wù)器經(jīng)TCP連接進(jìn)行通信??蛻魴C(jī)從鍵盤讀一行字符,通過套接字向服務(wù)器發(fā)送服務(wù)器從套接字讀取數(shù)據(jù); 將該行字符轉(zhuǎn)換成大寫;將修改的行通過其連接套接字再回發(fā)給客戶機(jī)。客戶機(jī)從其套接字中讀取修改的行,并將該行在顯示器上顯示。138客戶機(jī)/服務(wù)器程序交互等待入連接請求connectionSocket=welcomeSocket.accept()生成歡迎套接字,port=xwelcomeSocket=ServerSocket()生成套接字,與hostid連接,port=xClientSocket=Socket()關(guān)閉connectionSocket讀回答ClientSocket關(guān)閉ClientSocket服務(wù)器
(運(yùn)行在hostid上)客戶機(jī)發(fā)送請求ClientSocket讀請求connectionSocket寫回答connectionSocketTCPconnectionsetup139客戶機(jī)端創(chuàng)建了三個流和一個套接字,如圖所示。套接字:clientSocket;InFromUser輸入流:連接到鍵盤;InFromServers輸入流:與套接字連接。從網(wǎng)絡(luò)來的字符outToServers輸出流:與套接字連接,客戶機(jī)發(fā)送到網(wǎng)絡(luò)的字符??蛻魴C(jī)processoutToServer到網(wǎng)絡(luò)來自網(wǎng)絡(luò)inFromServerinFromUser鍵盤顯示器進(jìn)程clientSocket輸入流輸入流輸出流TCP套接字套接字140客戶機(jī):(TCPClient.java)importjava.io.*;import.*;classTCPClient{publicstaticvoidmain(Stringargv[])throwsException{Stringsentence;StringmodifiedSentence;BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));SocketClientSocket=newSocket("hostname",6789);DataOutputStreamoutToServer=newDataOutputStream(ClientSocket.getOutputStream());
產(chǎn)生輸入流產(chǎn)生客戶機(jī)套接字,與服務(wù)器連接生成輸出流與套接字聯(lián)系產(chǎn)生輸入流、輸出流、套接字輸入發(fā)送接收顯示141
BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(ClientSocket.getInputStream()));sentence=inFromUser.readLine();
outToServer.writeBytes(sentence+'\n');modifiedSentence=inFromServer.readLine();System.out.println("FROMServer:"+modifiedSentence);
ClientSocket.close();
}}
產(chǎn)生與套接字聯(lián)系的輸入流向服務(wù)器發(fā)送行從服務(wù)器讀行顯示內(nèi)容鍵盤輸入142服務(wù)器:(TCPServer.java)importjava.io.*;import.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringClientSentence;StringcapitalizedSentence;ServerSocket
welcomeSocket=newServerSocket(6789);
while(true){
SocketconnectionSocket=welcomeSocket.accept();BufferedReaderinFromClient
=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));在端口6789生成歡迎套接字,監(jiān)聽創(chuàng)建一個連接套接字
生成輸入流,與套接字聯(lián)系產(chǎn)生輸入流、輸出流、套接字接收發(fā)送143
DataOutputStreamoutToClient
=newDataOutputStream(connectionSocket.getOutputStream());
ClientSentence=inFromClient.readLine();
capitalizedSentence=ClientSentence.toUpperCase()+'\n';
outToClient.writeBytes(capitalizedSentence);}}}
從套接字讀入客戶機(jī)來的數(shù)據(jù)
生成輸出流,與套接字聯(lián)系向套接字輸出數(shù)據(jù)到客戶機(jī)循環(huán)結(jié)束,返回并等待另一個客戶機(jī)連接1442.8UDP套接字編程UDP是一種無連接的服務(wù),即在兩個進(jìn)程之間沒有創(chuàng)建管道時所需的初始握手階段。進(jìn)程之間的數(shù)據(jù)傳遞以分組為單位進(jìn)行。分組中含目的進(jìn)程地址(主機(jī)IP地址和端口號)。提供不可靠的傳輸服務(wù)。145編程說明:通信進(jìn)程之間沒有初始握手,不需要?dú)g迎套接字;沒有流與套接字相聯(lián)系;發(fā)送主機(jī)將信息字節(jié)封裝生成分組,再發(fā)送;接收進(jìn)程解封收到的分組,獲得信息字節(jié)。146客戶機(jī)/服務(wù)器程序交互關(guān)閉ClientSocket服務(wù)器(運(yùn)行在hostid上)從ClientSocket讀應(yīng)答創(chuàng)建套接字Cli
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國歐式風(fēng)撐行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國橡膠海綿球數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國固體阻燃潤滑劑數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國反光絲數(shù)據(jù)監(jiān)測研究報告
- 2025年中國軸向電接點壓力表市場調(diào)查研究報告
- 2025年中國蓮子酥市場調(diào)查研究報告
- 建筑工程用機(jī)械設(shè)備的維護(hù)保養(yǎng)策略考核試卷
- 2025-2030年古典園林石雕藝術(shù)行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年復(fù)古陶瓷茶具托盤企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年戶外多功能背包行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 中國氫內(nèi)燃機(jī)行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報告-智研咨詢(2024版)
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 中日合同范本
- T-CARM 002-2023 康復(fù)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 《康復(fù)按摩知識》課件
- 立式加工中心說明書
- 第八版神經(jīng)病學(xué)配套課件-12-中樞神經(jīng)系統(tǒng)感染性疾病
- 15MW風(fēng)力發(fā)電機(jī)
- 正面管教 讀書分享(課堂PPT)
- 日立mcub02板使用說明書
- 干貨:影視制作報價表-簡潔版(范例)
評論
0/150
提交評論