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

下載本文檔

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

文檔簡介

2:應用層1第二章應用層2:應用層2第二章應用層目的:

網(wǎng)絡應用及應用層協(xié)議的概念、實現(xiàn)傳輸層服務模型客戶服務器模式對等模式peer-to-peer通過對主流應用層協(xié)議分析來掌握應用層協(xié)議HTTPFTPSMTP/POP3/IMAPDNS網(wǎng)絡應用編程socketAPI2:應用層3第二章:應用層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服務器2:應用層4一些網(wǎng)絡應用電子郵件Web即時訊息遠程登陸P2P文件共享在兩臺計算機之間的兩個帳戶之間的文件傳輸多用戶網(wǎng)絡游戲流式存儲視頻片段因特網(wǎng)電話實時視頻會議2:應用層5研發(fā)網(wǎng)絡應用程序研發(fā)網(wǎng)絡應用程序的核心:寫出能夠運行在不同的端系統(tǒng)并通過網(wǎng)絡彼此通信的程序例如,Web:Web服務器軟件和瀏覽器軟件通信應用層傳輸層網(wǎng)絡層數(shù)據(jù)鏈路層物理層應用層傳輸層網(wǎng)絡層數(shù)據(jù)鏈路層物理層應用層傳輸層網(wǎng)絡層數(shù)據(jù)鏈路層物理層沒有應用程序軟件運行在網(wǎng)絡核心設備上網(wǎng)絡核心設備不在應用層起作用這種設計方法促進了應用程序的研發(fā)2:應用層6網(wǎng)絡應用程序體系結(jié)構(gòu)客戶機/服務器體系結(jié)構(gòu)P2P體系結(jié)構(gòu)客戶機/服務器和P2P混合的體系結(jié)構(gòu)2:應用層7客戶機/服務器體系結(jié)構(gòu)服務器:

總是打開的主機具有固定的、眾所周知的IP地址主機群集常被用于創(chuàng)建強大的虛擬服務器客戶機:同服務器端通信可以間斷的同服務器連接可以擁有動態(tài)IP地址客戶機相互之間不直接通信2:應用層8純P2P體系結(jié)構(gòu)沒有總是打開的服務器任意一對主機直接相互通信對等方間歇連接并且可以改變IP地址例如:Gnutella優(yōu)點:自擴展性缺點:難以管理2:應用層9客戶機/服務器和P2P混合的體系結(jié)構(gòu)Napster文件直接在對等方之間交換文件搜索通過服務器中心服務器記錄對等方內(nèi)容對等方查詢中心服務器來決定要求的文件位置即時訊息兩個聊天用戶之間是P2P注冊、查詢通過服務器用戶上線時要在中心服務器上進行注冊用戶與中心服務器聯(lián)系以找出在線伙伴2:應用層10進程通信進程:運行在端系統(tǒng)中的程序同一主機上的兩個進程通過內(nèi)部進程通信機制進行通信不同主機上的進程通過交換報文相互通信客戶進程:發(fā)起通信的進程服務器進程:

等待聯(lián)系的進程注意:具有P2P體系結(jié)構(gòu)的應用程序既有客戶進程和服務器進程。2:應用層11進程與計算機網(wǎng)絡的接口-套接字進程通過它的套接字在網(wǎng)絡上發(fā)送和接收報文套接字類比于門戶發(fā)送進程把報文推出門戶發(fā)送進程假定門戶到另外一側(cè)之間有運輸設施,該設施可以傳送報文到接收進程由操作系統(tǒng)控制進程具有緩存、變量的TCP套接字主機或服務器進程具有緩存、變量的TCP套接字主機或服務器Internet由應用開發(fā)者控制套接字又叫做應用程序編程接口API用戶通過API對傳輸層的控制僅限于: (1)選擇傳輸協(xié)議;(2)能設定幾個參數(shù)2:應用層12進程尋址為了一個進程能接收報文,它需要一個標識主機有唯一的32位IP地址問:主機的IP地址足夠標識進程嗎?答:不能。因為一臺主機上能夠運行許多進程。主機上的進程標識包括IP地址和端口號常用應用程序的端口號:Web服務:80郵件服務:25 將在第三章詳細分析端口號2:應用層13應用層協(xié)議交換的報文類型,如請求報文和應答報文報文類型的語法:報文中的各個字段及其詳細描述字段的語義,即包含在字段中的信息的含義進程何時、如何發(fā)送報文及對報文進行響應公共領域協(xié)議:由RFC文檔定義可供大家使用例如:HTTP,SMTP專用協(xié)議:例如:KaZaA,Skype等2:應用層14應用需要什么樣的服務?數(shù)據(jù)丟失率一些應用(如:實時音頻)能容忍一定程度的數(shù)據(jù)丟失另一些應用(如:文件傳輸,telnet)需要100%可靠的數(shù)據(jù)傳輸定時一些應用(如:因特網(wǎng)電話、多方游戲)要求低時延帶寬和吞吐量一些應用(如:多媒體)必須要達到所需帶寬另一些應用(彈性應用)根據(jù)需要充分利用可供使用的帶寬安全加密,數(shù)據(jù)完整性等2:應用層15常見應用的傳輸服務需求時間敏感不不不是,100msec是,幾秒是,100msec是和不是應用文件傳輸電子郵件Web實時音頻/視頻存儲音頻/視頻交互式游戲即時訊息數(shù)據(jù)丟失不能丟失不能丟失不能丟失容忍丟失容忍丟失容忍丟失不能丟失帶寬彈性彈性彈性音頻:幾kbps-1Mbps視頻:10kbps-5Mbps同上幾kbps以上彈性2:應用層16因特網(wǎng)運輸協(xié)議提供的服務TCP服務:面向連接的服務:在客戶機程序和服務器程序之間必須建立連接可靠的傳輸服務:

