計算機網(wǎng)絡第二章應用層_第1頁
計算機網(wǎng)絡第二章應用層_第2頁
計算機網(wǎng)絡第二章應用層_第3頁
計算機網(wǎng)絡第二章應用層_第4頁
計算機網(wǎng)絡第二章應用層_第5頁
已閱讀5頁,還剩115頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1第二章應用層Chapter2ApplicationLayerComputerNetworking

ATop-DownApproach2第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程32.1應用層協(xié)議原理網(wǎng)絡應用程序位于應用層網(wǎng)絡游戲網(wǎng)絡視頻網(wǎng)絡電話視頻會議網(wǎng)絡搜索電子商務豐富、奇妙的網(wǎng)絡應用程序促使了Internet的高速發(fā)展應用程序舉例:電子郵件Web應用即時訊息遠程訪問文件共享文件傳輸4問題如何將一個idea轉(zhuǎn)化成現(xiàn)實世界中的網(wǎng)絡應用呢?NetworkApplicationDevelopment5開發(fā)網(wǎng)絡應用程序網(wǎng)絡應用程序開發(fā)核心是:

Writingprogramsthatrunondifferentendsystemsandcommunicatewitheachotheroverthenetwork

(寫出能夠運行在不同的端系統(tǒng)并通過網(wǎng)絡彼此通信的程序)例如,Web程序:Web服務器程序和用戶瀏覽器程序端系統(tǒng):Web服務器主機和用戶主機通信:用戶通過瀏覽器請求閱覽Web頁面,服務器響應用戶頁面請求網(wǎng)絡:Internet6開發(fā)網(wǎng)絡應用程序考慮幾個重要問題:采用什么樣的體系結(jié)構(gòu)?進程如何通信?選擇什么樣的運輸層服務?應用層采用什么樣的協(xié)議?注意:無需為網(wǎng)絡核心設備(如路由器或鏈路層交換機)開發(fā)軟件因為網(wǎng)絡核心設備并不在應用層,而在網(wǎng)絡層、鏈路層和物理層優(yōu)點在于將應用軟件限制在端系統(tǒng),促進大量應用程序的研發(fā)和部署72.2.1網(wǎng)絡應用程序體系結(jié)構(gòu)應用程序體系結(jié)構(gòu):Designedbytheapplicationdeveloperdictatehowtheapplicationisstructuredoverthevariousendsystems分類:客戶機/服務器結(jié)構(gòu)P2P體系結(jié)構(gòu)混合的體系結(jié)構(gòu)8客戶機/服務器結(jié)構(gòu)服務器:總是打開(always-on)具有固定的、眾所周知的IP地址主機群集常被用于創(chuàng)建強大的虛擬服務器客戶機:無需總打開,可間斷的同服務器連接可擁有動態(tài)IP地址客戶機相互之間不直接通信9應用搜索引擎,如Google,百度網(wǎng)絡商務,如Amazon,e-Bay,淘寶網(wǎng)Web電子郵件,如Yahoo郵件社交網(wǎng)絡,如MySpace和Facebook視頻共享,如YouTube10純P2P體系結(jié)構(gòu)沒有總是打開的服務器任意一對主機直接相互通信對等方間歇連接并且可以改變IP地址優(yōu)點:self-scalabilitycosteffective缺點:難以管理安全性11應用文件分發(fā),如BitTorrent文件搜索和共享,如eMule和LimeWire網(wǎng)絡電話,如SkypeIPTV,如PPLive122.1.2進程通信進程:運行在端系統(tǒng)中的程序同一主機上的兩個進程通過內(nèi)部進程通信機制進行通信不同主機上的兩個進程通過計算機網(wǎng)絡交換報文相互通信客戶機進程:

發(fā)起通信的進程服務器進程:

等待聯(lián)系的進程注意:具有P2P體系結(jié)構(gòu)的應用程序同時有客戶機進程和服務器進程。13進程與網(wǎng)絡的接口進程與網(wǎng)絡的接口是套接字通過套接字,進程在網(wǎng)絡上發(fā)送和接收報文進程類比于房屋中的人,套接字類比于門發(fā)送進程把報文從門發(fā)送出去接收進程把報文從門接收進來套接字又叫做網(wǎng)絡應用程序編程接口API用戶通過API對傳輸層的控制,但僅限于:

(1)選擇傳輸協(xié)議,如TCP或UDP;(2)能設定幾個參數(shù),如最大緩存、最大報文長度等14由操作系統(tǒng)控制進程具有緩存、變量的TCP套接字主機或服務器進程具有緩存、變量的TCP套接字主機或服務器Internet由應用開發(fā)者控制15進程尋址主機有唯一的32位IP地址,但一臺主機卻能夠運行許多進程。如何知道接收到的報文應該投遞給哪個進程呢?每個進程需要一個標識(identifier)進程標識:包括IP地址和端口號(IP,port)比如:發(fā)送HTTP報文到web服務器,則需要如下信息:IPaddress:

2Portnumber:

801616應用程序需要運輸層哪些運輸要求?1.可靠數(shù)據(jù)傳輸非完全可靠數(shù)據(jù)傳輸:有些應用程序(e.g.,audio)可以容忍數(shù)據(jù)丟失完全可靠數(shù)據(jù)傳輸:另一些應用程序(e.g.,filetransfer,telnet)需要完全可靠的數(shù)據(jù)傳輸2.定時(Timing)定時保證,比如規(guī)定100ms端到端傳輸限制低時延保證3.吞吐量(Throughput)有些應用程序要求最低限度的吞吐量有些應用程序根據(jù)需要彈性利用可供使用的吞吐量4.安全性(Security)加密(Encryption)數(shù)據(jù)完整性(Integrity)端點鑒別(Authenticat-ion)17常見應用的傳輸服務需求時間敏感不不不是,100msec是,幾秒是,100msec是和不是應用文件傳輸電子郵件Web實時音頻/視頻存儲音頻/視頻交互式游戲即時訊息數(shù)據(jù)丟失不能丟失不能丟失不能丟失容忍丟失容忍丟失容忍丟失不能丟失帶寬彈性彈性彈性音頻:幾kbps-1Mbps視頻:10kbps-5Mbps同上幾kbps以上彈性18因特網(wǎng)運輸協(xié)議提供的服務TCP服務:面向連接的服務:在客戶機程序和服務器程序之間必須建立連接可靠的傳輸服務:

接收和發(fā)送進程間流量控制:

發(fā)送方不會淹沒接收方擁塞控制:

網(wǎng)絡出現(xiàn)擁塞時抑制發(fā)送進程沒有提供:實時性最小帶寬保證UDP服務:不可靠數(shù)據(jù)傳輸沒有提供:建立連接可靠性流量控制擁塞控制時延和帶寬保證19因特網(wǎng)應用:應用層協(xié)議,傳輸協(xié)議應用電子郵件遠程終端訪問Web文件傳輸流媒體因特網(wǎng)電話應用層協(xié)議SMTP[RFC2821]Telnet[RFC854]HTTP[RFC2616]FTP[RFC959]通常專用(e.g.RealNetworks)通常專用(e.g.,Dialpad)下面的傳輸協(xié)議TCPTCPTCPTCPTCPorUDP典型用UDP20第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程21常用術(shù)語網(wǎng)頁:(Web頁,或稱文檔)由許多對象組成。

對象:就是文件,可以是HTML文件,JPEG圖像,Javaapplet,音頻文件…多數(shù)網(wǎng)頁由單個基本HTML文件和若干個所引用的對象構(gòu)成每個對象通過一個URL(UniformResourceLocator統(tǒng)一資源定位符)尋址舉例URL:/someDept/pic.gif主機名路徑名協(xié)議22HTML舉例<html><body><ahref="../asdocs/html_tutorials/humor01.html"target="_blank">一則笑話</a><p>

如果你將target的屬性值設成_blank,你點擊這個鏈接的時候,網(wǎng)頁就會在一個新窗口出現(xiàn)。</p></body></html>232.2.1HTTP概述HTTP:超文本傳輸協(xié)議HyperTextTransferProtocolWeb的應用層協(xié)議,建立在TCP運輸層協(xié)議上client/server模式client:

瀏覽器browser請求接收解釋并顯示W(wǎng)eb對象server:Web服務器響應請求,發(fā)送Web對象協(xié)議版本HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse24HTTP概述(續(xù))使用TCP:客戶發(fā)起TCP連接:客戶初始化一個與HTTP服務器80端口的TCP連接服務器接收并建立TCP連接:HTTP服務器接收來自客戶的TCP連接請求,建立連接交換HTTP消息:Browser(HTTPclient)和Web服務器(HTTPserver)交換HTTP消息(應用層協(xié)議消息),包括HTTP請求和響應消息結(jié)束:最后結(jié)束(或叫關(guān)閉)TCP連接HTTP是無狀態(tài)協(xié)議HTTP服務器不維護客戶先前的狀態(tài)信息維護狀態(tài)的協(xié)議非常復雜!必須維護過去歷史(狀態(tài)信息)如果server/client崩潰,它們各自的狀態(tài)視圖可能不一致。252.2.2HTTP連接2.持久HTTP連接一個TCP連接上可以傳送多個對象HTTPv1.1默認使用持久HTTP連接1.非持久HTTP連接每個TCP連接上只傳送一個對象HTTPv1.0使用非持久HTTP連接26響應時間模型1.往返時間(Round-TripTime,RTT):1個分組從客戶主機到服務器再回到客戶主機所花費的時間2.響應時間:1個RTT用于建立TCP連接1個RTT用于HTTP請求/響應消息的交互Html文件總響應時間:total=2RTT+transmittime傳輸文件的時間發(fā)起TCP連接RTT請求文件RTT接收整個文件客戶機的時間服務器的時間27(1).非持久HTTP連接假設用戶輸入URL

http://www.someS/someDepartment/home.index1a.

初始化1個與服務器主機HTTP服務器的TCP連接

2.

發(fā)送1個HTTP請求消息(包含URL)到TCP連接套接字(此消息指出客戶需要Web對象someDepartment/home.index)1b.在80端口監(jiān)聽來自HTTP客戶的TCP連接請求;

