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

下載本文檔

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

文檔簡介

1第二章應用層Chapter2ApplicationLayerComputerNetworking

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

Writingprogramsthatrunondifferentendsystemsandcommunicatewitheachotheroverthenetwork

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

發起通信的進程服務器進程:

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

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

2Portnumber:

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

接收和發送進程間流量控制:

發送方不會淹沒接收方擁塞控制:

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

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

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

瀏覽器browser請求接收解釋并顯示Web對象server:Web服務器響應請求,發送Web對象協議版本HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse24HTTP概述(續)使用TCP:客戶發起TCP連接:客戶初始化一個與HTTP服務器80端口的TCP連接服務器接收并建立TCP連接:HTTP服務器接收來自客戶的TCP連接請求,建立連接交換HTTP消息:Browser(HTTPclient)和Web服務器(HTTPserver)交換HTTP消息(應用層協議消息),包括HTTP請求和響應消息結束:最后結束(或叫關閉)TCP連接HTTP是無狀態協議HTTP服務器不維護客戶先前的狀態信息維護狀態的協議非常復雜!必須維護過去歷史(狀態信息)如果server/client崩潰,它們各自的狀態視圖可能不一致。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傳輸文件的時間發起TCP連接RTT請求文件RTT接收整個文件客戶機的時間服務器的時間27(1).非持久HTTP連接假設用戶輸入URL

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

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

2.

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

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

以上例子需11次TCP連接持久HTTP連接服務器發送響應消息后保持連接同1客戶/服務器的后續HTTP消息繼續在該連接上傳送以上例子需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版本回車換行指示結束32方法類型HTTP/1.0GET請求一個對象POST用戶提交表單HEAD服務器收到請求時,用HTTP報文進行響應,但不返回請求對象應用程序開發者常用來故障跟蹤HTTP/1.1GETPOSTHEADPUT文件在實體主體中被上載到URL字段指定的路徑DELETE刪除URL字段指定的文件33上載表單(各字段)輸入值Post方法:網頁時常包含表單輸入輸入值在請求報文的實體主體中被上載到服務器URL方法:使用GET方法表單(各字段)輸入值被上載,以URL請求行的字段:/animalsearch?monkeys&banana341.HTTP響應報文狀態碼短語spcrlfsp版本值spcrlf首部字段名:值spcrlf首部字段名:crlf狀態行首部行空行實體主體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...狀態行(版本、狀態編碼、短語)首部行數據,e.g.,被請求的HTML文件36HTTP響應的狀態碼200OK請求成功,所請求信息在響應消息中返回301MovedPermanently所請求的對象已永久遷移,新的URL在本響應消息的(location:)頭部指出400BadRequest該請求不能被服務器解讀404NotFound服務器上不存在所請求文檔505HTTPVersionNotSupported位于服務器響應報文的第一行幾個常見的樣本狀態碼:372.2.4用戶與服務器交互:CookiesHTTP服務器是無狀態的優點在于:簡化服務器設計,可同時處理數以千計的TCP鏈接,提高了Web服務器的處理性能無狀態HTTP服務器無法識別用戶,難以實現:限制用戶的訪問跟蹤用戶的訪問為此,RF2109定義了Cookie38用戶與服務器交互:CookiesCookies的4個重要方面:1)cookie首部行-在HTTP響應報文中2)cookie首部行-在HTTP請求報文中3)cookie文件-保存在用戶主機中并被用戶瀏覽器管理4)cookie-保存在Web站點的后端數據庫39舉例:李四總是使用同臺PC訪問Internet他首次訪問1個電子商務網站當他最初發出HTTP請求訪問該站點時,該站點創建一個唯一的ID,并在后端數據庫創建一個該ID表項40Cookies:跟蹤用戶(續.)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:41Cookies:跟蹤用戶(續.)Cookies可以帶來什么?身份認證虛擬購物車(跟蹤用戶購買的物品)推薦廣告用戶會話狀態(Webe-mail)Cookies和隱私:cookies允許網站更加了解你你可以提供名字和e-mail給網站補充422.2.5Web緩存(代理服務器)WebCache(ProxServer):anetworkentitythatsatisfiesHTTPrequestsonthebehalfofanoriginWebserver用戶配置瀏覽器:Web訪問經由代理服務器所有HTTP請求指向緩存若對象在緩存中,緩存器返回對象否則,緩存器向起始服務器發出請求,接收對象后再轉發給客戶機客戶機代理服務器客戶機HTTP請求HTTP請求HTTP響應HTTP響應HTTP請求HTTP響應起始服務器起始服務器HTTP請求HTTP響應43為何使用Web緩存?減少客戶請求的響應時間減少機構接入鏈路的擁塞加強網絡內容提供商的內容分發能力originserverspublicInternetinstitutionalnetwork10MbpsLAN1.5Mbpsaccesslinkinstitutionalcache43Web緩存同時作用于客戶端和服務器端典型緩存器由ISP安裝(university,company,residentialISP)注:44緩存器舉例假設對象平均長度=1Mbits機構內的瀏覽器對對象的平均訪問速率=15個對象請求/sec因特網時延=2sec結論局域網上的流量強度:15*1M/100Mbps=0.15鏈路上的流量強度:15*1M/15M=1總延時=因特網時延+接入時延+局域網時延