接收和發(fā)送進程間流量控制:發(fā)送方不會淹沒接收方

擁塞控制:網(wǎng)絡出現(xiàn)擁塞時抑制發(fā)送進程沒有提供:時延保證,最小帶寬保證UDP服務:不可靠數(shù)據(jù)傳輸沒有提供:建立連接,可靠性,流量控制,擁塞控制,時延和帶寬保證2:應用層17因特網(wǎng)應用:應用層協(xié)議,傳輸協(xié)議應用電子郵件遠程終端訪問Web文件傳輸流媒體因特網(wǎng)電話應用層協(xié)議SMTP[RFC2821]Telnet[RFC854]HTTP[RFC2616]FTP[RFC959]通常專用(e.g.RealNetworks)通常專用(e.g.,Skype)下面的傳輸協(xié)議TCPTCPTCPTCPTCPorUDP典型用UDP2:應用層18安全TCPTCP和UDP沒有加密網(wǎng)絡明文傳輸,如用戶名和口令信息等SSL(SecuritySocketLayer)提供加密的TCP連接保證數(shù)據(jù)完整性端點認證SSL在應用層應用使用SSL庫調(diào)用TCP服務接口SSL提供套接字API2:應用層19第二章:應用層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服務器2:應用層20Web和HTTP常用術(shù)語網(wǎng)頁(Web頁,或稱文檔)由許多對象組成。對象就是文件,可以是HTML文件,JPEG圖像,Javaapplet,音頻文件…多數(shù)網(wǎng)頁由單個基本HTML文件和若干個所引用的對象構(gòu)成每個對象被一個URL(UniformResourceLocator統(tǒng)一資源定位符)尋址舉例URL:/someDept/pic.gif主機名路徑名協(xié)議2:應用層21HTTP概述HTTP:超文本傳輸協(xié)議hypertexttransferprotocolWeb的應用層協(xié)議client/server模式client:瀏覽器browser請求,接收,“解釋顯示”Web對象server:Web服務器響應請求,發(fā)送Web對象HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse2:應用層222.HTTP概述(續(xù))使用TCP:客戶初始化一個與HTTP服務器80端口的TCP連接(創(chuàng)建套接字)HTTP服務器接受來自客戶的TCP連接請求,建立連接Browser(HTTPclient)和Web服務器(HTTPserver)交換HTTP消息(應用層協(xié)議消息)包括HTTP請求和響應消息最后結(jié)束(或叫關(guān)閉)TCP連接HTTP是無狀態(tài)協(xié)議HTTP服務器不維護客戶先前的狀態(tài)信息維護狀態(tài)的協(xié)議非常復雜!必須維護過去歷史(狀態(tài)信息)如果server/client崩潰,它們各自的狀態(tài)視圖可能不一致,因此必須保持協(xié)調(diào)一致。補充2:應用層233.HTTP連接持久HTTP連接一個TCP連接上可以傳送多個對象HTTP/1.1默認使用持久HTTP連接非持久HTTP連接每個TCP連接上只傳送一個對象,下載多個對象需要建立多個TCP連接HTTP/1.0使用非持久HTTP連接2:應用層24(1).非持久HTTP連接假設用戶輸入URL