收到連接請求后,接受并建立連接,通知客戶3.HTTP服務器接收請求消息,產(chǎn)生1個響應消息(包含被請求html文件),并發(fā)送這個消息到自身TCP連接套接字time網(wǎng)頁由1個HTML文件,和10個jpeg圖像構(gòu)成www.someS服務器用戶HTTP客戶機4.HTTP服務器結(jié)束TCP連接.5.HTTP客戶接收并解析html文件,顯示html文件(僅得到10個jpeg對象的引用)對10個引用jpeg對象的每1個重復步驟1-5總計需要做11次TCP鏈接28(2)持久HTTP連接非持久HTTP連接的問題:每個對象需要2個RTT操作系統(tǒng)必須為每個TCP連接分配主機資源大量客戶的并發(fā)TCP連接形成服務器的嚴重負擔

以上例子需11次TCP連接持久HTTP連接服務器發(fā)送響應消息后保持連接同1客戶/服務器的后續(xù)HTTP消息繼續(xù)在該連接上傳送以上例子需1次TCP連接292.2.3HTTP報文格式2類HTTP報文請求報文request響應報文response報文采用ASCII文本

(易于人讀格式)301.HTTP請求報文URL版本spcrlfsp方法值spcrlf首部字段名:值spcrlf首部字段名:crlf請求行首部行空行實體主體注:URL=UniformResourceLocator31舉例GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0//代理對象版本Connection:Close//不使用持久連接Accept-language:zh-cn//中文版本(額外的回車換行)

請求行首部行方法URLHTTP版本回車換行指示結(jié)束32方法類型HTTP/1.0GET請求一個對象POST用戶提交表單HEAD服務器收到請求時,用HTTP報文進行響應,但不返回請求對象應用程序開發(fā)者常用來故障跟蹤HTTP/1.1GETPOSTHEADPUT文件在實體主體中被上載到URL字段指定的路徑DELETE刪除URL字段指定的文件33上載表單(各字段)輸入值Post方法:網(wǎng)頁時常包含表單輸入輸入值在請求報文的實體主體中被上載到服務器URL方法:使用GET方法表單(各字段)輸入值被上載,以URL請求行的字段:/animalsearch?monkeys&banana341.HTTP響應報文狀態(tài)碼短語spcrlfsp版本值spcrlf首部字段名:值spcrlf首部字段名:crlf狀態(tài)行首部行空行實體主體352.HTTP響應消息HTTP/1.1200OKConnection:closeDate:Thu,06Aug199812:00:15GMTServer:Apache/1.3.0(Unix)Last-Modified:Mon,22Jun1998…...Content-Length:6821Content-Type:text/html

datadatadatadatadata...狀態(tài)行(版本、狀態(tài)編碼、短語)首部行數(shù)據(jù),e.g.,被請求的HTML文件36HTTP響應的狀態(tài)碼200OK請求成功,所請求信息在響應消息中返回301MovedPermanently所請求的對象已永久遷移,新的URL在本響應消息的(location:)頭部指出400BadRequest該請求不能被服務器解讀404NotFound服務器上不存在所請求文檔505HTTPVersionNotSupported位于服務器響應報文的第一行幾個常見的樣本狀態(tài)碼:372.2.4用戶與服務器交互:CookiesHTTP服務器是無狀態(tài)的優(yōu)點在于:簡化服務器設計,可同時處理數(shù)以千計的TCP鏈接,提高了Web服務器的處理性能無狀態(tài)HTTP服務器無法識別用戶,難以實現(xiàn):限制用戶的訪問跟蹤用戶的訪問為此,RF2109定義了Cookie38用戶與服務器交互:CookiesCookies的4個重要方面:1)cookie首部行-在HTTP響應報文中2)cookie首部行-在HTTP請求報文中3)cookie文件-保存在用戶主機中并被用戶瀏覽器管理4)cookie-保存在Web站點的后端數(shù)據(jù)庫39舉例:李四總是使用同臺PC訪問Internet他首次訪問1個電子商務網(wǎng)站當他最初發(fā)出HTTP請求訪問該站點時,該站點創(chuàng)建一個唯一的ID,并在后端數(shù)據(jù)庫創(chuàng)建一個該ID表項40Cookies:跟蹤用戶(續(xù).)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:41Cookies:跟蹤用戶(續(xù).)Cookies可以帶來什么?身份認證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會話狀態(tài)(Webe-mail)Cookies和隱私:cookies允許網(wǎng)站更加了解你你可以提供名字和e-mail給網(wǎng)站補充422.2.5Web緩存(代理服務器)WebCache(ProxServer):anetworkentitythatsatisfiesHTTPrequestsonthebehalfofanoriginWebserver用戶配置瀏覽器:Web訪問經(jīng)由代理服務器所有HTTP請求指向緩存若對象在緩存中,緩存器返回對象否則,緩存器向起始服務器發(fā)出請求,接收對象后再轉(zhuǎn)發(fā)給客戶機客戶機代理服務器客戶機HTTP請求HTTP請求HTTP響應HTTP響應HTTP請求HTTP響應起始服務器起始服務器HTTP請求HTTP響應43為何使用Web緩存?減少客戶請求的響應時間減少機構(gòu)接入鏈路的擁塞加強網(wǎng)絡內(nèi)容提供商的內(nèi)容分發(fā)能力originserverspublicInternetinstitutionalnetwork10MbpsLAN1.5Mbpsaccesslinkinstitutionalcache43Web緩存同時作用于客戶端和服務器端典型緩存器由ISP安裝(university,company,residentialISP)注:44緩存器舉例假設對象平均長度=1Mbits機構(gòu)內(nèi)的瀏覽器對對象的平均訪問速率=15個對象請求/sec因特網(wǎng)時延=2sec結(jié)論局域網(wǎng)上的流量強度:15*1M/100Mbps=0.15鏈路上的流量強度:15*1M/15M=1總延時=因特網(wǎng)時延+接入時延+局域網(wǎng)時延

