




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第二章應(yīng)用層Chapter2ApplicationLayerComputerNetworking
ATop-DownApproach2第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程32.1應(yīng)用層協(xié)議原理網(wǎng)絡(luò)應(yīng)用程序位于應(yīng)用層網(wǎng)絡(luò)游戲網(wǎng)絡(luò)視頻網(wǎng)絡(luò)電話視頻會(huì)議網(wǎng)絡(luò)搜索電子商務(wù)豐富、奇妙的網(wǎng)絡(luò)應(yīng)用程序促使了Internet的高速發(fā)展應(yīng)用程序舉例:電子郵件Web應(yīng)用即時(shí)訊息遠(yuǎn)程訪問文件共享文件傳輸4問題如何將一個(gè)idea轉(zhuǎn)化成現(xiàn)實(shí)世界中的網(wǎng)絡(luò)應(yīng)用呢?NetworkApplicationDevelopment5開發(fā)網(wǎng)絡(luò)應(yīng)用程序網(wǎng)絡(luò)應(yīng)用程序開發(fā)核心是:
Writingprogramsthatrunondifferentendsystemsandcommunicatewitheachotheroverthenetwork
(寫出能夠運(yùn)行在不同的端系統(tǒng)并通過網(wǎng)絡(luò)彼此通信的程序)例如,Web程序:Web服務(wù)器程序和用戶瀏覽器程序端系統(tǒng):Web服務(wù)器主機(jī)和用戶主機(jī)通信:用戶通過瀏覽器請(qǐng)求閱覽Web頁面,服務(wù)器響應(yīng)用戶頁面請(qǐng)求網(wǎng)絡(luò):Internet6開發(fā)網(wǎng)絡(luò)應(yīng)用程序考慮幾個(gè)重要問題:采用什么樣的體系結(jié)構(gòu)?進(jìn)程如何通信?選擇什么樣的運(yùn)輸層服務(wù)?應(yīng)用層采用什么樣的協(xié)議?注意:無需為網(wǎng)絡(luò)核心設(shè)備(如路由器或鏈路層交換機(jī))開發(fā)軟件因?yàn)榫W(wǎng)絡(luò)核心設(shè)備并不在應(yīng)用層,而在網(wǎng)絡(luò)層、鏈路層和物理層優(yōu)點(diǎn)在于將應(yīng)用軟件限制在端系統(tǒng),促進(jìn)大量應(yīng)用程序的研發(fā)和部署72.2.1網(wǎng)絡(luò)應(yīng)用程序體系結(jié)構(gòu)應(yīng)用程序體系結(jié)構(gòu):Designedbytheapplicationdeveloperdictatehowtheapplicationisstructuredoverthevariousendsystems分類:客戶機(jī)/服務(wù)器結(jié)構(gòu)P2P體系結(jié)構(gòu)混合的體系結(jié)構(gòu)8客戶機(jī)/服務(wù)器結(jié)構(gòu)服務(wù)器:總是打開(always-on)具有固定的、眾所周知的IP地址主機(jī)群集常被用于創(chuàng)建強(qiáng)大的虛擬服務(wù)器客戶機(jī):無需總打開,可間斷的同服務(wù)器連接可擁有動(dòng)態(tài)IP地址客戶機(jī)相互之間不直接通信9應(yīng)用搜索引擎,如Google,百度網(wǎng)絡(luò)商務(wù),如Amazon,e-Bay,淘寶網(wǎng)Web電子郵件,如Yahoo郵件社交網(wǎng)絡(luò),如MySpace和Facebook視頻共享,如YouTube10純P2P體系結(jié)構(gòu)沒有總是打開的服務(wù)器任意一對(duì)主機(jī)直接相互通信對(duì)等方間歇連接并且可以改變IP地址優(yōu)點(diǎn):self-scalabilitycosteffective缺點(diǎn):難以管理安全性11應(yīng)用文件分發(fā),如BitTorrent文件搜索和共享,如eMule和LimeWire網(wǎng)絡(luò)電話,如SkypeIPTV,如PPLive122.1.2進(jìn)程通信進(jìn)程:運(yùn)行在端系統(tǒng)中的程序同一主機(jī)上的兩個(gè)進(jìn)程通過內(nèi)部進(jìn)程通信機(jī)制進(jìn)行通信不同主機(jī)上的兩個(gè)進(jìn)程通過計(jì)算機(jī)網(wǎng)絡(luò)交換報(bào)文相互通信客戶機(jī)進(jìn)程:
發(fā)起通信的進(jìn)程服務(wù)器進(jìn)程:
等待聯(lián)系的進(jìn)程注意:具有P2P體系結(jié)構(gòu)的應(yīng)用程序同時(shí)有客戶機(jī)進(jìn)程和服務(wù)器進(jìn)程。13進(jìn)程與網(wǎng)絡(luò)的接口進(jìn)程與網(wǎng)絡(luò)的接口是套接字通過套接字,進(jìn)程在網(wǎng)絡(luò)上發(fā)送和接收?qǐng)?bào)文進(jìn)程類比于房屋中的人,套接字類比于門發(fā)送進(jìn)程把報(bào)文從門發(fā)送出去接收進(jìn)程把報(bào)文從門接收進(jìn)來套接字又叫做網(wǎng)絡(luò)應(yīng)用程序編程接口API用戶通過API對(duì)傳輸層的控制,但僅限于:
(1)選擇傳輸協(xié)議,如TCP或UDP;(2)能設(shè)定幾個(gè)參數(shù),如最大緩存、最大報(bào)文長度等14由操作系統(tǒng)控制進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器進(jìn)程具有緩存、變量的TCP套接字主機(jī)或服務(wù)器Internet由應(yīng)用開發(fā)者控制15進(jìn)程尋址主機(jī)有唯一的32位IP地址,但一臺(tái)主機(jī)卻能夠運(yùn)行許多進(jìn)程。如何知道接收到的報(bào)文應(yīng)該投遞給哪個(gè)進(jìn)程呢?每個(gè)進(jìn)程需要一個(gè)標(biāo)識(shí)(identifier)進(jìn)程標(biāo)識(shí):包括IP地址和端口號(hào)(IP,port)比如:發(fā)送HTTP報(bào)文到web服務(wù)器,則需要如下信息:IPaddress:
2Portnumber:
801616應(yīng)用程序需要運(yùn)輸層哪些運(yùn)輸要求?1.可靠數(shù)據(jù)傳輸非完全可靠數(shù)據(jù)傳輸:有些應(yīng)用程序(e.g.,audio)可以容忍數(shù)據(jù)丟失完全可靠數(shù)據(jù)傳輸:另一些應(yīng)用程序(e.g.,filetransfer,telnet)需要完全可靠的數(shù)據(jù)傳輸2.定時(shí)(Timing)定時(shí)保證,比如規(guī)定100ms端到端傳輸限制低時(shí)延保證3.吞吐量(Throughput)有些應(yīng)用程序要求最低限度的吞吐量有些應(yīng)用程序根據(jù)需要彈性利用可供使用的吞吐量4.安全性(Security)加密(Encryption)數(shù)據(jù)完整性(Integrity)端點(diǎn)鑒別(Authenticat-ion)17常見應(yīng)用的傳輸服務(wù)需求時(shí)間敏感不不不是,100msec是,幾秒是,100msec是和不是應(yīng)用文件傳輸電子郵件Web實(shí)時(shí)音頻/視頻存儲(chǔ)音頻/視頻交互式游戲即時(shí)訊息數(shù)據(jù)丟失不能丟失不能丟失不能丟失容忍丟失容忍丟失容忍丟失不能丟失帶寬彈性彈性彈性音頻:幾kbps-1Mbps視頻:10kbps-5Mbps同上幾kbps以上彈性18因特網(wǎng)運(yùn)輸協(xié)議提供的服務(wù)TCP服務(wù):面向連接的服務(wù):在客戶機(jī)程序和服務(wù)器程序之間必須建立連接可靠的傳輸服務(wù):
接收和發(fā)送進(jìn)程間流量控制:
發(fā)送方不會(huì)淹沒接收方擁塞控制:
網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)抑制發(fā)送進(jìn)程沒有提供:實(shí)時(shí)性最小帶寬保證UDP服務(wù):不可靠數(shù)據(jù)傳輸沒有提供:建立連接可靠性流量控制擁塞控制時(shí)延和帶寬保證19因特網(wǎng)應(yīng)用:應(yīng)用層協(xié)議,傳輸協(xié)議應(yīng)用電子郵件遠(yuǎn)程終端訪問Web文件傳輸流媒體因特網(wǎng)電話應(yīng)用層協(xié)議SMTP[RFC2821]Telnet[RFC854]HTTP[RFC2616]FTP[RFC959]通常專用(e.g.RealNetworks)通常專用(e.g.,Dialpad)下面的傳輸協(xié)議TCPTCPTCPTCPTCPorUDP典型用UDP20第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程21常用術(shù)語網(wǎng)頁:(Web頁,或稱文檔)由許多對(duì)象組成。
對(duì)象:就是文件,可以是HTML文件,JPEG圖像,Javaapplet,音頻文件…多數(shù)網(wǎng)頁由單個(gè)基本HTML文件和若干個(gè)所引用的對(duì)象構(gòu)成每個(gè)對(duì)象通過一個(gè)URL(UniformResourceLocator統(tǒng)一資源定位符)尋址舉例URL:/someDept/pic.gif主機(jī)名路徑名協(xié)議22HTML舉例<html><body><ahref="../asdocs/html_tutorials/humor01.html"target="_blank">一則笑話</a><p>
如果你將target的屬性值設(shè)成_blank,你點(diǎn)擊這個(gè)鏈接的時(shí)候,網(wǎng)頁就會(huì)在一個(gè)新窗口出現(xiàn)。</p></body></html>232.2.1HTTP概述HTTP:超文本傳輸協(xié)議HyperTextTransferProtocolWeb的應(yīng)用層協(xié)議,建立在TCP運(yùn)輸層協(xié)議上client/server模式client:
瀏覽器browser請(qǐng)求接收解釋并顯示W(wǎng)eb對(duì)象server:Web服務(wù)器響應(yīng)請(qǐng)求,發(fā)送Web對(duì)象協(xié)議版本HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse24HTTP概述(續(xù))使用TCP:客戶發(fā)起TCP連接:客戶初始化一個(gè)與HTTP服務(wù)器80端口的TCP連接服務(wù)器接收并建立TCP連接:HTTP服務(wù)器接收來自客戶的TCP連接請(qǐng)求,建立連接交換HTTP消息:Browser(HTTPclient)和Web服務(wù)器(HTTPserver)交換HTTP消息(應(yīng)用層協(xié)議消息),包括HTTP請(qǐng)求和響應(yīng)消息結(jié)束:最后結(jié)束(或叫關(guān)閉)TCP連接HTTP是無狀態(tài)協(xié)議HTTP服務(wù)器不維護(hù)客戶先前的狀態(tài)信息維護(hù)狀態(tài)的協(xié)議非常復(fù)雜!必須維護(hù)過去歷史(狀態(tài)信息)如果server/client崩潰,它們各自的狀態(tài)視圖可能不一致。252.2.2HTTP連接2.持久HTTP連接一個(gè)TCP連接上可以傳送多個(gè)對(duì)象HTTPv1.1默認(rèn)使用持久HTTP連接1.非持久HTTP連接每個(gè)TCP連接上只傳送一個(gè)對(duì)象HTTPv1.0使用非持久HTTP連接26響應(yīng)時(shí)間模型1.往返時(shí)間(Round-TripTime,RTT):1個(gè)分組從客戶主機(jī)到服務(wù)器再回到客戶主機(jī)所花費(fèi)的時(shí)間2.響應(yīng)時(shí)間:1個(gè)RTT用于建立TCP連接1個(gè)RTT用于HTTP請(qǐng)求/響應(yīng)消息的交互Html文件總響應(yīng)時(shí)間:total=2RTT+transmittime傳輸文件的時(shí)間發(fā)起TCP連接RTT請(qǐng)求文件RTT接收整個(gè)文件客戶機(jī)的時(shí)間服務(wù)器的時(shí)間27(1).非持久HTTP連接假設(shè)用戶輸入U(xiǎn)RL
http://www.someS/someDepartment/home.index1a.
初始化1個(gè)與服務(wù)器主機(jī)HTTP服務(wù)器的TCP連接
2.
發(fā)送1個(gè)HTTP請(qǐng)求消息(包含URL)到TCP連接套接字(此消息指出客戶需要Web對(duì)象someDepartment/home.index)1b.在80端口監(jiān)聽來自HTTP客戶的TCP連接請(qǐng)求;
收到連接請(qǐng)求后,接受并建立連接,通知客戶3.HTTP服務(wù)器接收請(qǐng)求消息,產(chǎn)生1個(gè)響應(yīng)消息(包含被請(qǐng)求html文件),并發(fā)送這個(gè)消息到自身TCP連接套接字time網(wǎng)頁由1個(gè)HTML文件,和10個(gè)jpeg圖像構(gòu)成www.someS服務(wù)器用戶HTTP客戶機(jī)4.HTTP服務(wù)器結(jié)束TCP連接.5.HTTP客戶接收并解析html文件,顯示html文件(僅得到10個(gè)jpeg對(duì)象的引用)對(duì)10個(gè)引用jpeg對(duì)象的每1個(gè)重復(fù)步驟1-5總計(jì)需要做11次TCP鏈接28(2)持久HTTP連接非持久HTTP連接的問題:每個(gè)對(duì)象需要2個(gè)RTT操作系統(tǒng)必須為每個(gè)TCP連接分配主機(jī)資源大量客戶的并發(fā)TCP連接形成服務(wù)器的嚴(yán)重負(fù)擔(dān)
以上例子需11次TCP連接持久HTTP連接服務(wù)器發(fā)送響應(yīng)消息后保持連接同1客戶/服務(wù)器的后續(xù)HTTP消息繼續(xù)在該連接上傳送以上例子需1次TCP連接292.2.3HTTP報(bào)文格式2類HTTP報(bào)文請(qǐng)求報(bào)文request響應(yīng)報(bào)文response報(bào)文采用ASCII文本
(易于人讀格式)301.HTTP請(qǐng)求報(bào)文URL版本spcrlfsp方法值spcrlf首部字段名:值spcrlf首部字段名:crlf請(qǐng)求行首部行空行實(shí)體主體注:URL=UniformResourceLocator31舉例GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0//代理對(duì)象版本Connection:Close//不使用持久連接Accept-language:zh-cn//中文版本(額外的回車換行)
請(qǐng)求行首部行方法URLHTTP版本回車換行指示結(jié)束32方法類型HTTP/1.0GET請(qǐng)求一個(gè)對(duì)象POST用戶提交表單HEAD服務(wù)器收到請(qǐng)求時(shí),用HTTP報(bào)文進(jìn)行響應(yīng),但不返回請(qǐng)求對(duì)象應(yīng)用程序開發(fā)者常用來故障跟蹤HTTP/1.1GETPOSTHEADPUT文件在實(shí)體主體中被上載到URL字段指定的路徑DELETE刪除URL字段指定的文件33上載表單(各字段)輸入值Post方法:網(wǎng)頁時(shí)常包含表單輸入輸入值在請(qǐng)求報(bào)文的實(shí)體主體中被上載到服務(wù)器URL方法:使用GET方法表單(各字段)輸入值被上載,以URL請(qǐng)求行的字段:/animalsearch?monkeys&banana341.HTTP響應(yīng)報(bào)文狀態(tài)碼短語spcrlfsp版本值spcrlf首部字段名:值spcrlf首部字段名:crlf狀態(tài)行首部行空行實(shí)體主體352.HTTP響應(yīng)消息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.,被請(qǐng)求的HTML文件36HTTP響應(yīng)的狀態(tài)碼200OK請(qǐng)求成功,所請(qǐng)求信息在響應(yīng)消息中返回301MovedPermanently所請(qǐng)求的對(duì)象已永久遷移,新的URL在本響應(yīng)消息的(location:)頭部指出400BadRequest該請(qǐng)求不能被服務(wù)器解讀404NotFound服務(wù)器上不存在所請(qǐng)求文檔505HTTPVersionNotSupported位于服務(wù)器響應(yīng)報(bào)文的第一行幾個(gè)常見的樣本狀態(tài)碼:372.2.4用戶與服務(wù)器交互:CookiesHTTP服務(wù)器是無狀態(tài)的優(yōu)點(diǎn)在于:簡化服務(wù)器設(shè)計(jì),可同時(shí)處理數(shù)以千計(jì)的TCP鏈接,提高了Web服務(wù)器的處理性能無狀態(tài)HTTP服務(wù)器無法識(shí)別用戶,難以實(shí)現(xiàn):限制用戶的訪問跟蹤用戶的訪問為此,RF2109定義了Cookie38用戶與服務(wù)器交互:CookiesCookies的4個(gè)重要方面:1)cookie首部行-在HTTP響應(yīng)報(bào)文中2)cookie首部行-在HTTP請(qǐng)求報(bào)文中3)cookie文件-保存在用戶主機(jī)中并被用戶瀏覽器管理4)cookie-保存在Web站點(diǎn)的后端數(shù)據(jù)庫39舉例:李四總是使用同臺(tái)PC訪問Internet他首次訪問1個(gè)電子商務(wù)網(wǎng)站當(dāng)他最初發(fā)出HTTP請(qǐng)求訪問該站點(diǎn)時(shí),該站點(diǎn)創(chuàng)建一個(gè)唯一的ID,并在后端數(shù)據(jù)庫創(chuàng)建一個(gè)該ID表項(xiàng)40Cookies:跟蹤用戶(續(xù).)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:41Cookies:跟蹤用戶(續(xù).)Cookies可以帶來什么?身份認(rèn)證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會(huì)話狀態(tài)(Webe-mail)Cookies和隱私:cookies允許網(wǎng)站更加了解你你可以提供名字和e-mail給網(wǎng)站補(bǔ)充422.2.5Web緩存(代理服務(wù)器)WebCache(ProxServer):anetworkentitythatsatisfiesHTTPrequestsonthebehalfofanoriginWebserver用戶配置瀏覽器:Web訪問經(jīng)由代理服務(wù)器所有HTTP請(qǐng)求指向緩存若對(duì)象在緩存中,緩存器返回對(duì)象否則,緩存器向起始服務(wù)器發(fā)出請(qǐng)求,接收對(duì)象后再轉(zhuǎn)發(fā)給客戶機(jī)客戶機(jī)代理服務(wù)器客戶機(jī)HTTP請(qǐng)求HTTP請(qǐng)求HTTP響應(yīng)HTTP響應(yīng)HTTP請(qǐng)求HTTP響應(yīng)起始服務(wù)器起始服務(wù)器HTTP請(qǐng)求HTTP響應(yīng)43為何使用Web緩存?減少客戶請(qǐng)求的響應(yīng)時(shí)間減少機(jī)構(gòu)接入鏈路的擁塞加強(qiáng)網(wǎng)絡(luò)內(nèi)容提供商的內(nèi)容分發(fā)能力originserverspublicInternetinstitutionalnetwork10MbpsLAN1.5Mbpsaccesslinkinstitutionalcache43Web緩存同時(shí)作用于客戶端和服務(wù)器端典型緩存器由ISP安裝(university,company,residentialISP)注:44緩存器舉例假設(shè)對(duì)象平均長度=1Mbits機(jī)構(gòu)內(nèi)的瀏覽器對(duì)對(duì)象的平均訪問速率=15個(gè)對(duì)象請(qǐng)求/sec因特網(wǎng)時(shí)延=2sec結(jié)論局域網(wǎng)上的流量強(qiáng)度:15*1M/100Mbps=0.15鏈路上的流量強(qiáng)度:15*1M/15M=1總延時(shí)=因特網(wǎng)時(shí)延+接入時(shí)延+局域網(wǎng)時(shí)延
=2秒+數(shù)分鐘+數(shù)毫秒起始服務(wù)器公共
Internet機(jī)構(gòu)網(wǎng)絡(luò)100MbpsLAN15Mbps接入鏈路總時(shí)延很大,請(qǐng)求的平均響應(yīng)時(shí)間以分鐘計(jì)45緩存器舉例(續(xù))解決辦法之一:增加接入提高鏈路的速率鏈路上的流量強(qiáng)度=15%結(jié)論局域網(wǎng)上的流量強(qiáng)度=15%總時(shí)延=因特網(wǎng)時(shí)延+接入時(shí)延+局域網(wǎng)時(shí)延
=2秒+數(shù)毫秒+數(shù)毫秒其缺陷在于需要較大的投資起始服務(wù)器公共
Internet機(jī)構(gòu)網(wǎng)絡(luò)100MbpsLAN15Mbps接入鏈路100Mbps接入鏈路46緩存器舉例(續(xù))解決辦法之二:安裝緩存器假設(shè)緩存器命中率為0.4結(jié)論40%請(qǐng)求立即會(huì)得到響應(yīng)60%的請(qǐng)求通過訪問起始服務(wù)器滿足鏈路上的流量強(qiáng)度減為0.6,可以忽略不計(jì)總的平均延時(shí)=因特網(wǎng)時(shí)延+接入時(shí)延+局域網(wǎng)時(shí)延=0.6*(2.01)秒+數(shù)毫秒<1.4秒起始服務(wù)器公共
Internet機(jī)構(gòu)網(wǎng)絡(luò)10MbpsLAN1.5Mbps接入鏈路機(jī)構(gòu)緩存器47結(jié)論方案二比方案一的響應(yīng)時(shí)延更低方案二不需升級(jí)因特網(wǎng)的接入鏈路購買和安裝Web緩存器成本更低廉482.2.6條件GET方法問題:Web服務(wù)器中的對(duì)象可能已被修改,而代理服務(wù)器中的對(duì)象變得陳舊,如何保證用戶訪問到最新的對(duì)象呢?解決辦法:條件GET方法緩存器:在請(qǐng)求報(bào)文中包含對(duì)象最后修改時(shí)間If-modified-since:<date>服務(wù)器:
如果對(duì)象是最新的則響應(yīng)報(bào)文中不包含對(duì)象:HTTP/1.0304NotModified49cacheserverHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0304NotModifiedobjectnotmodifiedHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0200OK<data>objectmodified50第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP
2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程*2.9構(gòu)造一個(gè)簡單的Web服務(wù)器51FTP:文件傳輸協(xié)議
FileTransferProtocol傳輸文件到遠(yuǎn)程主機(jī)/從遠(yuǎn)程主機(jī)下載文件client/server模式client:
發(fā)起傳輸?shù)囊环絪erver:遠(yuǎn)程主機(jī)ftp:RFC959ftp服務(wù)器:端口號(hào)21文件傳輸FTP服務(wù)器FTP用戶接口FTP客戶機(jī)本地文件系統(tǒng)遠(yuǎn)程文件系統(tǒng)用戶52FTP數(shù)據(jù)傳輸過程1.FTP客戶首先發(fā)起建立1個(gè)與FTP服務(wù)器端口號(hào)21之間的TCP控制連接,指定TCP作為傳輸層協(xié)議2.客戶在建立的控制連接上獲得身份認(rèn)證3.客戶在建立的控制連接上發(fā)送命令來瀏覽遠(yuǎn)程主機(jī)的目錄.4.當(dāng)服務(wù)器接收到1個(gè)文件傳輸命令時(shí),在服務(wù)器端口號(hào)20創(chuàng)建1個(gè)與客戶的TCP數(shù)據(jù)連接5.1個(gè)文件傳輸后,服務(wù)器結(jié)束這個(gè)TCP數(shù)據(jù)連接.53獨(dú)立的控制連接,數(shù)據(jù)連接數(shù)據(jù)連接:傳輸下一個(gè)文件則另外打開一個(gè)TCP數(shù)據(jù)連接控制連接:帶外(out-of-band)發(fā)送控制信息FTP服務(wù)器要維護(hù)用戶狀態(tài)信息:當(dāng)前目錄,先前的身份認(rèn)證FTP客戶機(jī)FTP服務(wù)器TCP控制連接端口
21TCP數(shù)據(jù)連接端口
2054ftp命令,響應(yīng)命令樣例:在控制通道上傳送的ASCII文本USERusername(登錄)PASSpassword(登錄)LIST
(返回當(dāng)前目錄中的文件列表)RETRfilename
(取(gets)文件)STORfilename
(存(puts)文件到遠(yuǎn)程主機(jī))返回碼樣例狀態(tài)碼和短語(同http)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile5455第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個(gè)簡單的Web服務(wù)器56電子郵件3個(gè)主要組成部分:
用戶代理useragents郵件服務(wù)器mailservers簡單郵件傳送協(xié)(SMTP)用戶郵箱外出報(bào)文隊(duì)列mailserveruseragentuseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP123571.電子郵件:用戶代理允許用戶閱讀、回復(fù)、轉(zhuǎn)發(fā)、保存和編輯郵件消息通過運(yùn)行郵件協(xié)議,發(fā)送消息到郵件服務(wù)器或從服務(wù)器上接收郵件消息例如:Outlook,foxmail等582.電子郵件:郵件服務(wù)器郵件服務(wù)器包括:
1.郵箱mailbox
存放用戶接收的郵件消息2.外出報(bào)文隊(duì)列outgoing
message
queue3.郵件協(xié)議用在郵件服務(wù)器之間發(fā)送郵件useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP593.電子郵件:SMTP協(xié)議[RFC5321]
SimpleMailTransferProtocol使用TCP可靠數(shù)據(jù)傳輸服務(wù),傳輸郵件消息到服務(wù)器端口號(hào)25直接傳送:發(fā)送郵件服務(wù)器到接收郵件服務(wù)器傳輸?shù)?個(gè)階段握手(問候)郵件消息的傳輸結(jié)束協(xié)議采用命令/應(yīng)答的交互命令:ASCII文本格式應(yīng)答:
狀態(tài)碼及其短語郵件消息必須是7-bitASCII60例子:Alice發(fā)送郵件消息到Bob1)Alice使用用戶代理編寫郵件消息(給bob@的)2)Alice的用戶代理發(fā)送郵件消息到她的郵件服務(wù)器;郵件消息存放在郵件消息隊(duì)列3)Alice郵件服務(wù)器的SMTP客戶端發(fā)起建立一個(gè)到Bob的郵件服務(wù)器的SMTP服務(wù)器端的TCP連接.4)SMTP客戶在這個(gè)TCP連接上發(fā)送Alice的郵件消息5)Bob服務(wù)器存放郵件消息存到Bob的郵箱6)Bob調(diào)用他的用戶代理讀郵件消息useragentmailservermailserveruseragent123456useragent1useragent1useragent61SMTP客戶和服務(wù)器的命令交互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服務(wù)器使用CRLF.CRLF
來判斷郵件消息的結(jié)束與HTTP的比較:相同點(diǎn):在主機(jī)間傳輸文件持久連接ASCII命令/應(yīng)答交互,狀態(tài)碼不同點(diǎn):HTTP:拉協(xié)議(Pull),SMTP:推協(xié)議(Push)SMTP要求7-bitASCII編碼,HTTP無此要求HTTP每個(gè)對(duì)象封裝在各自HTTP響應(yīng)消息中;SMTP的各個(gè)對(duì)象置于同一個(gè)郵件消息中發(fā)送63郵件消息的格式RFC822定義文本郵件消息格式標(biāo)準(zhǔn):信頭-頭部行。如:To:From:Subject:信體郵件消息也必須是ASCII字符headerbodyblankline64MIME引入RFC822描述只適合普通ASCII文本對(duì)多媒體報(bào)文(如圖片、音視頻)或非ASCII文本格式(如非英語語言字符)的報(bào)文處理無法滿足RFC2045,2046定義了RFC822的擴(kuò)展MIME:MultipurposeInternetmailExtensions(多用途因特網(wǎng)郵件擴(kuò)展)65MIME頭部格式增添額外的兩個(gè)關(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é)議:從服務(wù)器獲取郵件消息POP:PostOfficeProtocol郵局協(xié)議[RFC1939]110端口號(hào)身份認(rèn)證(代理<-->服務(wù)器),下載郵件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更復(fù)雜!)允許用戶像對(duì)待本地郵箱那樣操縱遠(yuǎn)程郵箱的郵件基于Web的電子郵件,比如Yahoo,Google等useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver67POP3協(xié)議:第三版POP協(xié)議1.身份認(rèn)證階段authorizationphase客戶命令:userusernamepasspassword服務(wù)器響應(yīng)+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:列出郵件編號(hào)retr:按編號(hào)取郵件dele:刪除quit68第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個(gè)簡單的Web服務(wù)器69DNS:域名系統(tǒng)DomainNameSystem人可以有很多標(biāo)識(shí):ID,name,passport主機(jī)和路由器標(biāo)識(shí):IPaddress(32bit)–
用于分組尋址“主機(jī)名”–
用于人記憶識(shí)別,比如Q:可以在IP地址和主機(jī)名之間建立映射嗎?域名系統(tǒng)
DomainNameSystem域名系統(tǒng)(DNS)分布式數(shù)據(jù)庫:一個(gè)由分層DNS服務(wù)器實(shí)現(xiàn)的分布式數(shù)據(jù)庫應(yīng)用層協(xié)議:DNS服務(wù)器實(shí)現(xiàn)域名轉(zhuǎn)換的應(yīng)用層協(xié)議(域名/地址轉(zhuǎn)換)DNS協(xié)議運(yùn)行在UDP之上,使用53號(hào)端口702.5.1DNS提供的服務(wù)DNS服務(wù)器提供的服務(wù):1.主機(jī)名到IP地址的轉(zhuǎn)換2.主機(jī)別名一個(gè)主機(jī)可以有一個(gè)規(guī)范主機(jī)名和多個(gè)主機(jī)別名比如,名為的主機(jī),可能有別名或3.郵件服務(wù)器別名比如,是郵件服務(wù)器,Bob的郵箱可以是簡單的bob@4.負(fù)載分配DNS實(shí)現(xiàn)冗余服務(wù)器:一個(gè)IP地址集合可以對(duì)應(yīng)于同一個(gè)規(guī)范主機(jī)名。712.5.2DNS工作原理DNS采用分布式,為什么不集中式?單點(diǎn)故障如果DNS服務(wù)器崩潰,則整個(gè)Internet隨之癱瘓通信容量單個(gè)DNS服務(wù)器為上億臺(tái)主機(jī)服務(wù)遠(yuǎn)距離集中式數(shù)據(jù)庫導(dǎo)致嚴(yán)重時(shí)延維護(hù)中央數(shù)據(jù)庫非常龐大,需維護(hù)所有主機(jī)記錄完全沒有可擴(kuò)展能力72舉例:分布式、層次結(jié)構(gòu)根DNS服務(wù)器comDNS服務(wù)器orgDNS服務(wù)器eduDNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器DNS服務(wù)器客戶機(jī)怎樣決定主機(jī)名的IP地址?客戶機(jī)查詢根服務(wù)器得到comDNS服務(wù)器客戶機(jī)查詢comDNS服務(wù)器得到DNS服務(wù)器客戶機(jī)查詢DNS服務(wù)器得到的IP地址頂級(jí)域服務(wù)器權(quán)威服務(wù)器73一、根DNS服務(wù)器RootDNSservers根DNS服務(wù)器負(fù)責(zé)記錄頂級(jí)域名服務(wù)器的信息bUSC-ISIMarinadelRey,CAlICANNMarinadelRey,CAeNASAMtView,CAfInternetSoftwareC.PaloAlto,CAiNORDUnetStockholmkRIPELondonmWIDETokyoaNSIHerndon,VAcPSInetHerndon,VAdUMarylandCollegePark,MDgDISAVienna,VAhARLAberdeen,MDjNSI(TBD)Herndon,VAInternet有13個(gè)跟DNS服務(wù)器,大部分在北美74二、頂級(jí)域服務(wù)器(TLD)頂級(jí)域服務(wù)器負(fù)責(zé)管理
頂級(jí)域名,比如com,org,net,edu,etc國家的頂級(jí)域名,比如uk,fr,ca,jp,etcNetworksolutions公司維護(hù)com頂級(jí)域的TLD服務(wù)器Educause公司維護(hù)edu頂級(jí)域的TLD服務(wù)器75三、權(quán)威DNS服務(wù)器權(quán)威DNS服務(wù)器在因特網(wǎng)上,具有公共可訪問主機(jī)(如Web服務(wù)器和郵件服務(wù)器)的每個(gè)組織機(jī)構(gòu)必須提供公共可訪問的DNS記錄,這些記錄將可訪問主機(jī)的名字映射為IP地址。組織機(jī)構(gòu)的權(quán)威DNS服務(wù)器負(fù)責(zé)保存這些DNS記錄。多數(shù)大學(xué)和公司維護(hù)它們的基本權(quán)威DNS服務(wù)器76特殊DNS:本地DNS服務(wù)器本地DNS服務(wù)器也叫默認(rèn)名字服務(wù)器,Defaultnameserver嚴(yán)格來說,本地DNS服務(wù)器不屬于DNS服務(wù)器的層次結(jié)構(gòu)每個(gè)ISP(如居民區(qū)ISP、公司、大學(xué))都有一臺(tái)本地DNS當(dāng)主機(jī)發(fā)出DNS請(qǐng)求時(shí),該請(qǐng)求被發(fā)往本地DNS服務(wù)器本地DNS服務(wù)器起著代理的作用,轉(zhuǎn)發(fā)請(qǐng)求到層次結(jié)構(gòu)中77四類服務(wù)器交互查詢請(qǐng)求主機(jī)客戶機(jī)根DNS服務(wù)器本地域名服務(wù)器123456權(quán)威DNS服務(wù)器78頂級(jí)域服務(wù)器78DNS查詢方法一遞歸查詢:名字解析的負(fù)擔(dān)交給被查詢的DNS服務(wù)器被查詢的DNS服務(wù)器負(fù)載重requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver379requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查詢方法二迭代查詢:被查詢的DNS服務(wù)器回復(fù)下一層可以被查詢的DNS服務(wù)器的IP地址80DNS緩存和記錄更新為改善時(shí)延性能和減少Internet上DNS報(bào)文數(shù)量,引入DNS緩存(DNScaching)一旦DNS服務(wù)器獲得DNS映射,它將緩存該映射到本地存儲(chǔ)器服務(wù)器在一定時(shí)間后將丟棄緩存的信息本地DNS服務(wù)器可以緩存TLD服務(wù)器的IP地址,因此根DNS服務(wù)器不會(huì)被經(jīng)常訪問812.5.3DNS記錄和報(bào)文DNS:
存儲(chǔ)資源記錄(RR,ResourceRecords)的分布式數(shù)據(jù)庫Type=NSname=域名value=DNS服務(wù)器的主機(jī)名例:(,,NS,2)RR格式:(name,value,type,ttl)Type=Aname=主機(jī)名value=IP地址例:(R,26,A,2)82Type=CNAMEname=主機(jī)別名value=真實(shí)的規(guī)范主機(jī)名例:(,,CNAME,2)Type=MXname=郵件服務(wù)器的主機(jī)別名value=郵件服務(wù)器的真實(shí)規(guī)范主機(jī)名例:(,,MX,2)
83DNS協(xié)議,消息DNS協(xié)議:
查詢報(bào)文與應(yīng)答報(bào)文
,但具有相同的報(bào)文格式報(bào)文頭部標(biāo)識(shí)符:
標(biāo)識(shí)查詢,16位,查詢和應(yīng)答報(bào)文使用相同的標(biāo)識(shí)符標(biāo)志:有若干個(gè)標(biāo)志構(gòu)成,分別標(biāo)識(shí)不同的功能查詢/應(yīng)答-0/1查詢希望是/非遞歸查詢-1/0應(yīng)答可/否獲得(支持)遞歸查詢-1/0應(yīng)答是/否來自權(quán)威名字服務(wù)器-1/0附加信息(資源記錄的變量數(shù))權(quán)威(資源記錄的變量數(shù))回答(資源記錄的變量數(shù))問題(問題的變量數(shù))附加RR數(shù)權(quán)威RR數(shù)回答RR數(shù)問題數(shù)標(biāo)志標(biāo)識(shí)符12字節(jié)84DNS協(xié)議,消息問題部分查詢的Name,type
回答部分對(duì)于查詢,應(yīng)答的資源記錄可以多個(gè)資源記錄,由于可以有多個(gè)IP地址權(quán)威部分權(quán)威名字服務(wù)器的其他資源記錄附加信息部分其他有幫助的記錄.附加信息(資源記錄的變量數(shù))權(quán)威(資源記錄的變量數(shù))回答(資源記錄的變量數(shù))問題(問題的變量數(shù))附加RR數(shù)權(quán)威RR數(shù)回答RR數(shù)問題數(shù)標(biāo)志標(biāo)識(shí)符12字節(jié)85在DNS數(shù)據(jù)庫中插入記錄例:剛剛創(chuàng)建一個(gè)“網(wǎng)絡(luò)”公司如果你想在注冊(cè)登記機(jī)構(gòu)注冊(cè)你的域名,則需要提供你自己的權(quán)威DNS服務(wù)器名字和IP地址該注冊(cè)登記機(jī)構(gòu)將下列兩條資源記錄插入注冊(cè)機(jī)構(gòu)的DNS系統(tǒng)中:(,,NS)(,,A)如果你想建立一個(gè)網(wǎng)站,則可以將網(wǎng)址以類型A的方式記錄到你的權(quán)威DNS服務(wù)器中。如果你想建一個(gè)郵件服務(wù)器,則可以將以類型MX的方式記錄到你的權(quán)威DNS服務(wù)中。86第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個(gè)簡單的Web服務(wù)器87P2P文件共享舉例Alice在家用PC上運(yùn)行一個(gè)P2P文件共享應(yīng)用軟件每次重新連接因特網(wǎng)時(shí),得到新的IP地址尋找“HeyJude”應(yīng)用程序顯示有“HeyJude”拷貝的其他對(duì)等方Alice選擇一個(gè)對(duì)等方Bob.文件從Bob的PC上拷貝在Alice的PC上:HTTP當(dāng)Alice在下載時(shí),其他用戶也在從Alice的PC下載Alice的對(duì)等方既是一個(gè)Web服務(wù)器,又是一個(gè)瞬時(shí)Web服務(wù)器所有的對(duì)等方都是服務(wù)器=高擴(kuò)展性88P2P:集中式目錄“Napster”公司的設(shè)計(jì)1)當(dāng)對(duì)等方啟動(dòng)時(shí),它通知目錄服務(wù)器以下信息IP地址可供共享的對(duì)象名稱2)Alice查詢文件“HeyJude”3)Alice向Bob請(qǐng)求文件centralizeddirectoryserverpeersAliceBob11112389P2P:集中式目錄的問題單點(diǎn)故障性能瓶頸侵犯版權(quán)
文件傳輸是分散的,但是定位內(nèi)容的過程是高度集中的90查詢洪泛:Gnutella全分布沒有集中式服務(wù)器公共域協(xié)議許多Gnutella客戶機(jī)實(shí)現(xiàn)Gnutella協(xié)議覆蓋網(wǎng)絡(luò):graph如果對(duì)等方X和Y維護(hù)了一條TCP連接,則說X和Y之間有一條邊所有活躍的對(duì)等方和邊組成覆蓋網(wǎng)絡(luò)邊不是物理通信鏈路給定對(duì)等方連接的覆蓋網(wǎng)絡(luò)路徑中的節(jié)點(diǎn)少于10個(gè),即TTL小于1091Gnutella:協(xié)議QueryQueryHitQueryQueryQueryHitQueryQueryQueryHitFiletransfer:HTTP
查詢報(bào)文在已有的TCP連接上發(fā)送對(duì)等方轉(zhuǎn)發(fā)報(bào)文
QueryHit
報(bào)文按反向路徑傳送可擴(kuò)展性:限范圍泛洪92Gnutella:加入對(duì)等方加入對(duì)等方X必須發(fā)現(xiàn)在Gnutella網(wǎng)絡(luò)中的其他對(duì)等方:使用對(duì)等方列表。X視圖與該列表上的對(duì)等方建立一條TCP連接,直到與Y創(chuàng)建一條連接。X向Y發(fā)送一個(gè)Ping報(bào)文;Y轉(zhuǎn)發(fā)該P(yáng)ing報(bào)文。所有的對(duì)等方接收Ping報(bào)文并響應(yīng)一個(gè)Pong報(bào)文。X接收到許多Pong報(bào)文。然后能同某些其他對(duì)等方建立TCP連接。93Gnutella:對(duì)等方離開主動(dòng)離開:離開接點(diǎn)的所有對(duì)等方都會(huì)刷新自身的激活對(duì)等方列表,并開始與列表中的新的對(duì)等方建立連接斷網(wǎng):發(fā)送信息的時(shí)候?qū)Φ确經(jīng)]有響應(yīng),則表明對(duì)等方離開,節(jié)點(diǎn)刷新自身的激活對(duì)等方列表,并開始與列表中的新的對(duì)等方建立連接94KaZaA每個(gè)對(duì)等方要不被指派為組長,要不被指派給一個(gè)組長對(duì)等方和組長之間建立TCP連接組長之間建立TCP連接組長維護(hù)它的子對(duì)等方共享的內(nèi)容95KaZaA每個(gè)文件有文件的散列碼標(biāo)識(shí)客戶機(jī)送向組長發(fā)送關(guān)鍵詞的查詢組長響應(yīng)匹配逐項(xiàng)匹配:元數(shù)據(jù),散列值,IP地址如果組長轉(zhuǎn)發(fā)查詢給其他組長則其他組長響應(yīng)匹配客戶端選擇要下載的文件96KaZaA請(qǐng)求排隊(duì):限制對(duì)等方并行上載數(shù)量,新的請(qǐng)求進(jìn)行排隊(duì)。激勵(lì)優(yōu)先權(quán):根據(jù)不同的上載下載比例優(yōu)先服務(wù)貢獻(xiàn)大者。并行下載:將一個(gè)文件分成若干段,從多個(gè)對(duì)等方并行下載。97第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個(gè)簡單的Web服務(wù)器98Socket套接字編程SocketAPI1981提出于BSD4.1UNIX,網(wǎng)絡(luò)應(yīng)用程序明確的創(chuàng)建,使用及釋放套接字client/server模式通過SocketAPI,提供傳輸層的2類傳輸服務(wù):不可靠的數(shù)據(jù)報(bào)傳輸可靠的字節(jié)流傳輸1.套接字是一個(gè)主機(jī)本地應(yīng)用程序所創(chuàng)建的,為操作系統(tǒng)所控制的接口(“門”).2.應(yīng)用進(jìn)程通過這個(gè)接口,使用傳輸層提供的服務(wù),跨網(wǎng)絡(luò)發(fā)送(/接收)消息到(/從)其他應(yīng)用進(jìn)程。socket目的:
學(xué)會(huì)如何開發(fā)采用套接字通信的C/S網(wǎng)絡(luò)應(yīng)用程序。
99用TCP進(jìn)行套接字編程Socket:
應(yīng)用進(jìn)程和傳輸層協(xié)議(UCPorTCP)之間的門。TCP服務(wù):
從1個(gè)進(jìn)程到另1個(gè)進(jìn)程的字節(jié)流的可靠傳輸。processTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet100客戶必須初始聯(lián)系服務(wù)器服務(wù)器進(jìn)程必須先運(yùn)行服務(wù)器進(jìn)程必須創(chuàng)建套接字(門)來迎候客戶的初始聯(lián)系客戶如何初始聯(lián)系服務(wù)器創(chuàng)建客戶本地TCPsocket指定服務(wù)器進(jìn)程的IP地址,端口號(hào)一旦客戶創(chuàng)建套接字,客戶TCP就發(fā)起3次握手并建立與服務(wù)器TCP的連接一旦客戶初始聯(lián)系(敲門)服務(wù)器,服務(wù)器TCP為服務(wù)器進(jìn)程創(chuàng)建1個(gè)新的socket與客戶進(jìn)程通信允許服務(wù)器與多個(gè)客戶通信源端口號(hào)被用來區(qū)分客戶
(詳見第三章)TCP為客戶和服務(wù)器提供了可靠的,順序的,字節(jié)流的傳輸(“管道”)。從應(yīng)用程序的角度來看用TCP進(jìn)行套接字編程(續(xù))101流(Stream)的概念流是流入或流出一個(gè)進(jìn)程的一串字符.輸入流被加在進(jìn)程的某個(gè)輸入源上,eg,標(biāo)準(zhǔn)輸入(鍵盤)或套接字.輸出流被加在進(jìn)程的某個(gè)輸出源上,eg,標(biāo)準(zhǔn)輸出(顯示器)或套接字.102客戶機(jī)/服務(wù)器應(yīng)用程序示例:1)客戶從它的標(biāo)準(zhǔn)輸入讀入一行(inFromUserstream),將該行發(fā)送到通往服務(wù)器的套接字(outToServerstream)2)服務(wù)器從它的連接套接字讀入一行3)服務(wù)器將該行轉(zhuǎn)換成大寫,然后送回客戶機(jī)4)服務(wù)器將修改后的行通過其連接套接字再發(fā)回給客戶機(jī)5)客戶從它的套接字中讀取、輸出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字編程103TCP客戶/服務(wù)器套接字交互流程:等待入連接請(qǐng)求connectionSocket=welcomeSocket.accept()對(duì)入請(qǐng)求創(chuàng)建套接字,port=xwelcomeSocket=ServerSocket()創(chuàng)建與hostid,port=x連接的套接字clientSocket=Socket()關(guān)閉connectionSocket從clientSocket讀應(yīng)答關(guān)閉clientSocket服務(wù)器(在hostid上運(yùn)行)客戶機(jī)使用clientSocket發(fā)送請(qǐng)求讀請(qǐng)求connectionSocket寫應(yīng)答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)絡(luò)支持類程序用到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編寫的服務(wù)程序示例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編寫的服務(wù)程序示例(續(xù))DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());
clientSentence=inFromClient.readLine();capitalizedSentence=clientSentence.toUpperCase()+'\n';outToClient.writeBytes(capitalizedSentence);connectionSocket.close();}}}
ReadinlinefromsocketCreateoutputstream,attachedtosocketWriteoutlinetosocketEndofwhileloop,loopbackandwaitforanotherclientconnection108第二章:應(yīng)用層2.1應(yīng)用層協(xié)議原理2.2Web應(yīng)用和HTTP協(xié)議2.3文件傳輸協(xié)議:FTP2.4因特網(wǎng)中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網(wǎng)的目錄服務(wù)2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構(gòu)造一個(gè)簡單的Web服務(wù)器109用UDP進(jìn)行套接字編程UDP:客戶和服務(wù)器之間沒有連接沒有初始握手階段發(fā)送方明確將接收方的IP地址和端口號(hào)加入每個(gè)分組(1批字節(jié)+頭部)服務(wù)器必須從接收到的分組中析取發(fā)送方進(jìn)程的IP地址,端口號(hào)UDP:發(fā)送數(shù)據(jù)可能被亂序收到或丟失UDP在客戶和服務(wù)器之間提供一組字節(jié)(“datagrams”)的不可靠傳輸
從應(yīng)用程序的角度來看110UDP客戶/服務(wù)器套接字交互流程:關(guān)閉clientSocketServer(在hostid上運(yùn)行)從clientSocket讀應(yīng)答創(chuàng)建套接字clientSocket=DatagramSocket()客戶機(jī)創(chuàng)建地址(hostid,port=x)使用clientSocket發(fā)送數(shù)據(jù)報(bào)請(qǐng)求對(duì)入請(qǐng)求創(chuàng)建套接字port=xserverSocket=DatagramSocket()從serverSocket讀請(qǐng)求向serverSocket寫應(yīng)答指定客戶機(jī)主機(jī)地址、端口號(hào)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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地板銷售薪酬管理制度
- 公司財(cái)產(chǎn)衣服管理制度
- 制定對(duì)外捐贈(zèng)管理制度
- 商管公司獎(jiǎng)懲管理制度
- 工廠焊絲倉庫管理制度
- 醫(yī)院病區(qū)清潔管理制度
- 辦公場所照明管理制度
- 單位消防值班管理制度
- 培訓(xùn)手冊(cè)發(fā)放管理制度
- 宿舍串門日常管理制度
- 外賣騎手勞務(wù)合同協(xié)議書
- T/CAMIR 002-2022企業(yè)技術(shù)創(chuàng)新體系建設(shè)、管理與服務(wù)要求
- DB31/T 595-2021冷庫單位產(chǎn)品能源消耗指標(biāo)
- 第五章 SPSS基本統(tǒng)計(jì)分析課件
- 2025年計(jì)算機(jī)Photoshop操作實(shí)務(wù)的試題及答案
- 2025時(shí)事熱點(diǎn)政治題及參考答案(滿分必刷)
- GB/T 23453-2025天然石灰石建筑板材
- 2024-2030全球WiFi 6移動(dòng)熱點(diǎn)行業(yè)調(diào)研及趨勢分析報(bào)告
- 砌磚理論考試題及答案
- 中醫(yī)針灸治療腦梗塞后遺癥的應(yīng)用實(shí)踐
- 2025年高等數(shù)學(xué)期末考試試題及答案
評(píng)論
0/150
提交評(píng)論