http://www.someS/someDepartment/home.index1a.HTTP客戶初始化1個與服務器主機www.someS中HTTP服務器的TCP連接

2.HTTP客戶發(fā)送1個HTTP請求消息(requestmessage

)包含URL到TCP連接套接字.消息指出客戶要Web對象-someDepartment/home.index1b.www.someS服務器主機中的HTTP服務器在80端口監(jiān)聽來自HTTP客戶的TCP連接請求.收到連接請求,接受,建立連接,通知客戶.3.HTTP服務器接收請求消息,產(chǎn)生1個響應消息responsemessage包含被請求對象,并發(fā)送這個消息到自身TCP連接套接字time網(wǎng)頁由1個HTML文件,和10個jpeg圖像構(gòu)成2:應用層25(1).非持久HTTP連接(續(xù).)5.HTTP客戶接收包含html文件的響應消息,顯示html.解析html文件,找出10個引用jpeg對象6.對10個引用jpeg對象的每1個重復步驟1-54.HTTP服務器結(jié)束TCP連接.time2:應用層26響應時間模型定義往返時間RTT(Round-TripTime):1個小分組從客戶主機到服務器再到客戶主機所花費的時間.響應時間:1個RTT用于建立TCP連接1個RTT用于HTTP請求/響應消息的交互Html文件傳輸時間total=2RTT+transmittime傳輸文件的時間發(fā)起TCP連接RTT請求文件RTT接收整個文件客戶機的時間服務器的時間2:應用層27持久HTTP連接非持久HTTP連接的問題:每個對象需要2個RTTOS必須為每個TCP連接分配主機資源大量客戶的并發(fā)TCP連接形成服務器的嚴重負擔持久HTTP連接服務器發(fā)送響應消息后保持連接同1客戶/服務器的后續(xù)HTTP消息繼續(xù)在該連接上傳送不帶流水線的持久HTTP連接:客戶先前響應消息收到,才發(fā)出新的請求消息每個引用對象經(jīng)歷1個RTT帶流水線的持久HTTP連接:HTTP/1.1默認使用客戶遇到1個引用對象就發(fā)送請求消息所有引用對象只經(jīng)歷1個RTT2:應用層28HTTP報文格式2類HTTP報文:請求報文request,響應報文responseHTTP請求報文:ASCII文本(易于人讀格式)GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0//該代理類型的對象版本Connection:Close//不使用持久連接Accept-language:zh-cn//中文版本(額外的回車換行)

請求行(GET,POST,HEAD)頭部行回車換行指示結(jié)束2:應用層29HTTP請求報文:通用格式URI版本spcrlfsp方法值spcrlf首部字段名:值spcrlf首部字段名:crlf請求行首部行空行實體主體注:URI=UniformResourceIdentifiers2:應用層30方法類型HTTP/1.0GETPOSTHEAD服務器收到請求時,用HTTP報文進行響應,但不返回請求對象HTTP/1.1GET,POST,HEADPUT文件在實體主體中被上載到URL字段指定的路徑DELETE刪除URL字段指定的文件2:應用層31上載表單(各字段)輸入值Post方法:網(wǎng)頁時常包含表單輸入輸入值在請求報文的實體主體中被上載到服務器URL方法:使用GET方法表單(各字段)輸入值被上載,以URL請求行的字段:/animalsearch?monkeys&banana2:應用層32HTTP響應消息HTTP/1.1200OKConnection:closeDate:Sat,06Aug201112:00:15GMTServer:Apache/1.3.0(Unix)Last-Modified:Thu,22Jun2011…...Content-Length:6821Content-Type:text/html