=2秒+數(shù)分鐘+數(shù)毫秒起始服務器公共

Internet機構(gòu)網(wǎng)絡100MbpsLAN15Mbps接入鏈路總時延很大,請求的平均響應時間以分鐘計45緩存器舉例(續(xù))解決辦法之一:增加接入提高鏈路的速率鏈路上的流量強度=15%結(jié)論局域網(wǎng)上的流量強度=15%總時延=因特網(wǎng)時延+接入時延+局域網(wǎng)時延

=2秒+數(shù)毫秒+數(shù)毫秒其缺陷在于需要較大的投資起始服務器公共

Internet機構(gòu)網(wǎng)絡100MbpsLAN15Mbps接入鏈路100Mbps接入鏈路46緩存器舉例(續(xù))解決辦法之二:安裝緩存器假設緩存器命中率為0.4結(jié)論40%請求立即會得到響應60%的請求通過訪問起始服務器滿足鏈路上的流量強度減為0.6,可以忽略不計總的平均延時=因特網(wǎng)時延+接入時延+局域網(wǎng)時延=0.6*(2.01)秒+數(shù)毫秒<1.4秒起始服務器公共

Internet機構(gòu)網(wǎng)絡10MbpsLAN1.5Mbps接入鏈路機構(gòu)緩存器47結(jié)論方案二比方案一的響應時延更低方案二不需升級因特網(wǎng)的接入鏈路購買和安裝Web緩存器成本更低廉482.2.6條件GET方法問題:Web服務器中的對象可能已被修改,而代理服務器中的對象變得陳舊,如何保證用戶訪問到最新的對象呢?解決辦法:條件GET方法緩存器:在請求報文中包含對象最后修改時間If-modified-since:<date>服務器:

如果對象是最新的則響應報文中不包含對象:HTTP/1.0304NotModified49cacheserverHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0304NotModifiedobjectnotmodifiedHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0200OK<data>objectmodified50第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP

2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程*2.9構(gòu)造一個簡單的Web服務器51FTP:文件傳輸協(xié)議

FileTransferProtocol傳輸文件到遠程主機/從遠程主機下載文件client/server模式client:

發(fā)起傳輸?shù)囊环絪erver:遠程主機ftp:RFC959ftp服務器:端口號21文件傳輸FTP服務器FTP用戶接口FTP客戶機本地文件系統(tǒng)遠程文件系統(tǒng)用戶52FTP數(shù)據(jù)傳輸過程1.FTP客戶首先發(fā)起建立1個與FTP服務器端口號21之間的TCP控制連接,指定TCP作為傳輸層協(xié)議2.客戶在建立的控制連接上獲得身份認證3.客戶在建立的控制連接上發(fā)送命令來瀏覽遠程主機的目錄.4.當服務器接收到1個文件傳輸命令時,在服務器端口號20創(chuàng)建1個與客戶的TCP數(shù)據(jù)連接5.1個文件傳輸后,服務器結(jié)束這個TCP數(shù)據(jù)連接.53獨立的控制連接,數(shù)據(jù)連接數(shù)據(jù)連接:傳輸下一個文件則另外打開一個TCP數(shù)據(jù)連接控制連接:帶外(out-of-band)發(fā)送控制信息FTP服務器要維護用戶狀態(tài)信息:當前目錄,先前的身份認證FTP客戶機FTP服務器TCP控制連接端口

21TCP數(shù)據(jù)連接端口

2054ftp命令,響應命令樣例:在控制通道上傳送的ASCII文本USERusername(登錄)PASSpassword(登錄)LIST

(返回當前目錄中的文件列表)RETRfilename

(取(gets)文件)STORfilename

(存(puts)文件到遠程主機)返回碼樣例狀態(tài)碼和短語(同http)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile5455第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個簡單的Web服務器56電子郵件3個主要組成部分:

用戶代理useragents郵件服務器mailservers簡單郵件傳送協(xié)(SMTP)用戶郵箱外出報文隊列mailserveruseragentuseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP123571.電子郵件:用戶代理允許用戶閱讀、回復、轉(zhuǎn)發(fā)、保存和編輯郵件消息通過運行郵件協(xié)議,發(fā)送消息到郵件服務器或從服務器上接收郵件消息例如:Outlook,foxmail等582.電子郵件:郵件服務器郵件服務器包括:

1.郵箱mailbox

存放用戶接收的郵件消息2.外出報文隊列outgoing

message

queue3.郵件協(xié)議用在郵件服務器之間發(fā)送郵件useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP593.電子郵件:SMTP協(xié)議[RFC5321]