=2秒+數分鐘+數毫秒起始服務器公共

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

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

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

Internet機構網絡10MbpsLAN1.5Mbps接入鏈路機構緩存器47結論方案二比方案一的響應時延更低方案二不需升級因特網的接入鏈路購買和安裝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應用層協議原理2.2Web應用和HTTP協議2.3文件傳輸協議:FTP

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

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

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

21TCP數據連接端口

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

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

(取(gets)文件)STORfilename

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

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

1.郵箱mailbox

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

message

queue3.郵件協議用在郵件服務器之間發送郵件useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP593.電子郵件:SMTP協議[RFC5321]

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

狀態碼及其短語郵件消息必須是7-bitASCII60例子:Alice發送郵件消息到Bob1)Alice使用用戶代理編寫郵件消息(給bob@的)2)Alice的用戶代理發送郵件消息到她的郵件服務器;郵件消息存放在郵件消息隊列3)Alice郵件服務器的SMTP客戶端發起建立一個到Bob的郵件服務器的SMTP服務器端的TCP連接.4)SMTP客戶在這個TCP連接上發送Alice的郵件消息5)Bob服務器存放郵件消息存到Bob的郵箱6)Bob調用他的用戶代理讀郵件消息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:總結SMTP使用持久連接SMTP要求郵件消息(header&body)必須是7-bitASCIISMTP服務器使用CRLF.CRLF

來判斷郵件消息的結束與HTTP的比較:相同點:在主機間傳輸文件持久連接ASCII命令/應答交互,狀態碼不同點:HTTP:拉協議(Pull),SMTP:推協議(Push)SMTP要求7-bitASCII編碼,HTTP無此要求HTTP每個對象封裝在各自HTTP響應消息中;SMTP的各個對象置于同一個郵件消息中發送63郵件消息的格式RFC822定義文本郵件消息格式標準:信頭-頭部行。如:To:From:Subject:信體郵件消息也必須是ASCII字符headerbodyblankline64MIME引入RFC822描述只適合普通ASCII文本對多媒體報文(如圖片、音視頻)或非ASCII文本格式(如非英語語言字符)的報文處理無法滿足RFC2045,2046定義了RFC822的擴展MIME:MultipurposeInternetmailExtensions(多用途因特網郵件擴展)65MIME頭部格式增添額外的兩個關鍵信頭聲明:content-typecontent-transfer-encodingFrom:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata

base64encodeddata

多媒體數據類型名,子類型名,參數聲明用來編碼數據的方法MIME版本編碼后的數據66郵件訪問協議郵件訪問協議:從服務器獲取郵件消息POP:PostOfficeProtocol郵局協議[RFC1939]110端口號身份認證(代理<-->服務器),下載郵件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更復雜!)允許用戶像對待本地郵箱那樣操縱遠程郵箱的郵件基于Web的電子郵件,比如Yahoo,Google等useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver67POP3協議:第三版POP協議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應用層協議原理2.2Web應用和HTTP協議2.3文件傳輸協議:FTP2.4因特網中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構造一個簡單的Web服務器69DNS:域名系統DomainNameSystem人可以有很多標識:ID,name,passport主機和路由器標識:IPaddress(32bit)–

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

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