datadatadatadatadata...狀態(tài)行(版本、狀態(tài)編碼、短語)首部行數(shù)據(jù),e.g.,被請求的HTML文件2:應用層33HTTP響應的狀態(tài)碼200OK請求成功,所請求信息在響應消息中返回301MovedPermanently所請求的對象已永久遷移,新的URL在本響應消息的(location:)頭部指出400BadRequest該請求不能被服務器解讀404NotFound服務器上不存在所請求文檔505HTTPVersionNotSupported位于服務器響應客戶的響應消息的第一行.幾個常見的樣本狀態(tài)碼:2:應用層34用戶與服務器交互:Cookies舉例:李四總是使用同臺PC訪問Internet他首次訪問1個電子商務網(wǎng)站當他最初發(fā)出HTTP請求訪問該站點時,該站點創(chuàng)建一個唯一的ID,并在后端數(shù)據(jù)庫創(chuàng)建一個響應于該ID表項2:應用層35Cookies:跟蹤用戶(續(xù).)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:2:應用層36用戶與服務器交互:CookiesCookies的4個重要方面:1)cookie頭部行在HTTP響應消息中2)cookie頭部行在HTTP請求消息中3)cookie文件保存在用戶主機中并被用戶瀏覽器管理4)cookie也保存在Web站點的后端數(shù)據(jù)庫2:應用層37Cookies:跟蹤用戶(續(xù).)Cookies可以帶來什么?身份認證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會話狀態(tài)(Webe-mail)Cookies和隱私:cookies允許網(wǎng)站更加了解你你可以提供名字和e-mail給網(wǎng)站廣告公司通過網(wǎng)站獲得信息Cookies不適合游動用戶補充2:應用層38Web緩存(代理服務器)目標:代表起始服務器滿足HTTP請求。用戶配置瀏覽器:Web訪問經(jīng)由緩存所有HTTP請求指向緩存對象在緩存中:緩存器返回對象否則緩存器向起始服務器發(fā)出請求,接收對象后轉(zhuǎn)發(fā)給客戶機客戶機代理服務器客戶機HTTP請求HTTP請求HTTP響應HTTP響應HTTP請求HTTP響應起始服務器起始服務器HTTP請求HTTP響應2:應用層39Web緩存(續(xù))緩存器既是服務器又是客戶機一般的,Web緩存器既是服務器又是客戶機典型的緩存器被ISP提供(大學、公司或居民ISP)為什么需要Web緩存器?減少對客戶機請求的響應時間減少內(nèi)部網(wǎng)絡與接入鏈路上的通信量能從整體上大大降低因特網(wǎng)上的Web流量2:應用層40緩存器舉例假設對象平均長度=100,000bits瀏覽器對對象的平均訪問速率=15/sec因特網(wǎng)時延=2sec結(jié)論局域網(wǎng)上的流量強度=0.15鏈路上的流量強度=1總延時=因特網(wǎng)時延+接入時延+局域網(wǎng)時延=2秒+數(shù)分鐘+數(shù)毫秒起始服務器公共Internet機構(gòu)網(wǎng)絡10MbpsLAN1.5Mbps接入鏈路2:應用層41緩存器舉例(續(xù))可能的解決辦法增加接入鏈路的速率結(jié)論局域網(wǎng)上的流量強度=15%鏈路上的流量強度=15%總時延=因特網(wǎng)時延+接入時延+局域網(wǎng)時延=2秒+數(shù)毫秒+數(shù)毫秒這種方案需要較大的投資起始服務器公共Internet機構(gòu)網(wǎng)絡10MbpsLAN1.5Mbps接入鏈路2:應用層42緩存器舉例(續(xù))安裝緩存器假設緩存器命中率為0.4結(jié)論40%的請求立即會得到響應60%的請求通過訪問起始服務器滿足鏈路上的流量強度減為0.6,可以忽略不計總的平均延時=因特網(wǎng)時延+接入時延+局域網(wǎng)時延=0.6*2秒+數(shù)毫秒<1.4秒起始服務器公共Internet機構(gòu)網(wǎng)絡10MbpsLAN1.5Mbps接入鏈路機構(gòu)緩存器2:應用層43條件GET方法目的:證實緩存器中的對象是否為最新緩存器:在請求報文中包含對象最后修改時間If-modified-since:<date>服務器:如果對象是最新的則響應報文中不包含對象:HTTP/1.0304NotModifiedcacheserverHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0304NotModifiedobjectnotmodifiedHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0200OK<data>objectmodified2:應用層44第二章:應用層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服務器2:應用層45FTP:文件傳輸協(xié)議