SimpleMailTransferProtocol使用TCP可靠數(shù)據(jù)傳輸服務,傳輸郵件消息到服務器端口號25直接傳送:發(fā)送郵件服務器到接收郵件服務器傳輸?shù)?個階段握手(問候)郵件消息的傳輸結(jié)束協(xié)議采用命令/應答的交互命令:ASCII文本格式應答:

狀態(tài)碼及其短語郵件消息必須是7-bitASCII60例子:Alice發(fā)送郵件消息到Bob1)Alice使用用戶代理編寫郵件消息(給bob@的)2)Alice的用戶代理發(fā)送郵件消息到她的郵件服務器;郵件消息存放在郵件消息隊列3)Alice郵件服務器的SMTP客戶端發(fā)起建立一個到Bob的郵件服務器的SMTP服務器端的TCP連接.4)SMTP客戶在這個TCP連接上發(fā)送Alice的郵件消息5)Bob服務器存放郵件消息存到Bob的郵箱6)Bob調(diào)用他的用戶代理讀郵件消息useragentmailservermailserveruseragent123456useragent1useragent1useragent61SMTP客戶和服務器的命令交互S:220C:HELOcrepes.frS:250Hellocrepes.fr,pleasedtomeetyouC:MAILFROM:<alice@crepes.fr>S:250alice@crepes.fr...SenderokC:RCPTTO:<bob@>S:250bob@...RecipientokC:DATAS:354Entermail,endwith"."onalinebyitselfC:Doyoulikeketchup?C:Howaboutpickles?C:.S:250MessageacceptedfordeliveryC:QUITS:221closingconnection62SMTP:總結(jié)SMTP使用持久連接SMTP要求郵件消息(header&body)必須是7-bitASCIISMTP服務器使用CRLF.CRLF

來判斷郵件消息的結(jié)束與HTTP的比較:相同點:在主機間傳輸文件持久連接ASCII命令/應答交互,狀態(tài)碼不同點:HTTP:拉協(xié)議(Pull),SMTP:推協(xié)議(Push)SMTP要求7-bitASCII編碼,HTTP無此要求HTTP每個對象封裝在各自HTTP響應消息中;SMTP的各個對象置于同一個郵件消息中發(fā)送63郵件消息的格式RFC822定義文本郵件消息格式標準:信頭-頭部行。如:To:From:Subject:信體郵件消息也必須是ASCII字符headerbodyblankline64MIME引入RFC822描述只適合普通ASCII文本對多媒體報文(如圖片、音視頻)或非ASCII文本格式(如非英語語言字符)的報文處理無法滿足RFC2045,2046定義了RFC822的擴展MIME:MultipurposeInternetmailExtensions(多用途因特網(wǎng)郵件擴展)65MIME頭部格式增添額外的兩個關(guān)鍵信頭聲明:content-typecontent-transfer-encodingFrom: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ù)66郵件訪問協(xié)議郵件訪問協(xié)議:從服務器獲取郵件消息POP:PostOfficeProtocol郵局協(xié)議[RFC1939]110端口號身份認證(代理<-->服務器),下載郵件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更復雜!)允許用戶像對待本地郵箱那樣操縱遠程郵箱的郵件基于Web的電子郵件,比如Yahoo,Google等useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver67POP3協(xié)議:第三版POP協(xié)議1.身份認證階段authorizationphase客戶命令:userusernamepasspassword服務器響應+OK-ERR

C:listS:1498S:2912S:.C:retr1S:<message1contents>S:.C:dele1C:retr2S:<message1contents>S:.C:dele2C:quitS:+OKPOP3serversigningoffS:+OKPOP3serverreadyC:userbobS:+OKC:passhungryS:+OKusersuccessfullyloggedon2.傳輸階段transactionphase客戶命令:list:列出郵件編號retr:按編號取郵件dele:刪除quit68第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個簡單的Web服務器69DNS:域名系統(tǒng)DomainNameSystem人可以有很多標識:ID,name,passport主機和路由器標識:IPaddress(32bit)–

用于分組尋址“主機名”–

用于人記憶識別,比如Q:可以在IP地址和主機名之間建立映射嗎?域名系統(tǒng)