DomainNameSystem域名系統(DNS)分布式數據庫:一個由分層DNS服務器實現的分布式數據庫應用層協議:DNS服務器實現域名轉換的應用層協議(域名/地址轉換)DNS協議運行在UDP之上,使用53號端口702.5.1DNS提供的服務DNS服務器提供的服務:1.主機名到IP地址的轉換2.主機別名一個主機可以有一個規范主機名和多個主機別名比如,名為的主機,可能有別名或3.郵件服務器別名比如,是郵件服務器,Bob的郵箱可以是簡單的bob@4.負載分配DNS實現冗余服務器:一個IP地址集合可以對應于同一個規范主機名。712.5.2DNS工作原理DNS采用分布式,為什么不集中式?單點故障如果DNS服務器崩潰,則整個Internet隨之癱瘓通信容量單個DNS服務器為上億臺主機服務遠距離集中式數據庫導致嚴重時延維護中央數據庫非常龐大,需維護所有主機記錄完全沒有可擴展能力72舉例:分布式、層次結構根DNS服務器comDNS服務器orgDNS服務器eduDNS服務器DNS服務器DNS服務器DNS服務器DNS服務器DNS服務器客戶機怎樣決定主機名的IP地址?客戶機查詢根服務器得到comDNS服務器客戶機查詢comDNS服務器得到DNS服務器客戶機查詢DNS服務器得到的IP地址頂級域服務器權威服務器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三、權威DNS服務器權威DNS服務器在因特網上,具有公共可訪問主機(如Web服務器和郵件服務器)的每個組織機構必須提供公共可訪問的DNS記錄,這些記錄將可訪問主機的名字映射為IP地址。組織機構的權威DNS服務器負責保存這些DNS記錄。多數大學和公司維護它們的基本權威DNS服務器76特殊DNS:本地DNS服務器本地DNS服務器也叫默認名字服務器,Defaultnameserver嚴格來說,本地DNS服務器不屬于DNS服務器的層次結構每個ISP(如居民區ISP、公司、大學)都有一臺本地DNS當主機發出DNS請求時,該請求被發往本地DNS服務器本地DNS服務器起著代理的作用,轉發請求到層次結構中77四類服務器交互查詢請求主機客戶機根DNS服務器本地域名服務器123456權威DNS服務器78頂級域服務器78DNS查詢方法一遞歸查詢:名字解析的負擔交給被查詢的DNS服務器被查詢的DNS服務器負載重requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver379requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查詢方法二迭代查詢:被查詢的DNS服務器回復下一層可以被查詢的DNS服務器的IP地址80DNS緩存和記錄更新為改善時延性能和減少Internet上DNS報文數量,引入DNS緩存(DNScaching)一旦DNS服務器獲得DNS映射,它將緩存該映射到本地存儲器服務器在一定時間后將丟棄緩存的信息本地DNS服務器可以緩存TLD服務器的IP地址,因此根DNS服務器不會被經常訪問812.5.3DNS記錄和報文DNS:

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

83DNS協議,消息DNS協議:

查詢報文與應答報文

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

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

回答部分對于查詢,應答的資源記錄可以多個資源記錄,由于可以有多個IP地址權威部分權威名字服務器的其他資源記錄附加信息部分其他有幫助的記錄.附加信息(資源記錄的變量數)權威(資源記錄的變量數)回答(資源記錄的變量數)問題(問題的變量數)附加RR數權威RR數回答RR數問題數標志標識符12字節85在DNS數據庫中插入記錄例:剛剛創建一個“網絡”公司如果你想在注冊登記機構注冊你的域名,則需要提供你自己的權威DNS服務器名字和IP地址該注冊登記機構將下列兩條資源記錄插入注冊機構的DNS系統中:(,,NS)(,,A)如果你想建立一個網站,則可以將網址以類型A的方式記錄到你的權威DNS服務器中。如果你想建一個郵件服務器,則可以將以類型MX的方式記錄到你的權威DNS服務中。86第二章:應用層2.1應用層協議原理2.2Web應用和HTTP協議2.3文件傳輸協議:FTP2.4因特網中的電子郵件SMTP,POP3,IMAP2.5DNS:因特網的目錄服務2.6P2P文件共享2.7TCP套接字編程2.8UDP套接字編程2.9構造一個簡單的Web服務器87P2P文件共享舉例Alice在家用PC上運行一個P2P文件共享應用軟件每次重新連接因特網時,得到新的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:集中式目錄的問題單點故障性能瓶頸侵犯版權

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

查詢報文在已有的TCP連接上發送對等方轉發報文

QueryHit

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

學會如何開發采用套接字通信的C/S網絡應用程序。

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

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

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

(詳見第三章)TCP為客戶和服務器提供了可靠的,順序的,字節流的傳輸(“管道”)。從應用程序的角度來看用TCP進行套接字編程(續)101流(Stream)的概念流是流入或流出一個進程的一串字符.輸入流被加在進程的某個輸入源上,eg,標準輸入(鍵盤)或套接字.輸出流被加在進程的某個輸出源上,eg,標準輸出(顯示器)或套接字.102客戶機/服務器應用程序示例:1)客戶從它的標準輸入讀入一行(inFromUserstream),將該行發送到通往服務器的套接字(outToServerstream)2)服務器從它的連接套接字讀入一行3)服務器將該行轉換成大寫,然后送回客戶機4)服務器將修改后的行通過其連接套接字再發回給客戶機5)客戶從它的套接字中讀取、輸出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字編程103TCP客戶/服務器套接字交互流程:等待入連接請求connectionSocket=welcomeSocket.accept()對入請求創建套接字,port=xwelcomeSocket=ServerSocket()創建與hostid,port=x連接的套接字clientSocket=Socket()關閉connectionSocket從clientSocket讀應答關閉clientSocket服務器(在hostid上運行)客戶機使用clientSocket發送請求讀請求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類包含網絡支持類程序用到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客戶程序示例(續)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編寫的服務程序示例(續)DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());

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

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

從應用程序的角度來看110UDP客戶/服務器套接字交互流程:關閉clientSocketServer(在hostid上運行)從clientSocket讀應答創建套接字clientSocket=DatagramSocket()客戶機創建地址(hostid,port=x)使用clientSocket發送數據報請求對入請求創建套接字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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論