FileTransferProtocol傳輸文件到遠程主機/從遠程主機下載文件client/server模式client:發(fā)起傳輸?shù)囊环絪erver:遠程主機ftp:RFC959ftp服務器:端口號21文件傳輸FTP服務器FTP用戶接口FTP客戶機本地文件系統(tǒng)遠程文件系統(tǒng)用戶2:應用層46FTP:獨立的控制連接,數(shù)據(jù)連接FTP客戶首先發(fā)起建立1個與FTP服務器端口號21之間的TCP控制連接,指定TCP作為傳輸層協(xié)議客戶在建立的控制連接上獲得身份認證客戶在建立的控制連接上發(fā)送命令來瀏覽遠程主機的目錄.當服務器接收到1個文件傳輸命令時,在服務器端口號20創(chuàng)建1個與客戶的TCP數(shù)據(jù)連接1個文件傳輸后,服務器結(jié)束這個TCP數(shù)據(jù)連接.FTP客戶機FTP服務器TCP控制連接端口21TCP數(shù)據(jù)連接端口20服務器創(chuàng)建第2個TCP與客戶的數(shù)據(jù)連接來傳輸下一個文件.控制連接:帶外發(fā)送控制信息FTP服務器要維護用戶狀態(tài)信息:當前目錄,先前的身份認證2:應用層47FTP:文件傳輸協(xié)議控制連接:USER-PI(protocolinterpreter):用戶協(xié)議解釋器SERVER-PI:服務器協(xié)議解釋器數(shù)據(jù)連接:user-DTP(DataTransferProcess):用戶數(shù)據(jù)傳輸進程server-DTP:服務器數(shù)據(jù)傳輸進程2:應用層48FTP:文件傳輸系統(tǒng)模型一文件系統(tǒng)ServerFTPServerPIServerDTP用戶接口UserPIUserDTP用戶文件系統(tǒng)UserFTP控制連接數(shù)據(jù)連接2:應用層49FTP:文件傳輸系統(tǒng)模型二文件系統(tǒng)ServerFTPServerPIServerDTP用戶接口ServerPIServerDTP用戶文件系統(tǒng)ServerFTP控制連接數(shù)據(jù)連接UserPI控制連接2:應用層50FTP數(shù)據(jù)連接建立方式主動模式:客戶端發(fā)送PORT命令PORTh1,h2,h3,h4,p1,p2(h1-h4是IP地址,p1-p2是端口號)服務器根據(jù)PORT命令指定的客戶端地址和端口號發(fā)起數(shù)據(jù)連接被動模式:客戶端發(fā)送PASV命令服務器返回監(jiān)聽的地址和端口號客戶端發(fā)起數(shù)據(jù)連接2:應用層51FTP命令和應答常見命令:在控制連接上發(fā)送ASCII文本USERusernamePASSpasswordLIST:返回當前遠程目錄的文件列表RETRfilename:獲取遠程主機當前目錄下的1個文件(get)

STORfilename:存放1個文件到遠程主機當前目錄下(put)常見應答:狀態(tài)碼及其相應短語(同HTTP)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile2:應用層52第二章:應用層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服務器2:應用層53電子郵件3個主要組成部分:

用戶代理useragents郵件服務器mailservers簡單郵件傳送協(xié)議和郵件接收協(xié)議用戶代理:允許用戶閱讀,回復,轉(zhuǎn)發(fā),保存,編輯郵件消息例如:Outlook,foxmail等發(fā)送,接收郵件消息到/從服務器運行郵件協(xié)議用戶郵箱外出報文隊列mailserveruseragentuseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP2:應用層54電子郵件:郵件服務器郵件服務器

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

message

queue運行郵件協(xié)議useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP2:應用層55電子郵件:SMTP[RFC5321]

SimpleMailTransferProtocol客戶使用TCP來可靠傳輸郵件消息到服務器端口號25直接傳送:發(fā)送服務器到接收服務器傳輸?shù)?個階段握手(問候)郵件消息的傳輸結(jié)束命令/應答的交互命令:ASCII文本格式應答:狀態(tài)碼及其短語郵件消息必須是7-bitASCII2:應用層56例子:Alice發(fā)送郵件消息到Bob1)Alice使用用戶代理編寫郵件消息(給bob@的)2)Alice的用戶代理發(fā)送郵件消息到她的郵件服務器;郵件消息存放在郵件消息隊列3)Alice郵件服務器的SMTP客戶端發(fā)起建立一個到Bob的郵件服務器的SMTP服務器端的TCP連接,經(jīng)過應用層握手.4)SMTP客戶在這個TCP連接上發(fā)送Alice的郵件消息5)Bob服務器存放郵件消息存到Bob的郵箱6)Bob調(diào)用他的用戶代理讀郵件消息useragentmailservermailserveruseragent1234562:應用層57SMTP客戶和服務器的命令交互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:221closingconnection2:應用層58SMTP:總結(jié)SMTP使用持久連接SMTP要求郵件消息(header&body)必須是7-bitASCIISMTP服務器使用CRLF.CRLF