DomainNameSystem域名系統(tǒng)(DNS)分布式數(shù)據(jù)庫:一個由分層DNS服務器實現(xiàn)的分布式數(shù)據(jù)庫應用層協(xié)議:DNS服務器實現(xiàn)域名轉(zhuǎn)換的應用層協(xié)議(域名/地址轉(zhuǎn)換)DNS協(xié)議運行在UDP之上,使用53號端口702.5.1DNS提供的服務DNS服務器提供的服務:1.主機名到IP地址的轉(zhuǎn)換2.主機別名一個主機可以有一個規(guī)范主機名和多個主機別名比如,名為的主機,可能有別名或3.郵件服務器別名比如,是郵件服務器,Bob的郵箱可以是簡單的bob@4.負載分配DNS實現(xiàn)冗余服務器:一個IP地址集合可以對應于同一個規(guī)范主機名。712.5.2DNS工作原理DNS采用分布式,為什么不集中式?單點故障如果DNS服務器崩潰,則整個Internet隨之癱瘓通信容量單個DNS服務器為上億臺主機服務遠距離集中式數(shù)據(jù)庫導致嚴重時延維護中央數(shù)據(jù)庫非常龐大,需維護所有主機記錄完全沒有可擴展能力72舉例:分布式、層次結(jié)構(gòu)根DNS服務器comDNS服務器orgDNS服務器eduDNS服務器DNS服務器DNS服務器DNS服務器DNS服務器DNS服務器客戶機怎樣決定主機名的IP地址?客戶機查詢根服務器得到comDNS服務器客戶機查詢comDNS服務器得到DNS服務器客戶機查詢DNS服務器得到的IP地址頂級域服務器權(quán)威服務器73一、根DNS服務器RootDNSservers根DNS服務器負責記錄頂級域名服務器的信息bUSC-ISIMarinadelRey,CAlICANNMarinadelRey,CAeNASAMtView,CAfInternetSoftwareC.PaloAlto,CAiNORDUnetStockholmkRIPELondonmWIDETokyoaNSIHerndon,VAcPSInetHerndon,VAdUMarylandCollegePark,MDgDISAVienna,VAhARLAberdeen,MDjNSI(TBD)Herndon,VAInternet有13個跟DNS服務器,大部分在北美74二、頂級域服務器(TLD)頂級域服務器負責管理

頂級域名,比如com,org,net,edu,etc國家的頂級域名,比如uk,fr,ca,jp,etcNetworksolutions公司維護com頂級域的TLD服務器Educause公司維護edu頂級域的TLD服務器75三、權(quán)威DNS服務器權(quán)威DNS服務器在因特網(wǎng)上,具有公共可訪問主機(如Web服務器和郵件服務器)的每個組織機構(gòu)必須提供公共可訪問的DNS記錄,這些記錄將可訪問主機的名字映射為IP地址。組織機構(gòu)的權(quán)威DNS服務器負責保存這些DNS記錄。多數(shù)大學和公司維護它們的基本權(quán)威DNS服務器76特殊DNS:本地DNS服務器本地DNS服務器也叫默認名字服務器,Defaultnameserver嚴格來說,本地DNS服務器不屬于DNS服務器的層次結(jié)構(gòu)每個ISP(如居民區(qū)ISP、公司、大學)都有一臺本地DNS當主機發(fā)出DNS請求時,該請求被發(fā)往本地DNS服務器本地DNS服務器起著代理的作用,轉(zhuǎn)發(fā)請求到層次結(jié)構(gòu)中77四類服務器交互查詢請求主機客戶機根DNS服務器本地域名服務器123456權(quán)威DNS服務器78頂級域服務器78DNS查詢方法一遞歸查詢:名字解析的負擔交給被查詢的DNS服務器被查詢的DNS服務器負載重requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver379requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查詢方法二迭代查詢:被查詢的DNS服務器回復下一層可以被查詢的DNS服務器的IP地址80DNS緩存和記錄更新為改善時延性能和減少Internet上DNS報文數(shù)量,引入DNS緩存(DNScaching)一旦DNS服務器獲得DNS映射,它將緩存該映射到本地存儲器服務器在一定時間后將丟棄緩存的信息本地DNS服務器可以緩存TLD服務器的IP地址,因此根DNS服務器不會被經(jīng)常訪問812.5.3DNS記錄和報文DNS:

存儲資源記錄(RR,ResourceRecords)的分布式數(shù)據(jù)庫Type=NSname=域名value=DNS服務器的主機名例:(,,NS,2)RR格式:(name,value,type,ttl)Type=Aname=主機名value=IP地址例:(R,26,A,2)82Type=CNAMEname=主機別名value=真實的規(guī)范主機名例:(,,CNAME,2)Type=MXname=郵件服務器的主機別名value=郵件服務器的真實規(guī)范主機名例:(,,MX,2)

83DNS協(xié)議,消息DNS協(xié)議:

查詢報文與應答報文

,但具有相同的報文格式報文頭部標識符:

標識查詢,16位,查詢和應答報文使用相同的標識符標志:有若干個標志構(gòu)成,分別標識不同的功能查詢/應答-0/1查詢希望是/非遞歸查詢-1/0應答可/否獲得(支持)遞歸查詢-1/0應答是/否來自權(quán)威名字服務器-1/0附加信息(資源記錄的變量數(shù))權(quán)威(資源記錄的變量數(shù))回答(資源記錄的變量數(shù))問題(問題的變量數(shù))附加RR數(shù)權(quán)威RR數(shù)回答RR數(shù)問題數(shù)標志標識符12字節(jié)84DNS協(xié)議,消息問題部分查詢的Name,type

