版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章應(yīng)用層
網(wǎng)絡(luò)應(yīng)用是計(jì)算機(jī)網(wǎng)絡(luò)的重要功能之一。20世紀(jì)80年代:基于文本的電子郵件、文件傳輸、文本聊天等等。20世紀(jì)90年代:Web應(yīng)用、IP電話、視頻會(huì)議等。20世紀(jì)末:即時(shí)訊息、P2P對等文件共享。1學(xué)習(xí)目標(biāo)和主要內(nèi)容學(xué)習(xí)目標(biāo)網(wǎng)絡(luò)應(yīng)用的原理和實(shí)現(xiàn)方面的知識(shí)。主要內(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)建一個(gè)Web服務(wù)器2.10小結(jié)3流行的網(wǎng)絡(luò)應(yīng)用程序E-mailWeb即時(shí)訊息遠(yuǎn)程注冊P2P文件共享多用戶網(wǎng)絡(luò)游戲流式存儲(chǔ)視頻片段因特網(wǎng)電話實(shí)時(shí)視頻會(huì)議大規(guī)模并行計(jì)算編制應(yīng)用程序4網(wǎng)絡(luò)應(yīng)用程序的研發(fā)要點(diǎn)寫出能夠分別在不同端系統(tǒng)運(yùn)行,并通過網(wǎng)絡(luò)相互通信的程序。如Web應(yīng)用程序,由兩個(gè)可以相互通信的程序組成瀏覽器程序:運(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ù)、對等文件共享等五個(gè)。62.1.1網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)應(yīng)用程序體系結(jié)構(gòu):規(guī)定如何在各種端系統(tǒng)上組織應(yīng)用程序,由研發(fā)者設(shè)計(jì)。
三種類型:客戶機(jī)/服務(wù)器對等(P2P)客戶機(jī)/服務(wù)器與P2P的混合71、客戶機(jī)/服務(wù)器體系結(jié)構(gòu)服務(wù)器:
總是打開為多個(gè)客戶機(jī)請求提供服務(wù)永久的IP地址可擴(kuò)展為服務(wù)器場(主機(jī)群集)客戶機(jī):總是打開或間歇打開向服務(wù)器發(fā)出請求具有動(dòng)態(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)容即時(shí)訊息:P2P:兩個(gè)用戶直接聊天服務(wù)器檢測/定位:用戶在線時(shí),向中心服務(wù)器注冊其IP地址用戶聯(lián)系中心服務(wù)器以找到聊天伙伴的IP地址102.1.2進(jìn)程通信進(jìn)程(process):在主機(jī)上運(yùn)行的程序。進(jìn)程通信:同一主機(jī)中兩個(gè)進(jìn)程間的通信:由操作系統(tǒng)控制;不同主機(jī)中進(jìn)程間的通信:通過網(wǎng)絡(luò)交換報(bào)文進(jìn)行。
發(fā)送進(jìn)程:產(chǎn)生報(bào)文并向網(wǎng)絡(luò)發(fā)送;
接收進(jìn)程:接收報(bào)文,并回送報(bào)文。如圖2-1。111、客戶機(jī)和服務(wù)器進(jìn)程網(wǎng)絡(luò)應(yīng)用程序由成對的進(jìn)程組成,并通過網(wǎng)絡(luò)相互發(fā)送報(bào)文。如圖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)用程序中,一個(gè)客戶機(jī)瀏覽器進(jìn)程向某個(gè)Web服務(wù)器進(jìn)程發(fā)起聯(lián)系,交換報(bào)文。12說明:
P2P結(jié)構(gòu)的應(yīng)用程序也可分別看成是客戶機(jī)進(jìn)程或服務(wù)器進(jìn)程。如,對等方A(客戶機(jī))請求對等方B(服務(wù)器)發(fā)送某個(gè)文件。132、套接字(socket)套接字:同一臺(tái)主機(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ā)送和接收報(bào)文。進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器因特網(wǎng)由操作系統(tǒng)控制由應(yīng)用研發(fā)者控制發(fā)送進(jìn)程:把報(bào)文推出門(套接字)。傳送報(bào)文:通過下面網(wǎng)絡(luò)把報(bào)文傳送到目的進(jìn)程門口。接收進(jìn)程:通過其門(套接字)接收報(bào)文15說明應(yīng)用程序開發(fā)者可以控制套接字應(yīng)用層端的全部;對套接字的運(yùn)輸層端幾乎不能控制(只能選擇運(yùn)輸層協(xié)議、設(shè)定幾個(gè)運(yùn)輸層參數(shù)等)。應(yīng)用程序開發(fā)者選擇了一個(gè)運(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)程可以有多個(gè)。網(wǎng)絡(luò)中有多個(gè)主機(jī),每個(gè)主機(jī)上有多個(gè)進(jìn)程。進(jìn)程識(shí)別信息:表示哪臺(tái)主機(jī)上的哪一個(gè)進(jìn)程。源主機(jī)上的進(jìn)程向目的主機(jī)上的進(jìn)程發(fā)送報(bào)文時(shí),應(yīng)帶有接收進(jìn)程的識(shí)別信息(標(biāo)識(shí))。進(jìn)程尋址:根據(jù)進(jìn)程識(shí)別信息找到相應(yīng)進(jìn)程。如何識(shí)別進(jìn)程?確定主機(jī)確定進(jìn)程17進(jìn)程識(shí)別信息(兩部分)主機(jī)名稱或地址:網(wǎng)絡(luò)中的哪一個(gè)主機(jī)。因特網(wǎng)中,用IP地址標(biāo)識(shí)(32位,全球惟一)。進(jìn)程的標(biāo)識(shí):主機(jī)中的哪一個(gè)進(jìn)程。因特網(wǎng)中,采用端口號(hào)標(biāo)識(shí)(portnumber)。常用的應(yīng)用程序被指派固定的端口號(hào)(周知端口)。如,Web服務(wù)進(jìn)程(HTTP協(xié)議):80郵件服務(wù)進(jìn)程(SMTP協(xié)議):25創(chuàng)建一個(gè)新的網(wǎng)絡(luò)應(yīng)用程序時(shí),必須分配一個(gè)新的端口號(hào)。不重復(fù)。184、用戶代理(useragent)是用戶與網(wǎng)絡(luò)應(yīng)用程序之間的接口。如:Web應(yīng)用的用戶代理:是一些瀏覽器軟件。一個(gè)通過套接字收發(fā)報(bào)文,并提供用戶接口的進(jìn)程。電子郵件應(yīng)用程序用戶代理:是“郵件閱讀器”。允許用戶進(jìn)行郵件的撰寫和閱讀。192.1.3應(yīng)用層協(xié)議定義了運(yùn)行在不同端系統(tǒng)上的應(yīng)用程序進(jìn)程間傳遞報(bào)文的格式和方式。具體內(nèi)容:
交換的報(bào)文類型:如請求報(bào)文和響應(yīng)報(bào)文;各種報(bào)文類型的語法:報(bào)文中的各個(gè)字段及描述;字段的語義:字段包含信息的含義;進(jìn)程何時(shí)、如何發(fā)送報(bào)文及對報(bào)文進(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ù)器程序,以及一個(gè)應(yīng)用層協(xié)議HTTP(超文本傳輸協(xié)議)等。HTTP定義了在瀏覽器程序和Web服務(wù)器程序間傳輸?shù)膱?bào)文格式和序列。其他協(xié)議:電子郵件協(xié)議SMTP等等212.1.4應(yīng)用程序所需要的服務(wù)應(yīng)用程序間通信:由運(yùn)輸協(xié)議跨越網(wǎng)絡(luò)將發(fā)送進(jìn)程的報(bào)文傳輸?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í)(數(shù)據(jù)傳輸?shù)臅r(shí)間限制)交互式實(shí)時(shí)應(yīng)用:對時(shí)間敏感,要求時(shí)延小。如,因特網(wǎng)電話、視頻會(huì)議以及多方游戲等。非實(shí)時(shí)應(yīng)用:時(shí)延無限制,低更好。23典型應(yīng)用的運(yùn)輸服務(wù)要求應(yīng)用程序文件傳輸電子郵件Web文檔實(shí)時(shí)音頻/視頻(因特網(wǎng)電話/視頻會(huì)議)存儲(chǔ)音頻/視頻交互式游戲即時(shí)訊息數(shù)據(jù)丟失不能丟失
不能丟失不能丟失容忍丟失容忍丟失容忍丟失不能丟失
帶寬彈性彈性彈性音頻:5kbps-1Mbps視頻:10kbps-5Mbps同上幾kbps以上彈性時(shí)間敏感不不不是,100ms是,幾秒是,100ms是和不是242.1.5因特網(wǎng)運(yùn)輸協(xié)議提供的服務(wù)兩個(gè)運(yùn)輸層協(xié)議:用戶數(shù)據(jù)報(bào)協(xié)議UDP傳輸控制協(xié)議TCP每個(gè)協(xié)議為調(diào)用它們的應(yīng)用程序提供不同的服務(wù)模型。在創(chuàng)建一個(gè)新的因特網(wǎng)應(yīng)用時(shí),要選擇其中一個(gè)。251、TCP服務(wù)兩個(gè)方面:面向連接的服務(wù):可靠的傳輸服務(wù):26面向連接的服務(wù)劃分三階段建立連接(握手過程):客戶機(jī)程序和服務(wù)器程序之間互相交換控制信息,在兩個(gè)進(jìn)程的套接字之間建立一個(gè)TCP連接。傳輸報(bào)文:連接是全雙工的,即連接雙方的進(jìn)程可以在此連接上同時(shí)進(jìn)行報(bào)文收發(fā)。拆除連接:應(yīng)用程序報(bào)文發(fā)送結(jié)束。27可靠的傳輸服務(wù)通信進(jìn)程可以無差錯(cuò)、按適當(dāng)順序交付發(fā)送的數(shù)據(jù)。沒有數(shù)據(jù)丟失和重復(fù)。28擁塞控制當(dāng)發(fā)送方和接收方之間的網(wǎng)絡(luò)出現(xiàn)擁塞時(shí),會(huì)抑制發(fā)送進(jìn)程速率。對整個(gè)網(wǎng)絡(luò)有益。29未提供的服務(wù)不確保最小傳輸速率:發(fā)送進(jìn)程受擁塞控制機(jī)制制約;不提供時(shí)延保證:數(shù)據(jù)傳輸?shù)臅r(shí)間不確定。
TCP協(xié)議能保證交付所有的數(shù)據(jù),但并不保證這些數(shù)據(jù)傳輸?shù)乃俾室约捌诖膫鬏敃r(shí)延。TCP協(xié)議不適合實(shí)時(shí)應(yīng)用。302、UDP服務(wù)提供最小服務(wù)模式運(yùn)行。無連接:兩個(gè)進(jìn)程通信前沒有握手過程;不可靠數(shù)據(jù)傳輸:不保證報(bào)文能夠被接收,或收到的報(bào)文是亂序到達(dá)。沒有擁塞控制機(jī)制:發(fā)送進(jìn)程可以任何速率發(fā)送數(shù)據(jù)不提供時(shí)延保證:適于實(shí)時(shí)應(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站點(diǎn)。33本節(jié)內(nèi)容2.2.1HTTP概況2.2.2HTTP連接2.2.3HTTP報(bào)文格式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報(bào)文進(jìn)行會(huì)話。HTTP協(xié)議定義了報(bào)文的格式以及客戶機(jī)和服務(wù)器交換報(bào)文的方式。
35Web常用術(shù)語Web頁(文檔):由若干對象組成。
對象:是文件。通過一個(gè)URL地址來尋址。如HTML文件、JPEG圖形文件、Java小程序等。
Web頁含有一個(gè)基本的HTML文件及幾個(gè)引用對象。例如,一個(gè)Web頁包含HTML文本和5個(gè)JPEG圖形文件(即有6個(gè)對象)。在基本的HTML文件中,每個(gè)對象可由URL來尋址。
超文本標(biāo)記語言統(tǒng)一資源定位符36Web常用術(shù)語URL:UniformResourceLocator。統(tǒng)一資源定位符。標(biāo)識(shí)萬維網(wǎng)WWW上的各種文檔,全網(wǎng)范圍唯一。URL地址組成:存放對象的服務(wù)器主機(jī)名和對象的路徑名。如
http://www.someS/somedepartment/picture.gif
主機(jī)名路徑名37Web常用術(shù)語瀏覽器(客戶機(jī)):是Web應(yīng)用的用戶代理,用于顯示所請求的Web頁,提供導(dǎo)航功能和配置屬性。
實(shí)現(xiàn)了HTTP協(xié)議的客戶機(jī)端。Web服務(wù)器:用于存貯Web對象(由URL尋址)。實(shí)現(xiàn)HTTP協(xié)議的服務(wù)器端。
HTTP協(xié)議定義了Web客戶機(jī)(瀏覽器)如何向Web站點(diǎn)請求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ī):用戶請求一個(gè)Web頁(如點(diǎn)擊一個(gè)超鏈接),瀏覽器向服務(wù)器發(fā)出對該頁所含對象的“HTTP請求報(bào)文”。服務(wù)器:接受請求,回發(fā)包含請求對象的“HTTP響應(yīng)報(bào)文”39說明HTTP協(xié)議使用的底層運(yùn)輸協(xié)議是TCP。工作過程:
創(chuàng)建TCP連接交換報(bào)文關(guān)閉TCP連接客戶機(jī)先與服務(wù)器建立TCP連接,然后,瀏覽器和服務(wù)器進(jìn)程通過套接字訪問TCP:如圖2-3客戶機(jī):從其套接字接口發(fā)送“HTTP請求報(bào)文”和接收“響應(yīng)報(bào)文”;服務(wù)器:從其套接字口接收“HTTP請求報(bào)文”和發(fā)送“響應(yīng)報(bào)文”。40說明TCP提供可靠的數(shù)據(jù)傳輸服務(wù):客戶機(jī)進(jìn)程和服務(wù)器進(jìn)程發(fā)出的每個(gè)HTTP報(bào)文能完整地到達(dá)對方。HTTP是無狀態(tài)協(xié)議:服務(wù)器不保存關(guān)于客戶機(jī)的任何信息。Web使用客戶機(jī)/服務(wù)器結(jié)構(gòu),Web服務(wù)器總是打開,有一個(gè)固定IP地址,為多個(gè)瀏覽器服務(wù)。412.2.2HTTP連接持久HTTP連接一個(gè)TCP連接上可以傳送多個(gè)Web對象傳送多個(gè)請求/相應(yīng)對非持久HTTP連接每個(gè)TCP連接上只傳送一個(gè)Web對象只傳送一個(gè)請求/相應(yīng)對默認(rèn)方式下使用持久連接421、非持久連接例,客戶機(jī)向服務(wù)器請求傳送一個(gè)Web頁:含有一個(gè)基本HTML文件和10個(gè)JPEG圖形,11個(gè)對象位于同一個(gè)服務(wù)器上。HTML文件的URL為:http://www.someS/someDepartment/home.index43工作過程1a.
HTTP客戶初始化一個(gè)與服務(wù)器主機(jī)www.someS中HTTP服務(wù)器進(jìn)程的TCP連接
2.
HTTP客戶發(fā)送一個(gè)HTTP請求報(bào)文(包含URL)到TCP連接套接字,
報(bào)文指明客戶需要的Web對象-someDepartment/home.index1b.
www.someS服務(wù)器主機(jī)中的HTTP服務(wù)器在80端口監(jiān)聽來自HTTP客戶的TCP連接請求,收到連接請求,接受,建立連接,通知客戶。3.
HTTP服務(wù)器接收請求報(bào)文,產(chǎn)生一個(gè)響應(yīng)報(bào)文(包含被請求對象),并發(fā)送到其TCP連接套接字timeTCP連接報(bào)文傳輸445.
HTTP客戶機(jī)接收包含HTML文件的響應(yīng)報(bào)文,顯示并解析HTML文件,發(fā)現(xiàn)10個(gè)引用的jpeg對象6.
對10個(gè)jpeg對象重復(fù)步驟1~54.
HTTP服務(wù)器關(guān)閉TCP連接time45說明:每個(gè)TCP連接在服務(wù)器返回對象后關(guān)閉(非持久)。每個(gè)TCP連接只傳輸一個(gè)請求報(bào)文和一個(gè)響應(yīng)報(bào)文;上例中,要建立11個(gè)TCP連接。瀏覽器可同時(shí)打開多個(gè)連接:并行的TCP連接:并行數(shù)大于1。默認(rèn)打開5~10個(gè)。串行的TCP連接:最大并行數(shù)為1。46請求一個(gè)HTML文件所需時(shí)間即從客戶機(jī)請求基本HTML文件開始,到用戶收到整個(gè)文件為止所花時(shí)間。往返時(shí)延RTT:一個(gè)小分組從客戶機(jī)到服務(wù)器,再回到客戶機(jī)所花時(shí)間。包括傳播時(shí)延、排隊(duì)時(shí)延以及處理時(shí)延。47TCP連接的“三次握手”過程客戶機(jī)發(fā)送一個(gè)TCP連接請求報(bào)文服務(wù)器回送一個(gè)TCP確認(rèn)響應(yīng)報(bào)文客戶機(jī)向服務(wù)器發(fā)送一個(gè)包含“
HTTP請求”與“TCP確認(rèn)”的報(bào)文總響應(yīng)時(shí)間:兩個(gè)RTT時(shí)延加上服務(wù)器發(fā)送文件的時(shí)間總計(jì)=2RTT+文件傳輸時(shí)間傳輸文件的時(shí)間發(fā)起TCP連接RTT請求文件RTT接收文件時(shí)間時(shí)間三次握手建立TCP連接交換報(bào)文48非持久連接缺點(diǎn)服務(wù)器負(fù)擔(dān)重:每一個(gè)請求對象建立和維護(hù)一個(gè)新的連接。每一個(gè)對象的傳輸時(shí)延長:包含兩個(gè)RTT時(shí)延,一個(gè)用于TCP建立,一個(gè)用于請求和接收對象。492、持久連接服務(wù)器在發(fā)送響應(yīng)后保持該TCP連接:相同客戶機(jī)與服務(wù)器之間的后續(xù)請求和響應(yīng)報(bào)文通過相同的連接進(jìn)行傳送。如,一個(gè)Web頁的所有對象可以通過一個(gè)持久TCP連接傳送。或同一服務(wù)器上的多個(gè)Web頁也可以通過一個(gè)持久TCP連接傳送給同一個(gè)客戶機(jī)。連接經(jīng)一定時(shí)間間隔(超時(shí)間隔)未被使用,服務(wù)器就關(guān)閉該連接。50持久連接兩種方式非流水線方式:客戶機(jī)只能在前一個(gè)響應(yīng)接收到之后才能發(fā)出新的請求。客戶機(jī)為每一個(gè)引用對象的請求和接收都使用一個(gè)RTT時(shí)延。會(huì)浪費(fèi)一些服務(wù)器資源:服務(wù)器在發(fā)送完一個(gè)對象,等待下一個(gè)請求時(shí),會(huì)出現(xiàn)空閑狀態(tài)。51持久連接兩種方式流水線方式:客戶機(jī)可一個(gè)接一個(gè)連續(xù)產(chǎn)生請求(只要有引用就產(chǎn)生),即在前一個(gè)請求接收到響應(yīng)之前可以產(chǎn)生新的請求。服務(wù)器一個(gè)接一個(gè)連續(xù)發(fā)送相應(yīng)對象。特點(diǎn):節(jié)省RTT時(shí)延,可能所有引用對象只花費(fèi)一個(gè)。TCP連接空閑時(shí)間很短。
默認(rèn)方式:流水線方式的持久連接。521、HTTP請求報(bào)文客戶機(jī)向服務(wù)器發(fā)送。ASCII文本形式,易讀。
例:GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0Connection:closeAccept-language:fr(另外的回車,換行)
請求行(GET,POST,HEAD命令)首部行回車,換行指示報(bào)文的結(jié)束對象URL路徑名版本對象主機(jī)瀏覽器類型非持久方法(命令)——GET:請求一個(gè)對象。POST:提交表單(添加信息)。HEAD:請求返回對象響應(yīng)報(bào)文首部返回對象的語言53HTTP請求報(bào)文通用格式請求行首部行實(shí)體主體方法版本首部字段名首部字段名值值542、HTTP響應(yīng)報(bào)文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í)體:數(shù)據(jù),如請求的HTML文件請求成功關(guān)閉連接發(fā)送日期對象創(chuàng)建或修改日期對象長度服務(wù)器到客戶機(jī)的回答55HTTP響應(yīng)狀態(tài)碼200OK請求成功,請求的對象在這個(gè)報(bào)文后面301MovedPermanently請求的對象已轉(zhuǎn)移,新的URL在響應(yīng)報(bào)文的Location:首部行中指定400BadRequest請求報(bào)文不為服務(wù)器理解404NotFound請求的文檔沒有在該服務(wù)器上發(fā)現(xiàn)505HTTPVersionNotSupported服務(wù)器不支持請求報(bào)文使用的HTTP版本在服務(wù)器到客戶機(jī)響應(yīng)報(bào)文中的首行。56自行試驗(yàn)HTTP(客戶機(jī)側(cè))1.Telnet到某個(gè)Web服務(wù)器上:打開到位于的端口80(默認(rèn)的HTTP服務(wù)器端口).鍵入的任何東西將發(fā)送到位于的80端口telnet802.鍵入一個(gè)GETHTTP請求:GET/~ross/HTTP/1.1Host:向HTTP服務(wù)器發(fā)送最小的GET請求3.得到由HTTP服務(wù)器發(fā)送的響應(yīng)報(bào)文!572.2.4用戶與服務(wù)器交互:Cookie
HTTP服務(wù)器是無狀態(tài)的,不保存客戶信息。Cookie:允許Web站點(diǎn)跟蹤、識(shí)別用戶;服務(wù)器可以限制用戶訪問,或把內(nèi)容與用戶身份關(guān)聯(lián)。
許多重要的Web站點(diǎn)使用cookies。包括四個(gè)部分1)在HTTP響應(yīng)報(bào)文中有一個(gè)cookie首部行2)在HTTP請求報(bào)文中有一個(gè)cookie首部行3)用戶主機(jī)中保留有一個(gè)cookie文件并由瀏覽器管理4)Web站點(diǎn)的后端數(shù)據(jù)庫保存cookie58例Susan總是從相同的PC訪問因特網(wǎng)她首次訪問一個(gè)特定的電子商務(wù)站點(diǎn)當(dāng)起始HTTP請求到達(dá)站點(diǎn)時(shí),站點(diǎn)產(chǎn)生一個(gè)獨(dú)特的ID,并為ID在后端數(shù)據(jù)庫中生成一個(gè)表項(xiàng)59工作過程客戶機(jī)服務(wù)器普通HTTP請求報(bào)文普通HTTP響應(yīng)+Set-cookie:1678普通HTTP請求報(bào)文cookie:1678普通HTTP響應(yīng)報(bào)文普通HTTP請求報(bào)文cookie:1678普通HTTP響應(yīng)報(bào)文特定cookie動(dòng)作特定cookie動(dòng)作服務(wù)器為用戶生成ID1678后端數(shù)據(jù)庫中的表項(xiàng)訪問訪問Cookiefile識(shí)別碼1678Cookiefile保存1678Cookiefile識(shí)別碼1678一個(gè)星期以后:60Cookie用途身份認(rèn)證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會(huì)話狀態(tài)(Webe-mail)Cookie缺陷站點(diǎn)可以知道用戶許多信息不利用戶隱私保護(hù)612.2.5HTTP內(nèi)容傳輸Web頁面所含對象:如HTML文件、JPEG文件、Java小應(yīng)用程序等等??梢詡鬏斊渌愋偷奈募喝鐐鬏擷ML(可擴(kuò)充的標(biāo)識(shí)語言)文件。P2P文件共享中:作為文件傳輸協(xié)議使用。用于流式存儲(chǔ)的音頻和視頻。622.2.6Web緩存Web緩存器(Webcache):也叫代理服務(wù)器。能夠代表起始服務(wù)器來滿足HTTP請求的網(wǎng)絡(luò)實(shí)體。保存最近請求過的對象的副本。可在客戶機(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具體操作過程瀏覽器:建立一個(gè)到緩存的TCP連接,并向緩存發(fā)送一個(gè)對該對象HTTP請求Web緩存器:檢查本地是否有該對象的拷貝。有:就用HTTP響應(yīng)報(bào)文向?yàn)g覽器轉(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)緩存接收該對象,存儲(chǔ)一份在本地中,并通過HTTP響應(yīng)報(bào)文向?yàn)g覽器轉(zhuǎn)發(fā)該對象(通過已經(jīng)建立的TCP連接)。客戶機(jī)代理服務(wù)器客戶機(jī)HTTP請求HTTP請求HTTP響應(yīng)HTTP響應(yīng)HTTP請求HTTP響應(yīng)起始服務(wù)器起始服務(wù)器沒有:與該對象的起始服務(wù)器打開一個(gè)TCP連接。客戶機(jī)
Web緩存器起始服務(wù)器66說明Web緩存器既可以是服務(wù)器也可以是客戶機(jī):當(dāng)它接收瀏覽器請求并發(fā)回響應(yīng)時(shí),是服務(wù)器;當(dāng)它向起始服務(wù)器發(fā)出請求并接收響應(yīng)時(shí),是客戶機(jī)67Web緩存優(yōu)點(diǎn)減少客戶機(jī)請求的響應(yīng)時(shí)間:客戶機(jī)
Web緩存器起始服務(wù)器
高速鏈路
減少機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò)與因特網(wǎng)連接鏈路上的通信量:降低開銷,改善各種應(yīng)用的性能。68例1,無Web緩存包括兩個(gè)網(wǎng)絡(luò):機(jī)構(gòu)的內(nèi)部網(wǎng)絡(luò)和因特網(wǎng)。
機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò):是一個(gè)高速的局域網(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報(bào)文小,忽略從因特網(wǎng)路由器轉(zhuǎn)發(fā)HTTP請求報(bào)文,到收到其響應(yīng)報(bào)文的時(shí)間平均=2s(因特網(wǎng)時(shí)延)
起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路70總的響應(yīng)時(shí)間
瀏覽器從請求一個(gè)對象到接收到的時(shí)間:三部分和局域網(wǎng)時(shí)延接入鏈路時(shí)延(兩個(gè)路由器間)因特網(wǎng)時(shí)延起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路71局域網(wǎng)時(shí)延:與流量強(qiáng)度有關(guān)(比特到達(dá)率/推出率)
(15請求/s)×(100kb/請求)/(10Mbit/s)=0.15強(qiáng)度為0.15的通信量最多數(shù)十毫秒的時(shí)延,可忽略接入鏈路時(shí)延:與接入流量強(qiáng)度
(路由器之間)有關(guān)(15請求/s)×(100kb/請求)/(1.5Mbit/s)=1強(qiáng)度接近1,鏈路時(shí)延非常大或無限增長??傢憫?yīng)時(shí)間=接入鏈路時(shí)延+因特網(wǎng)時(shí)延=(分鐘+2sec)請求時(shí)間長,用戶難接受。72改進(jìn)方法一增加接入鏈路的速率:如從1.5Mbps增加到10Mbps,使鏈路上的流量強(qiáng)度減少到0.15,鏈路時(shí)延也可以忽略了。
總響應(yīng)時(shí)間=因特網(wǎng)時(shí)延=2秒鐘投資較大,成本昂貴。73改進(jìn)方法二
在機(jī)構(gòu)網(wǎng)絡(luò)中安裝一個(gè)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)時(shí)延:客戶機(jī)和緩存器位于同一局域網(wǎng),40%的請求幾乎會(huì)立即得到響應(yīng),時(shí)延約10ms。
剩下的60%請求需要通過訪問起始服務(wù)器才能滿足。100kb/10Mbps75接入鏈路時(shí)延:
只有60%的請求對象通過接入鏈路傳送,流量強(qiáng)度從1.0減小到0.6。通常,在1.5Mbps鏈路上,當(dāng)流量強(qiáng)度小于0.8時(shí),時(shí)延很小,可忽略。起始服務(wù)器公共因特網(wǎng)機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps訪問鏈路機(jī)構(gòu)緩存器Web緩存器減少響應(yīng)時(shí)延,成本低
平均時(shí)延為:
0.4×(0.01s)+0.6×(0.01s+2s)=1.21s0.01s2s762.2.7條件GET方法高速緩存:減少響應(yīng)時(shí)間;存放在緩存中的對象拷貝可能是舊的。即保存在起始Web服務(wù)器中的對象可能已經(jīng)被修改。條件GET方法:使緩存器能夠證實(shí)其保存的對象是否為最新。如果緩存中是最新對象版本,可繼續(xù)使用,起始Web服務(wù)器就不需重新發(fā)送該對象。77條件GET方法使用Web服務(wù)器回發(fā)響應(yīng)報(bào)文:包括對象的最后修改時(shí)間Last-modified:date1緩存檢查Web服務(wù)器中的該對象是否已被修改,發(fā)送一個(gè)條件GET請求報(bào)文:
If-modified-since:date1告訴服務(wù)器,僅當(dāng)自指定日期之后該對象被修改過,才發(fā)送該對象。若Web服務(wù)器中的該對象未被修改,則響應(yīng)報(bào)文含有304NotModified,并且實(shí)體為空。78例緩存器服務(wù)器304NotModified實(shí)體為空對象未修改GET/fruit/kiwi.gifHTTP/l.1Host:
HTTP/1.0200OKLast-modified:date1<data>緩存器將對象轉(zhuǎn)發(fā)到瀏覽器,并保存對象到本地(包括對象的最后修改時(shí)間)。一周后,用戶再次請求該對象(仍保留在緩存中),緩存發(fā)送一個(gè)條件GET,檢查該對象是否已被修改GET/fruit/kiwi.gifHTTP/l.1Host:
If-modified-since:date1對象未修改,緩存可以繼續(xù)使用該對象的拷貝,并轉(zhuǎn)發(fā)給用戶瀏覽器。792.3文件傳輸協(xié)議:FTP
本地主機(jī)上的用戶,向遠(yuǎn)程主機(jī)上傳或者下載文件。用戶通過一個(gè)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)識(shí)和口令:在該TCP連接上向服務(wù)器傳送。服務(wù)器驗(yàn)證通過后,進(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使用了兩個(gè)并行的TCP連接:控制連接:數(shù)據(jù)連接:FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口21TCP數(shù)據(jù)連接端口2082控制連接用于在兩主機(jī)間傳輸控制信息(如用戶標(biāo)識(shí)、口令等)FTP會(huì)話開始前,F(xiàn)TP的客戶機(jī)與服務(wù)器在21號(hào)端口上建立。FTP的客戶機(jī)通過該連接發(fā)送用戶標(biāo)識(shí)和口令,或改變遠(yuǎn)程目錄的命令。FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口21TCP數(shù)據(jù)連接端口2083數(shù)據(jù)連接
用于準(zhǔn)確傳輸文件。當(dāng)服務(wù)器收到一個(gè)文件傳輸?shù)拿詈?從遠(yuǎn)程主機(jī)上讀或?qū)?,在20端口發(fā)起一個(gè)到客戶機(jī)的數(shù)據(jù)連接。在該數(shù)據(jù)連接上傳送一個(gè)文件并關(guān)閉連接??刂七B接是持久的:在整個(gè)用戶會(huì)話期間一直保持;數(shù)據(jù)連接是非持久的:會(huì)話中每進(jìn)行一次文件傳輸,都需要建立一個(gè)新的數(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ù)器對每個(gè)活動(dòng)用戶會(huì)話的狀態(tài)進(jìn)行追蹤,并保留;限制同時(shí)會(huì)話的總數(shù)。
HTTP協(xié)議是無狀態(tài)的:不對用戶狀態(tài)進(jìn)行追蹤。85FTP命令,響應(yīng)命令示例:經(jīng)控制信道以ASCII文本發(fā)送USERusernamePASSpasswordLIST返回當(dāng)前目錄中的文件列表RETRfilename獲取(get)文件STORfilename
存儲(chǔ)(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用戶郵箱輸出報(bào)文隊(duì)列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理用戶代理郵件服務(wù)器用戶代理SMTPSMTPSMTP電子郵件地址用戶郵箱名@主機(jī)名881、用戶代理(user
agent)當(dāng)用戶完成郵件撰寫時(shí),郵件代理向其郵件服務(wù)器發(fā)送郵件,并存放在發(fā)送隊(duì)列中。當(dāng)用戶想讀取一條報(bào)文時(shí),郵件代理從其郵件服務(wù)器的郵箱中獲取該報(bào)文。用戶郵箱輸出報(bào)文隊(duì)列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理SMTP郵件閱讀器。允許用戶閱讀、回復(fù)、發(fā)送、保存和撰寫報(bào)文。種類:GUI(圖形用戶接口):閱讀和編寫多媒體郵件。如Outlook、Foxmail等。892、郵件服務(wù)器(mailserver)郵箱:發(fā)送給用戶的報(bào)文。報(bào)文隊(duì)列:用戶要發(fā)出的郵件報(bào)文。用戶郵箱輸出報(bào)文隊(duì)列郵件服務(wù)器用戶代理用戶代理用戶代理郵件服務(wù)器用戶代理SMTP郵件發(fā)送主要過程:郵件保存到發(fā)送方報(bào)文隊(duì)列通過SMTP協(xié)議轉(zhuǎn)發(fā)到接收方郵件服務(wù)器,保存到相應(yīng)郵箱中若投遞失敗,發(fā)送方將其保存在一個(gè)報(bào)文隊(duì)列中,以后每30分鐘發(fā)送一次,若幾天后仍未成功,將該報(bào)文刪除,并通知發(fā)送方。用戶訪問自己郵箱時(shí),郵件服務(wù)器對其身份進(jìn)行驗(yàn)證(用戶名和口令)。903、簡單郵件傳送協(xié)議SMTP
從發(fā)送方的郵件服務(wù)器向接收方的郵件服務(wù)器發(fā)送郵件。應(yīng)用層協(xié)議。使用TCP可靠數(shù)據(jù)傳輸服務(wù)。包括兩部分:客戶機(jī)端:在發(fā)送方郵件服務(wù)器上運(yùn)行;服務(wù)器端:在接收方郵件服務(wù)器上運(yùn)行。每個(gè)郵件服務(wù)器上都有SMTP的客戶機(jī)端和服務(wù)器端。91本節(jié)內(nèi)容2.4.1SMTP2.4.2SMTP與HTTP比較 2.4.3郵件報(bào)文格式和MIME2.4.4郵件訪問協(xié)議922.4.1
SMTP1)Alice啟動(dòng)郵件代理,提供接收方的郵件地址,撰寫郵件2)用戶代理把報(bào)文發(fā)給其郵件服務(wù)器,放在發(fā)送隊(duì)列中
3)SMTP的客戶機(jī)側(cè)創(chuàng)建與Bob的郵件服務(wù)器的TCP連接4)SMTP通過TCP連接發(fā)送報(bào)文5)Bob的郵件服務(wù)器接收并將該報(bào)文放入Bob的郵箱6)Bob調(diào)用其用戶代理來讀報(bào)文用戶代理郵件服務(wù)器郵件服務(wù)器用戶代理123456把一封郵件從發(fā)送郵件服務(wù)器傳送到接收郵件服務(wù)器的過程:如Alice向Bob發(fā)送報(bào)文SMTPBobAlice932.4.1
SMTP1)Alice啟動(dòng)郵件代理,提供接收方的郵件地址,撰寫郵件2)用戶代理把報(bào)文發(fā)給其郵件服務(wù)器,放在發(fā)送隊(duì)列中
3)SMTP的客戶機(jī)側(cè)創(chuàng)建與Bob的郵件服務(wù)器的TCP連接4)SMTP通過TCP連接發(fā)送報(bào)文5)Bob的郵件服務(wù)器接收并將該報(bào)文放入Bob的郵箱6)Bob調(diào)用其用戶代理來讀報(bào)文用戶代理郵件服務(wù)器郵件服務(wù)器用戶代理123456把一封郵件從發(fā)送郵件服務(wù)器傳送到接收郵件服務(wù)器的過程:如Alice向Bob發(fā)送報(bào)文SMTPBobAlice94說明客戶使用TCP來可靠傳輸郵件報(bào)文到服務(wù)器端口號(hào)25。建立TCP連接:握手:指明收發(fā)雙方的郵件地址郵件報(bào)文的傳輸結(jié)束:關(guān)閉TCP連接95SMTP不使用中間郵件服務(wù)器發(fā)送郵件,即TCP連接是從發(fā)送方到接收方的直接相連。如果接收方的郵件服務(wù)器沒有開機(jī),該郵件仍保留在發(fā)送方郵件服務(wù)器上,并在以后進(jìn)行再次傳送。郵件不會(huì)在某個(gè)中間郵件服務(wù)器停留。96共同點(diǎn)都用于從一臺(tái)主機(jī)向另一臺(tái)主機(jī)傳送文件
?
HTTP用于從Web服務(wù)器向Web客戶機(jī)(瀏覽器)傳送文件(對象);
?
SMTP用于從一個(gè)郵件服務(wù)器向另一個(gè)郵件服務(wù)器傳送文件(電子郵件報(bào)文)。
持久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字符的報(bào)文或二進(jìn)制數(shù)據(jù)(如圖片、聲音),需要按照7位ASCII碼進(jìn)行編碼,再傳送。在接收方需要解碼還原為原有報(bào)文。
HTTP數(shù)據(jù)沒有該限制。對含有文本和圖形(或其他媒體類型)的文檔:HTTP把每個(gè)對象封裝在它各自的HTTP響應(yīng)報(bào)文中發(fā)送電子郵件則把所有報(bào)文對象放在一個(gè)報(bào)文中。99郵件報(bào)文格式首部行(收發(fā)人、主題)To:From:Subject:主體“報(bào)文”,
均為ASCII字符首部主體空行100
MIME(多用途因特網(wǎng)郵件擴(kuò)展)
SMTP只傳送7位的ASCII碼。SMTP不能傳送可執(zhí)行文件或其他的二進(jìn)制對象。
MIME:用于非ASCII數(shù)據(jù)傳輸。將非ASCII數(shù)據(jù)編碼后傳輸,接收方再解碼還原。增加新的MIME郵件首部采用某種編碼101
例:傳輸一個(gè)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
接收的報(bào)文
From:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata
base64encodeddata
Received:fromcress.frby;12oct9815:27:39GMT添加一個(gè)Received:首部行1032.4.4郵件訪問協(xié)議發(fā)送方:用戶代理用SMTP將郵件推入其郵件服務(wù)器郵件服務(wù)器再用SMTP將郵件轉(zhuǎn)發(fā)到接收方的郵件服務(wù)器接收方:通過其用戶代理使用一個(gè)郵件訪問協(xié)議(不是SMTP),從其郵件服務(wù)器上取回郵件。
取郵件是一個(gè)拉操作,而SMTP協(xié)議是一個(gè)推協(xié)議。
用戶代理發(fā)送方郵件服務(wù)器用戶代理SMTP訪問協(xié)議接收方郵件服務(wù)器SMTP104郵件訪問協(xié)議:從服務(wù)器獲取郵件。種類:POP3(第三版的郵局協(xié)議)IMAP(因特網(wǎng)郵件訪問協(xié)議)HTTP1051、POP3簡單、功能有限。在用戶代理打開了一個(gè)到郵件服務(wù)器(服務(wù)器)端口110上的TCP連接后,開始工作。106工作步驟(三階段):特許階段:用戶代理發(fā)送用戶名和口令獲得下載郵件的特許。(身份認(rèn)證)事務(wù)處理階段:用戶代理取回報(bào)文,可對郵件進(jìn)行某些操作。如做刪除標(biāo)記、取消刪除標(biāo)記、獲取統(tǒng)計(jì)信息等。更新階段:郵件服務(wù)器刪除帶有刪除標(biāo)記的報(bào)文,結(jié)束POP會(huì)話。1072、IMAPPOP3缺陷:用戶讀取郵件后,服務(wù)器不再保存。IMAP:功能強(qiáng)在用戶的PC機(jī)上運(yùn)行IMAP客戶程序,然后與ISP的郵件服務(wù)器上的IMAP服務(wù)器程序建立TCP連接。用戶在自己的PC機(jī)上就可以操縱郵件服務(wù)器的郵箱,就像在本地操縱一樣,是一個(gè)聯(lián)機(jī)協(xié)議。未發(fā)出刪除命令前,一直保存在郵件服務(wù)器實(shí)現(xiàn)起來復(fù)雜。1083、基于web的電子郵件
1995年12月Hotmail引入該技術(shù)。用戶使用瀏覽器收發(fā)電子郵件。用戶代理是普通的瀏覽器,用戶和其遠(yuǎn)程郵箱之間的通信通過HTTP進(jìn)行:發(fā)件人使用HTTP將電子郵件報(bào)文從其瀏覽器發(fā)送到其郵件服務(wù)器上;收件人使用HTTP從其郵箱中取一個(gè)報(bào)文到瀏覽器;郵件服務(wù)器之間發(fā)送和接收郵件時(shí),使用SMTP。用戶可以在遠(yuǎn)程服務(wù)器上以層次目錄方式組織報(bào)文。如,Hotmail、Yahoo、Mail等。1092.5DNS:因特網(wǎng)的目錄服務(wù)標(biāo)識(shí)主機(jī)的兩種方式:主機(jī)名:由不定長的字母和數(shù)字組成。便于記憶。如
路由器處理困難。IP地址:由4個(gè)字節(jié)組成,有著嚴(yán)格的層次結(jié)構(gòu)。路由器容易處理。如IP地址(點(diǎn)分十進(jìn)制):3
網(wǎng)絡(luò)號(hào)主機(jī)號(hào)1102.5.1DNS提供的服務(wù)報(bào)文在網(wǎng)絡(luò)中傳輸,使用IP地址。域名系統(tǒng)DNS(DomainNameSystem):進(jìn)行主機(jī)名到IP地址的轉(zhuǎn)換。一個(gè)由分層的DNS服務(wù)器實(shí)現(xiàn)的分布式數(shù)據(jù)庫允許主機(jī)查詢分布式數(shù)據(jù)庫的應(yīng)用層協(xié)議;111說明運(yùn)行BIND軟件的UNIX機(jī)器;DNS協(xié)議運(yùn)行在UDP之上,使用53號(hào)端口。DNS通常直接由其他的應(yīng)用層協(xié)議(包括HTTP、SMTP和FTP)使用,以將用戶提供的主機(jī)名解析為IP地址。用戶只是間接使用。112例,某個(gè)用戶主機(jī)上的一個(gè)瀏覽器訪問某個(gè)Web頁,/index.html用戶主機(jī)要將一個(gè)HTTP請求報(bào)文發(fā)送到Web服務(wù)器,需先得到相應(yīng)的IP地址。過程如下:用戶主機(jī)上運(yùn)行DNS應(yīng)用的客戶機(jī)端。瀏覽器從URL中解析出主機(jī)地址,傳給DNS客戶機(jī)端。DNS客戶機(jī)向DNS服務(wù)器發(fā)送一個(gè)包含主機(jī)名的請求;DNS客戶機(jī)收到含有對應(yīng)主機(jī)名的IP地址的回答報(bào)文;瀏覽器向該IP地址指定的HTTP服務(wù)器發(fā)起一個(gè)TCP連接。增加一定時(shí)延。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。說明:每個(gè)參與的對等方既是內(nèi)容的消費(fèi)者也是內(nèi)容的發(fā)布者(下載同時(shí)也向其他用戶上載)。115過程
在PC機(jī)上運(yùn)行一個(gè)P2P文件共享應(yīng)用軟件(對等方);通過ADSL間歇地與接入因特網(wǎng)(無固定IP地址)使用該應(yīng)用程序搜索一首MP3歌曲;顯示一張有該首歌曲的對等方列表:所有在線對等方,并愿意共享該首音樂的MP3拷貝對等方都是普通的PC,是因特網(wǎng)用戶。列表中提供一些附加信息,如接入帶寬和下載時(shí)間。選擇一個(gè)對等方(Bob)并向其請求該MP3文件;兩個(gè)用戶之間建立一個(gè)直接的TCP連接;
MP3文件從Bob的PC機(jī)向Alice的PC發(fā)送;下載期間若偶然斷開,可從其他對等方繼續(xù)下載。116P2P文件共享特點(diǎn)直接在對等方間傳輸:所有內(nèi)容不經(jīng)過第三方服務(wù)器高度的可擴(kuò)展能力:利用眾多對等方集合中的資源去分發(fā)內(nèi)容使用客戶機(jī)/服務(wù)器模式:請求的對等方是客戶機(jī),被選中的對等方是服務(wù)器。服務(wù)器對等方使用文件傳輸協(xié)議向客戶機(jī)對等方傳送。?通過傳送“HTTP請求”和“HTTP響應(yīng)”報(bào)文進(jìn)行。所有的對等方必須既能運(yùn)行文件傳輸協(xié)議的客戶機(jī)端程序,又能運(yùn)行服務(wù)器端程序。?對等方既是一個(gè)客戶機(jī),又是一個(gè)瞬時(shí)Web服務(wù)器。117內(nèi)容定位體系結(jié)構(gòu)
一個(gè)對等方如何確定哪個(gè)對等方有所需要的內(nèi)容。(1)集中式目錄(2)查詢洪泛(3)利用不均勻性(KaZaA)118(1)集中式目錄目錄服務(wù)器(大型服務(wù)器或服務(wù)器場):提供目錄服務(wù)。收集可共享的對象,建立集中式的動(dòng)態(tài)數(shù)據(jù)庫(對象名稱到IP地址的映射)。集中式目錄服務(wù)器對等方AliceBob111123源于Napster公司(第一家世界范圍內(nèi)從事MP3對等應(yīng)用程序)設(shè)計(jì)。119主要工作通知:對等方啟動(dòng)時(shí),將其IP地址及可共享內(nèi)容通知目錄服務(wù)器;查詢內(nèi)容:用戶查詢需要共享的對象。如,Alice查詢某首歌。獲取內(nèi)容:來自Bob。更新:當(dāng)對等方獲得新對象或刪除對象時(shí),通知目錄服務(wù)器更新。對等方AliceBob111123通知和更新集中式目錄服務(wù)器查詢文件傳輸屬于客戶機(jī)/服務(wù)器與P2P的混合結(jié)構(gòu)。120
集中式目錄存在的問題單點(diǎn)故障性能瓶頸侵犯版權(quán)可靠性:文件傳輸是分散的,但定位內(nèi)容的過程是高度集中的。121(2)查詢洪泛:Gnutella是一個(gè)公共域文件共享應(yīng)用程序。全分布方式:無中心服務(wù)器許多Gnutella客戶機(jī)實(shí)現(xiàn)協(xié)議:運(yùn)行在對等方。實(shí)現(xiàn):對等方先形成一個(gè)抽象的邏輯網(wǎng)絡(luò)(覆蓋網(wǎng)絡(luò)):通過洪泛查詢,找到所需對象:如,某個(gè)對等方Alice想得到一個(gè)對象。122特點(diǎn)設(shè)計(jì)簡單。擴(kuò)展性差?!安樵儓?bào)文”在網(wǎng)絡(luò)中產(chǎn)生很大的流量。限范圍的洪泛查詢:在“查詢報(bào)文”中設(shè)置一個(gè)計(jì)數(shù)字段,并給定一個(gè)特定值。可能減少對等方數(shù)量。123覆蓋網(wǎng)絡(luò)如果對等方X和Y間有一條TCP連接,則存在一條邊所有活動(dòng)對等方和邊形成覆蓋網(wǎng)絡(luò)邊不是物理鏈路一個(gè)對等方所連接的節(jié)點(diǎn)少于10個(gè)。124洪泛查詢查詢查詢命中查詢查詢查詢命中查詢查詢查詢命中文件傳輸:HTTP向覆蓋網(wǎng)絡(luò)中的每個(gè)鄰居發(fā)送“查詢報(bào)文”;每個(gè)鄰居再向鄰居轉(zhuǎn)發(fā),使覆蓋網(wǎng)絡(luò)上的每個(gè)對等方都能收到該查詢;如果收到查詢的對等方中有被請求對象,沿反向路徑回發(fā)“查詢命中”報(bào)文;可能收到多個(gè)對等方發(fā)回的“查詢命中”報(bào)文選擇一個(gè)對等方,雙方建立一條直接的TCP連接,并通過HTTP報(bào)文得到內(nèi)容。125
對等方X加入對等方X維持一張對等方列表(IP地址)X試圖與列表上的對等方建立TCP,直到與Y建立連接X向Y發(fā)送Ping報(bào)文;Y向鄰居轉(zhuǎn)發(fā)Ping報(bào)文所有收到Ping報(bào)文的對等方Z用Pong報(bào)文響應(yīng)(IP地址)X收到多個(gè)Pong報(bào)文,建立多個(gè)TCP連接,即多個(gè)邊126KaZaA
與Gnutella類似,無專用服務(wù)器,但對等方地位不平等。實(shí)現(xiàn):對等方先形成一個(gè)層次的覆蓋網(wǎng)絡(luò)通過查詢,找到所需對象。
127層次覆蓋網(wǎng)絡(luò)每組包括若干個(gè)組員,一個(gè)組長組員與其組長有一個(gè)TCP連接,將共享內(nèi)容告訴組長。組長維護(hù)一個(gè)數(shù)據(jù)庫,該組的共享內(nèi)容及相關(guān)對等方的IP地址。相關(guān)組長之間建立TCP連接組長追蹤其所有子節(jié)點(diǎn)上的內(nèi)容普通對等方組長對等方在覆蓋網(wǎng)絡(luò)中的鄰居關(guān)系對等方根據(jù)通信關(guān)系劃分若干組,組成層次結(jié)構(gòu)。128KaZaA:查詢對等方確定到某個(gè)特定對象的方法:向組長發(fā)出查詢,組長用本組中具有該對象的對等方列表響應(yīng);或與其他組長聯(lián)系,請它們向該對等方發(fā)送具有該對象的對等方列表。129KaZaA特點(diǎn)層次覆蓋網(wǎng)絡(luò)查詢流量不大設(shè)計(jì)技巧請求排隊(duì):限制并行上載數(shù)量激勵(lì)優(yōu)先權(quán):上載文件比下載文件多的用戶優(yōu)先。并行下載:從多個(gè)對等方請求并下載同一個(gè)文件的不同部分。1302.7TCP套接字編程網(wǎng)絡(luò)應(yīng)用程序的核心:客戶機(jī)程序和服務(wù)器程序。運(yùn)行時(shí),分別創(chuàng)建一個(gè)客戶機(jī)進(jìn)程和一個(gè)服務(wù)器進(jìn)程,相互之間通過套接字讀寫數(shù)據(jù)進(jìn)行通信。網(wǎng)絡(luò)應(yīng)用程序類型:通用應(yīng)用程序:通過RFC文檔所定義的標(biāo)準(zhǔn)協(xié)議來實(shí)現(xiàn)程序必須滿足該RFC所規(guī)定的規(guī)則;使用與協(xié)議相關(guān)的端口號(hào)。如Web應(yīng)用專用的應(yīng)用程序:程序不必符合RFC規(guī)則;開發(fā)者根據(jù)實(shí)際應(yīng)用設(shè)計(jì);不能使用RFC中定義的周知端口號(hào)。131說明
研發(fā)初期,先選擇運(yùn)輸層協(xié)議:TCP:面向連接的,為兩個(gè)端系統(tǒng)之間的數(shù)據(jù)流動(dòng)提供可靠的字節(jié)流通道。UDP:無連接的,從一個(gè)端系統(tǒng)向另一個(gè)端系統(tǒng)發(fā)送獨(dú)立的數(shù)據(jù)分組,不對交付提供任何保證。1322.7.1TCP套接字編程
運(yùn)行在不同機(jī)器上的進(jìn)程彼此通過套接字傳遞報(bào)文來進(jìn)行通信。進(jìn)程/套接字:房子/門戶,即套接字是應(yīng)用進(jìn)程和TCP之間的門戶。程序開發(fā)者可以控制應(yīng)用層端所有東西;不能控制運(yùn)輸層端。
TCP服務(wù):
從一個(gè)進(jìn)程到另一個(gè)進(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ù)器程序的一個(gè)套接字(歡迎套接字)已經(jīng)打開,準(zhǔn)備接收客戶機(jī)程序發(fā)起的連接(敲門)。具體過程:134建立TCP連接客戶機(jī)進(jìn)程向服務(wù)器發(fā)起一個(gè)TCP連接:
創(chuàng)建一個(gè)本地套接字,指定相應(yīng)服務(wù)器進(jìn)程的地址(IP地址和端口號(hào))。建立一個(gè)TCP連接:當(dāng)服務(wù)器聽到客戶機(jī)的連接請求(敲門)時(shí),創(chuàng)建一個(gè)新套接字,經(jīng)過“三次握手”,客戶機(jī)套接字和服務(wù)器套接字之間建立一個(gè)TCP連接(直接的虛擬管道)。135傳送數(shù)據(jù)TCP連接為客戶機(jī)和服務(wù)器了一個(gè)直接的傳輸管道??煽康?順序的,字節(jié)流的傳輸136術(shù)語流:流入或流出某進(jìn)程的一串字符序列。輸入流:來自某個(gè)輸入源(如鍵盤)、或某個(gè)套接字(因特網(wǎng)的數(shù)據(jù)流入套接字)。輸出流:到某個(gè)輸出源(如顯示器)、或某個(gè)套接字(數(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ī)??蛻魴C(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)建了三個(gè)流和一個(gè)套接字,如圖所示。套接字: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)建一個(gè)連接套接字
生成輸入流,與套接字聯(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é)束,返回并等待另一個(gè)客戶機(jī)連接1442.8UDP套接字編程UDP是一種無連接的服務(wù),即在兩個(gè)進(jìn)程之間沒有創(chuàng)建管道時(shí)所需的初始握手階段。進(jìn)程之間的數(shù)據(jù)傳遞以分組為單位進(jìn)行。分組中含目的進(jìn)程地址(主機(jī)IP地址和端口號(hào))。提供不可靠的傳輸服務(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林市第一中學(xué)2025屆高考語文倒計(jì)時(shí)模擬卷含解析
- 貴州省六盤水市鐘山區(qū)六盤水七中2025屆高三第二次聯(lián)考數(shù)學(xué)試卷含解析
- 黑龍江省齊齊哈爾十一中學(xué)2025屆高三第二次聯(lián)考數(shù)學(xué)試卷含解析
- 吉林省公主嶺第五中學(xué)2025屆高考考前提分?jǐn)?shù)學(xué)仿真卷含解析
- 2025屆重慶市江津區(qū)高三第五次模擬考試英語試卷含解析
- 福建省泉州市洛江區(qū)馬甲中學(xué)2025屆高三六校第一次聯(lián)考英語試卷含解析
- GB/T 44971-2024土壤硒含量等級(jí)
- 2025屆山東省淄博第十中學(xué)高三第六次模擬考試英語試卷含解析
- 安徽省馬鞍山二中、安師大附中2025屆高三二診模擬考試英語試卷含解析
- 安徽省屯溪一中2025屆高三二診模擬考試英語試卷含解析
- 火電廠電氣值班員培訓(xùn)
- 導(dǎo)尿管相關(guān)尿路感染預(yù)防與控制技術(shù)指南-3
- 2024年人教版八年級(jí)數(shù)學(xué)上冊期末考試卷(附答案)
- 【浙江卷】浙江省2024學(xué)年第一學(xué)期杭州市2025屆高三年級(jí)教學(xué)質(zhì)量檢測(杭州一模)(11.4-11.6)歷史試卷答案
- 2024年高考真題完全解讀課件:2024年高考物理真題完全解讀(遼寧、吉林、黑龍江卷)
- 電大機(jī)考-2270資源與運(yùn)營管理(題庫帶答案)
- 國開(浙江)2024年秋《中國建筑史(本)》形考作業(yè)1-4答案
- 2024年海南省高考?xì)v史試卷(含答案解析)
- 北京工業(yè)大學(xué)《數(shù)學(xué)模型》2022-2023學(xué)年第一學(xué)期期末試卷
- 部編版語文五年級(jí)上冊《父愛之舟》說課
- 大學(xué)生思想道德與法治課件
評論
0/150
提交評論