來判斷郵件消息的結(jié)束與HTTP的比較:HTTP:拉協(xié)議SMTP:推協(xié)議都有ASCII命令/應答交互,狀態(tài)碼HTTP:每個對象封裝在它各自的HTTP響應消息中發(fā)送SMTP:一個郵件內(nèi)各個對象置于同一個郵件消息的多目部分發(fā)送2:應用層59郵件消息的格式SMTP:用來交換郵件消息的協(xié)議RFC822:文本郵件消息格式標準:信頭-頭部行。如:To:From:Subject:這些頭部不同于SMTP命令!信體郵件消息也必須是ASCII字符headerbodyblankline2:應用層60郵件消息的格式:多媒體擴展MIME:MultipurposeInternetmailExtensions多用途因特網(wǎng)郵件擴展,RFC2045,2046增添額外的信頭頭部聲明MIMEcontent-typeFrom: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ù)2:應用層61郵件訪問協(xié)議SMTP:遞送/存儲郵件消息到接收者郵件服務器郵件訪問協(xié)議:從服務器獲取郵件消息POP:PostOfficeProtocol郵局協(xié)議[RFC1939]110端口號身份認證(代理<-->服務器)并下載郵件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更復雜!)允許用戶像對待本地郵箱那樣操縱遠程郵箱的郵件HTTP:Hotmail,Yahoo!Mail,etc.useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver2:應用層62POP3協(xié)議身份認證階段authorizationphase客戶命令:userusernamepasspassword服務器響應+OK-ERR傳輸階段transactionphase,client:list:列出郵件編號retr:按編號取郵件dele:刪除quit

C:listS:1498S:2912S:.C:retr1S:<message1contents>S:.C:dele1C:retr2S:<message1contents>S:.C:dele2C:quitS:+OKPOP3serversigningoffS:+OKPOP3serverreadyC:userbobS:+OKC:passhungryS:+OKusersuccessfullyloggedon2:應用層63POP3和IMAPPOP3的更多細節(jié)先前例子使用“Download-and-delete”.Bob換客戶端后不能再讀郵件“Download-and-keep”模式:在不同客戶機上的郵件拷貝POP3的會話是無狀態(tài)的IMAP保存所有郵件消息在一個位置:服務器允許用戶在服務器的各文件夾中管理郵件消息IMAP跟蹤用戶會話的狀態(tài)信息:文件夾和郵件消息IDs與文件夾名字的映射2:應用層64第二章:應用層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服務器2:應用層65DNS:域名系統(tǒng)DomainNameSystem人:很多標識符:ID,name,passport#Internet主機,路由器:IPaddress(32bit)–用于分組尋址“主機名”,e.g.,–用于人記憶識別Q:可以在IP地址和主機名之間建立映射嗎?DNS服務器提供的功能:主機名到IP地址的轉(zhuǎn)換主機別名一個主機可以有一個規(guī)范主機名和多個主機別名郵件服務器別名負載分配DNS實現(xiàn)冗余服務器:一個IP地址集合可以對應于同一個規(guī)范主機名。2:應用層66DNS

為什么不集中式DNS?單點故障巨大訪問量遠距離集中式數(shù)據(jù)庫維護不可擴展!DomainNameSystem:域名系統(tǒng)分布式數(shù)據(jù)庫:一個由分層DNS服務器實現(xiàn)的分布式數(shù)據(jù)庫應用層協(xié)議:DNS服務器實現(xiàn)域名轉(zhuǎn)換(域名/地址轉(zhuǎn)換)2:應用層67分布式、層次數(shù)據(jù)庫根DNS服務器comDNS服務器orgDNS服務器eduDNS服務器DNS服務器DNS服務器DNS服務器DNS服務器DNS服務器客戶機怎樣決定主機名的IP地址?客戶機查詢根服務器得到comDNS服務器客戶機查詢comDNS服務器得到DNS服務器客戶機查詢DNS服務器得到的IP地址2:應用層68DNS:根名字服務器Rootnameservers