回答部分對于查詢,應答的資源記錄可以多個資源記錄,由于可以有多個IP地址權(quán)威部分權(quán)威名字服務器的其他資源記錄附加信息部分其他有幫助的記錄.附加信息(資源記錄的變量數(shù))權(quán)威(資源記錄的變量數(shù))回答(資源記錄的變量數(shù))問題(問題的變量數(shù))附加RR數(shù)權(quán)威RR數(shù)回答RR數(shù)問題數(shù)標志標識符12字節(jié)85在DNS數(shù)據(jù)庫中插入記錄例:剛剛創(chuàng)建一個“網(wǎng)絡”公司如果你想在注冊登記機構(gòu)注冊你的域名,則需要提供你自己的權(quán)威DNS服務器名字和IP地址該注冊登記機構(gòu)將下列兩條資源記錄插入注冊機構(gòu)的DNS系統(tǒng)中:(,,NS)(,,A)如果你想建立一個網(wǎng)站,則可以將網(wǎng)址以類型A的方式記錄到你的權(quán)威DNS服務器中。如果你想建一個郵件服務器,則可以將以類型MX的方式記錄到你的權(quán)威DNS服務中。86第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個簡單的Web服務器87P2P文件共享舉例Alice在家用PC上運行一個P2P文件共享應用軟件每次重新連接因特網(wǎng)時,得到新的IP地址尋找“HeyJude”應用程序顯示有“HeyJude”拷貝的其他對等方Alice選擇一個對等方Bob.文件從Bob的PC上拷貝在Alice的PC上:HTTP當Alice在下載時,其他用戶也在從Alice的PC下載Alice的對等方既是一個Web服務器,又是一個瞬時Web服務器所有的對等方都是服務器=高擴展性88P2P:集中式目錄“Napster”公司的設計1)當對等方啟動時,它通知目錄服務器以下信息IP地址可供共享的對象名稱2)Alice查詢文件“HeyJude”3)Alice向Bob請求文件centralizeddirectoryserverpeersAliceBob11112389P2P:集中式目錄的問題單點故障性能瓶頸侵犯版權(quán)

文件傳輸是分散的,但是定位內(nèi)容的過程是高度集中的90查詢洪泛:Gnutella全分布沒有集中式服務器公共域協(xié)議許多Gnutella客戶機實現(xiàn)Gnutella協(xié)議覆蓋網(wǎng)絡:graph如果對等方X和Y維護了一條TCP連接,則說X和Y之間有一條邊所有活躍的對等方和邊組成覆蓋網(wǎng)絡邊不是物理通信鏈路給定對等方連接的覆蓋網(wǎng)絡路徑中的節(jié)點少于10個,即TTL小于1091Gnutella:協(xié)議QueryQueryHitQueryQueryQueryHitQueryQueryQueryHitFiletransfer:HTTP

查詢報文在已有的TCP連接上發(fā)送對等方轉(zhuǎn)發(fā)報文

QueryHit

報文按反向路徑傳送可擴展性:限范圍泛洪92Gnutella:加入對等方加入對等方X必須發(fā)現(xiàn)在Gnutella網(wǎng)絡中的其他對等方:使用對等方列表。X視圖與該列表上的對等方建立一條TCP連接,直到與Y創(chuàng)建一條連接。X向Y發(fā)送一個Ping報文;Y轉(zhuǎn)發(fā)該Ping報文。所有的對等方接收Ping報文并響應一個Pong報文。X接收到許多Pong報文。然后能同某些其他對等方建立TCP連接。93Gnutella:對等方離開主動離開:離開接點的所有對等方都會刷新自身的激活對等方列表,并開始與列表中的新的對等方建立連接斷網(wǎng):發(fā)送信息的時候?qū)Φ确經(jīng)]有響應,則表明對等方離開,節(jié)點刷新自身的激活對等方列表,并開始與列表中的新的對等方建立連接94KaZaA每個對等方要不被指派為組長,要不被指派給一個組長對等方和組長之間建立TCP連接組長之間建立TCP連接組長維護它的子對等方共享的內(nèi)容95KaZaA每個文件有文件的散列碼標識客戶機送向組長發(fā)送關(guān)鍵詞的查詢組長響應匹配逐項匹配:元數(shù)據(jù),散列值,IP地址如果組長轉(zhuǎn)發(fā)查詢給其他組長則其他組長響應匹配客戶端選擇要下載的文件96KaZaA請求排隊:限制對等方并行上載數(shù)量,新的請求進行排隊。激勵優(yōu)先權(quán):根據(jù)不同的上載下載比例優(yōu)先服務貢獻大者。并行下載:將一個文件分成若干段,從多個對等方并行下載。97第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個簡單的Web服務器98Socket套接字編程SocketAPI1981提出于BSD4.1UNIX,網(wǎng)絡應用程序明確的創(chuàng)建,使用及釋放套接字client/server模式通過SocketAPI,提供傳輸層的2類傳輸服務:不可靠的數(shù)據(jù)報傳輸可靠的字節(jié)流傳輸1.套接字是一個主機本地應用程序所創(chuàng)建的,為操作系統(tǒng)所控制的接口(“門”).2.應用進程通過這個接口,使用傳輸層提供的服務,跨網(wǎng)絡發(fā)送(/接收)消息到(/從)其他應用進程。socket目的:

學會如何開發(fā)采用套接字通信的C/S網(wǎng)絡應用程序。

99用TCP進行套接字編程Socket:

應用進程和傳輸層協(xié)議(UCPorTCP)之間的門。TCP服務:

從1個進程到另1個進程的字節(jié)流的可靠傳輸。processTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet100客戶必須初始聯(lián)系服務器服務器進程必須先運行服務器進程必須創(chuàng)建套接字(門)來迎候客戶的初始聯(lián)系客戶如何初始聯(lián)系服務器創(chuàng)建客戶本地TCPsocket指定服務器進程的IP地址,端口號一旦客戶創(chuàng)建套接字,客戶TCP就發(fā)起3次握手并建立與服務器TCP的連接一旦客戶初始聯(lián)系(敲門)服務器,服務器TCP為服務器進程創(chuàng)建1個新的socket與客戶進程通信允許服務器與多個客戶通信源端口號被用來區(qū)分客戶