/根名字服務器負責記錄頂級域名服務器的信息bUSC-ISIMarinadelRey,CAlICANNMarinadelRey,CAeNASAMtView,CAfInternetSoftwareC.PaloAlto,CAiNORDUnetStockholmkRIPELondonmWIDETokyoaNSIHerndon,VAcPSInetHerndon,VAdUMarylandCollegePark,MDgDISAVienna,VAhARLAberdeen,MDjNSI(TBD)Herndon,VA13rootnameservers…10個美國,1個英國,1個瑞典,1個日本共254臺服務器2:應用層69頂級域服務器和權(quán)威DNS服務器頂級域服務器:負責頂級域名com,org,net,edu,etc,和所有國家的頂級域名uk,fr,ca,jp.Networksolutions公司維護com頂級域的TLD服務器Educause公司維護edu頂級域的TLD服務器權(quán)威DNS服務器:在因特網(wǎng)上具有公共可訪問主機(如Web服務器和郵件服務器)的每個組織機構(gòu)必須提供公共可訪問的DNS記錄,這些記錄將這些主機的名字映射為IP地址。組織機構(gòu)的權(quán)威DNS服務器負責保存這些DNS記錄。多數(shù)大學和公司維護它們的基本權(quán)威DNS服務器2:應用層70本地DNS服務器嚴格來說不屬于該服務器的層次結(jié)構(gòu)每個ISP(如居民區(qū)ISP、公司、大學)都有一個本地DNS也叫默認服務器當主機發(fā)出DNS請求時,該請求被發(fā)往本地DNS服務器。起著代理的作用,轉(zhuǎn)發(fā)請求到層次結(jié)構(gòu)中。2:應用層71DNS查詢方法一遞歸查詢:名字解析的負擔交給被查詢的名字服務器被查詢的名字服務器負載重?requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver32:應用層72requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查詢方法二迭代查詢:被查詢的名字服務器回復可以被查詢的名字服務器的IP地址“我不知道它的名字,但是可以問服務器”2:應用層73DNS緩存和權(quán)威DNS記錄更新一旦名字服務器獲得DNS映射,它將緩存該映射到局部內(nèi)存服務器在一定時間后將丟棄緩存的信息本地DNS服務器可以緩存TLD服務器的IP地址因此根DNS服務器不會被經(jīng)常訪問權(quán)威DNS服務器記錄更新:IETF動態(tài)更新/通報機制RFC21362:應用層74DNS記錄DNS:存儲資源記錄(RR,ResourceRecords)的分布式數(shù)據(jù)庫Type=NS(nameserver)name=域名(如 )value=該域權(quán)威名字服務器的主機名RR格式:(name,value,type,ttl)Type=A(Adress)name=主機名value=IP地址Type=CNAME(canonical)name=主機別名

的真名為

value=真實的規(guī)范主機名Type=MX(mailexchange)name=郵件服務器的主機別名value=郵件服務器的真實規(guī)范主機名

2:應用層75DNS協(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é)2:應用層76DNS協(xié)議,消息問題部分查詢的Name,type

回答部分對于查詢,應答的資源記錄可以多個資源記錄,由于可以有多個IP地址權(quán)威部分域?qū)臋?quán)威名字服務器的信息附加信息部分權(quán)威名字服務器的IP地址等其他有幫助的記錄.附加信息(資源記錄的變量數(shù))權(quán)威(資源記錄的變量數(shù))回答(資源記錄的變量數(shù))問題(問題的變量數(shù))附加RR數(shù)權(quán)威RR數(shù)回答RR數(shù)問題數(shù)標志標識符12字節(jié)2:應用層77在DNS數(shù)據(jù)庫中插入記錄例子:剛剛創(chuàng)建一個“網(wǎng)絡烏托邦”公司如果你想在注冊登記機構(gòu)注冊你的域名,則需要提供你自己的基本權(quán)威DNS服務器和輔助權(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服務器中。人們怎樣得到你的Web站點的IP地址呢?2:應用層78第二章:應用層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服務器2:應用層79P2P文件共享舉例Alice在家用PC上運行一個P2P文件共享應用軟件每次重新連接因特網(wǎng)時,得到新的IP地址尋找“HeyJude”應用程序顯示有“HeyJude”拷貝的其他對等方Alice選擇一個對等方Bob.文件從Bob的PC上拷貝在Alice的PC上:HTTP當Alice在下載時,其他用戶也在從Alice的PC下載Alice的對等方既是一個Web服務器,又是一個瞬時Web服務器所有的對等方都是服務器=高擴展性2:應用層80P2P:集中式目錄“Napster”公司的設計1)當對等方啟動時,它通知目錄服務器以下信息IP地址可供共享的對象名稱2)Alice查詢文件“HeyJude”3)Alice向Bob請求文件centralizeddirectoryserverpeersAliceBob1111232:應用層81P2P:集中式目錄的問題單點故障性能瓶頸侵犯版權(quán)文件傳輸是分散的,但是定位內(nèi)容的過程是高度集中的2:應用層82查詢洪泛:Gnutella全分布沒有集中式服務器公共域協(xié)議許多Gnutella客戶機實現(xiàn)Gnutella協(xié)議覆蓋網(wǎng)絡:graph如果對等方X和Y維護了一條TCP連接,則說X和Y之間有一條邊所有活躍的對等方和邊組成覆蓋網(wǎng)絡邊不是物理通信鏈路給定對等方連接的覆蓋網(wǎng)絡路徑中的節(jié)點少于10個,即TTL小于102:應用層83Gnutella:協(xié)議QueryQueryHitQueryQueryQueryHitQueryQueryQueryHitFiletransfer:HTTP

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

報文按反向路徑傳送可擴展性:限范圍泛洪2:應用層84Gnutella:加入對等方加入對等方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連接。2:應用層85Gnutella:對等方離開主動離開:離開接點的所有對等方都會刷新自身的激活對等方列表,并開始與列表中的新的對等方建立連接斷網(wǎng):發(fā)送信息的時候?qū)Φ确經(jīng)]有響應,則表明對等方離開,節(jié)點刷新自身的激活對等方列表,并開始與列表中的新的對等方建立連接2:應用層86KaZaA每個對等方要不被指派為組長,要不被指派給一個組長對等方和組長之間建立TCP連接組長之間建立TCP連接組長維護它的子對等方共享的內(nèi)容2:應用層87KaZaA每個文件有文件的散列碼標識客戶機送向組長發(fā)送關(guān)鍵詞的查詢組長響應匹配逐項匹配:元數(shù)據(jù),散列值,IP地址如果組長轉(zhuǎn)發(fā)查詢給其他組長則其他組長響應匹配客戶端選擇要下載的文件2:應用層88KaZaA請求排隊:限制對等方并行上載數(shù)量,新的請求進行排隊。激勵優(yōu)先權(quán):根據(jù)不同的上載下載比例優(yōu)先服務貢獻大者。并行下載:將一個文件分成若干段,從多個對等方并行下載。2:應用層89第二章:應用層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服務器2:應用層90Socket套接字編程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)絡應用程序。

2:應用層91用TCP進行套接字編程Socket:應用進程和傳輸層協(xié)議(UCPorTCP)之間的門。TCP服務:從1個進程到另1個進程的字節(jié)流的可靠傳輸。processTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet2:應用層92客戶必須初始聯(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ù))2:應用層93流(Stream)的概念流是流入或流出一個進程的一串字符.輸入流被加在進程的某個輸入源上,eg,標準輸入(鍵盤)或套接字.輸出流被加在進程的某個輸出源上,eg,標準輸出(顯示器)或套接字.2:應用層94客戶機/服務器應用程序示例:1)客戶從它的標準輸入讀入一行(inFromUserstream),將該行發(fā)送到通往服務器的套接字(outToServerstream)2)服務器從它的連接套接字讀入一行3)服務器將該行轉(zhuǎn)換成大寫,然后送回客戶機4)服務器將修改后的行通過其連接套接字再發(fā)回給客戶機5)客戶從它的套接字中讀取、輸出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字編程2:應用層95TCP客戶/服務器套接字交互流程:等待入連接請求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連接建立2:應用層96Java編寫的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類2:應用層97

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ù))2:應用層98Java編寫的服務程序示例importjava.io.*;import.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringclientSentence;StringcapitalizedSentence;ServerSocketwelcomeSocket=newServerSocket(6789);

while(true){

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

Createwelcomingsocketatport6789Wait,onwelcomingsocketforcontactbyclientCreateinputstream,attachedtosocket2:應用層99Java編寫的服務程序示例(續(xù))DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());

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

ReadinlinefromsocketCreateoutputstream,attachedtosocketWriteoutlinetosocketEndofwhileloop,loopbackandwaitforanotherclientconnection2:應用層100第二章:應用層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服務器2:應用層101用UDP進行套接字編程UDP:客戶和服務器之間沒有連接沒有初始握手階段發(fā)送方明確將接收方的IP地址和端口號加入每個分組(1批字節(jié)+頭部)服務器必須從接收到的分組中析取發(fā)送方進程的IP地址,端口號UDP:發(fā)送數(shù)據(jù)可能被亂序收到或丟失UDP在客戶和服務器之間提供一組字節(jié)(“datagrams”)的不可靠傳輸

從應用程序的角度來看2:應用層102UDP客戶/服務器套接字交互流程:關(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寫應答指定客戶機主機地址、端口號2:應用層103舉例:Java編寫的UDP客戶程序Output:sendspacket(TCPsent“bytestream”)Input:receivespacket(TCPreceived“bytestream”)ClientprocessclientUDPsocket2:應用層104舉例: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();

CreateinputstreamCreateclientsocketTranslatehostnametoIPaddressusingDNS2:應用層105舉例:Java編寫的UDP客戶程序(續(xù))DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,9876);

clientSocket.send(sendPacket);

DatagramPacketrece

溫馨提示

  • 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

提交評論