(詳見第三章)TCP為客戶和服務器提供了可靠的,順序的,字節(jié)流的傳輸(“管道”)。從應用程序的角度來看用TCP進行套接字編程(續(xù))101流(Stream)的概念流是流入或流出一個進程的一串字符.輸入流被加在進程的某個輸入源上,eg,標準輸入(鍵盤)或套接字.輸出流被加在進程的某個輸出源上,eg,標準輸出(顯示器)或套接字.102客戶機/服務器應用程序示例:1)客戶從它的標準輸入讀入一行(inFromUserstream),將該行發(fā)送到通往服務器的套接字(outToServerstream)2)服務器從它的連接套接字讀入一行3)服務器將該行轉(zhuǎn)換成大寫,然后送回客戶機4)服務器將修改后的行通過其連接套接字再發(fā)回給客戶機5)客戶從它的套接字中讀取、輸出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字編程103TCP客戶/服務器套接字交互流程:等待入連接請求connectionSocket=welcomeSocket.accept()對入請求創(chuàng)建套接字,port=xwelcomeSocket=ServerSocket()創(chuàng)建與hostid,port=x連接的套接字clientSocket=Socket()關(guān)閉connectionSocket從clientSocket讀應答關(guān)閉clientSocket服務器(在hostid上運行)客戶機使用clientSocket發(fā)送請求讀請求connectionSocket寫應答connectionSocketTCP連接建立104Java編寫的TCP客戶程序示例importjava.io.*;import.*;classTCPClient{publicstaticvoidmain(Stringargv[])throwsException{Stringsentence;StringmodifiedSentence;BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));SocketclientSocket=newSocket("hostname",6789);DataOutputStreamoutToServer=newDataOutputStream(clientSocket.getOutputStream());

CreateinputstreamCreateclientsocket,connecttoserverCreateoutputstreamattachedtosocket包含輸入和輸出類程序用到BufferedReader和DataOutputStream類包含網(wǎng)絡支持類程序用到socket和serversocket類105

BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));sentence=inFromUser.readLine();outToServer.writeBytes(sentence+'\n');modifiedSentence=inFromServer.readLine();System.out.println("FROMSERVER:"+modifiedSentence);clientSocket.close();

}}

CreateinputstreamattachedtosocketSendlinetoserverReadlinefromserverJava編寫的TCP客戶程序示例(續(xù))106Java編寫的服務程序示例importjava.io.*;import.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringclientSentence;StringcapitalizedSentence;ServerSocketwelcomeSocket=newServerSocket(6789);

while(true){

SocketconnectionSocket=welcomeSocket.accept();BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));

Createwelcomingsocketatport6789Wait,onwelcomingsocketforcontactbyclientCreateinputstream,attachedtosocket107Java編寫的服務程序示例(續(xù))DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());

clientSentence=inFromClient.readLine();capitalizedSentence=clientSentence.toUpperCase()+'\n';outToClient.writeBytes(capitalizedSentence);connectionSocket.close();}}}

ReadinlinefromsocketCreateoutputstream,attachedtosocketWriteoutlinetosocketEndofwhileloop,loopbackandwaitforanotherclientconnection108第二章:應用層2.1應用層協(xié)議原理2.2Web應用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個簡單的Web服務器109用UDP進行套接字編程UDP:客戶和服務器之間沒有連接沒有初始握手階段發(fā)送方明確將接收方的IP地址和端口號加入每個分組(1批字節(jié)+頭部)服務器必須從接收到的分組中析取發(fā)送方進程的IP地址,端口號UDP:發(fā)送數(shù)據(jù)可能被亂序收到或丟失UDP在客戶和服務器之間提供一組字節(jié)(“datagrams”)的不可靠傳輸

從應用程序的角度來看110UDP客戶/服務器套接字交互流程:關(guān)閉clientSocketServer(在hostid上運行)從clientSocket讀應答創(chuàng)建套接字clientSocket=DatagramSocket()客戶機創(chuàng)建地址(hostid,port=x)使用clientSocket發(fā)送數(shù)據(jù)報請求對入請求創(chuàng)建套接字port=xserverSocket=DatagramSocket()從serverSocket讀請求向serverSocket寫應答指定客戶機主機地址、端口號111舉例:Java編寫的UDP客戶程序Output:sendspacket(TCPsent“bytestream”)Input:receivespacket(TCPreceived“bytestream”)ClientprocessclientUDPsocket112舉例:Java編寫的UDP客戶程序importjava.io.*;import.*;

classUDPClient{publicstaticvoidmain(Stringargs[])throwsException{

BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));

DatagramSocketclientSocket=newDatagramSocket();

InetAddressIPAddress=InetAddress.getByName("hostname");

byte[]sendData=newbyte[1024];byte[]receiveData=newbyte[1024];

Stringsentence=inFromUser.readLine();sendData=sentence.getBytes();

Createinputstre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論