Ch02-應(yīng)用層(2011).ppt_第1頁
Ch02-應(yīng)用層(2011).ppt_第2頁
Ch02-應(yīng)用層(2011).ppt_第3頁
Ch02-應(yīng)用層(2011).ppt_第4頁
Ch02-應(yīng)用層(2011).ppt_第5頁
已閱讀5頁,還剩104頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

應(yīng)用層,第2章,探索上網(wǎng)、傳送文件、收發(fā)郵件等常見網(wǎng)絡(luò)應(yīng)用之謎,內(nèi)容領(lǐng)航,應(yīng)用層基本概念 域名解析與DNS協(xié)議 Web應(yīng)用與HTTP協(xié)議 文件傳送與FTP協(xié)議 電子郵件與SMTP、POP3協(xié)議 遠(yuǎn)程登錄與telnet協(xié)議 套接字編程初步,應(yīng)用層的特點(diǎn),內(nèi)容豐富 因特網(wǎng)可以為用戶提供各種不同的應(yīng)用,每一種應(yīng)用都有自己的應(yīng)用層協(xié)議,所以應(yīng)用層的協(xié)議非常多。 面向應(yīng)用 應(yīng)用層協(xié)議離用戶最近,直接為用戶服務(wù)。 應(yīng)用層協(xié)議一般只關(guān)注特定應(yīng)用中信息如何交互,而很少關(guān)心信息的傳送細(xì)節(jié)。,如何構(gòu)建一個(gè)網(wǎng)絡(luò)應(yīng)用?,網(wǎng)絡(luò)應(yīng)用往往涉及兩個(gè)進(jìn)程,它們通過網(wǎng)絡(luò)進(jìn)行通信。 進(jìn)程(Process):主機(jī)中動(dòng)態(tài)運(yùn)行的程序 同一主機(jī)的進(jìn)程間通信:進(jìn)程間通信(IPC) 不同主機(jī)的進(jìn)程間通信:消息傳遞 如何構(gòu)建和部署一個(gè)新的網(wǎng)絡(luò)應(yīng)用? 位于網(wǎng)絡(luò)兩端的兩個(gè)程序以何種方式互相通信?,客戶/服務(wù)器模式,客戶/服務(wù)器模式是網(wǎng)絡(luò)應(yīng)用程序的主要通信模式。 服務(wù)器 提供服務(wù)的進(jìn)程 一直保持運(yùn)行狀態(tài),隨時(shí)準(zhǔn)備接受請(qǐng)求。 地址固定 客戶 請(qǐng)求服務(wù)的進(jìn)程 需要時(shí)運(yùn)行,可以向服務(wù)器發(fā)送請(qǐng)求。 地址可變,數(shù)據(jù)鏈路層,物理層,運(yùn)輸層,網(wǎng)絡(luò)層,數(shù)據(jù)鏈路層,物理層,運(yùn)輸層,網(wǎng)絡(luò)層,應(yīng)用層,應(yīng)用層,因特網(wǎng),計(jì)算機(jī)A,計(jì)算機(jī)B,套接字(socket),進(jìn)程通過它的套接字在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)。,如何為進(jìn)程編址?,IP地址 唯一標(biāo)識(shí)一臺(tái)因特網(wǎng)的主機(jī) 32位二進(jìn)制數(shù) 端口號(hào) 唯一標(biāo)識(shí)主機(jī)中的一個(gè)進(jìn)程 16位二進(jìn)制數(shù) 套接字就是利用IP地址和端口號(hào)的組合來標(biāo)識(shí)的。,進(jìn)一步討論端口號(hào),端口是應(yīng)用進(jìn)程的標(biāo)識(shí) 本質(zhì)上是在運(yùn)輸層首部的一個(gè)字段的值,有TCP端口號(hào)和UDP端口號(hào)兩種。 端口占兩個(gè)字節(jié),范圍是065535 01023為保留使用的端口號(hào)(熟知端口號(hào)),通常分配給相關(guān)應(yīng)用的服務(wù)器進(jìn)程 HTTP:80 DNS:53 SMTP:25 POP:110 102465535為用戶進(jìn)程可以使用的動(dòng)態(tài)分配的臨時(shí)端口號(hào) 試問:為什么不使用操作系統(tǒng)的進(jìn)程號(hào)來標(biāo)識(shí)網(wǎng)絡(luò)進(jìn)程?,IP地址與端口號(hào)圖示,客戶端A向服務(wù)器B端請(qǐng)求網(wǎng)頁,源端口隨機(jī)從可用端口取,目標(biāo)端口為80,C打開兩個(gè)瀏覽器,向B發(fā)送兩個(gè)網(wǎng)頁請(qǐng)求,常用應(yīng)用程序?qū)鬏敼δ艿囊?應(yīng)用程序 文件傳輸 e-mail Web 網(wǎng)頁 實(shí)時(shí)音頻/視頻 存儲(chǔ)音頻/視頻 交互式游戲 金融應(yīng)用,數(shù)據(jù)丟失 不丟失 不丟失 不丟失 允許丟失 允許丟失 允許丟失 允許丟失 不丟失,帶寬 彈性 彈性 彈性 音頻: 5Kb-1Mb 視頻:10Kb-5Mb 同上 幾 Kb/s 以上 彈性,實(shí)時(shí)性 無 無 無 100s msec few secs 100s msec yes and no,Internet 的傳輸協(xié)議提供的服務(wù),TCP 提供的服務(wù):可靠 面向連接:在客戶端和服務(wù)器進(jìn)程之間需要建立連接,可靠傳輸 流量控制:通過限制發(fā)送方的發(fā)送速度使接收方有能力接收 擁塞控制:當(dāng)網(wǎng)絡(luò)超負(fù)荷時(shí),減少發(fā)送速度 不提供:實(shí)時(shí)性,最小帶寬承諾 UDP服務(wù):速度快,不可靠 不提供:連接建立,可靠性保證,流量控制,擁塞控制,實(shí)時(shí)性,最小帶寬承諾,因特網(wǎng)應(yīng)用對(duì)傳輸協(xié)議的選擇,應(yīng)用 e-mail 遠(yuǎn)程終端訪問 Web 文件傳輸 流媒體 網(wǎng)絡(luò)文件服務(wù)器 IP電話,應(yīng)用協(xié)議 smtp RFC 821 telnet RFC 854 http RFC 2068 ftp RFC 959 專有協(xié)議 (e.g. RealNetworks) NSF 專有協(xié)議 (e.g., Vocaltec),使用的傳輸層協(xié)議 TCP TCP TCP TCP TCP or UDP TCP or UDP typically UDP,DNS域名解析系統(tǒng)(RFC1034,1035),2.的IP地址是1,ISP2,DNS服務(wù)器,3.這下我知道江西師大的IP地址了,我可以請(qǐng)求網(wǎng)頁了,1.請(qǐng)問的IP地址是多少?,從Hosts文件到DNS,早期Hosts文件解析主機(jī)名 主機(jī)名稱重復(fù) 名稱解析效能下降 更新維護(hù)困難 DNS服務(wù) 層次性域名 分布式服務(wù),域名空間結(jié)構(gòu),根域 頂級(jí)域 組織域 國家或地區(qū)域 反向域 二級(jí)域 主機(jī)名 FQDN(Fully Qualified Domain Name):全域名,cn,com,edu,edu,ncu,jxnu,cs,ma,en,com,jxnu,,,,,,頂級(jí)域名服務(wù)器,本地域名服務(wù)器 也是的授權(quán)域名服務(wù)器,.,cn,uk,根域名服務(wù)器,二級(jí)域名服務(wù)器,dns.root,主機(jī),域名服務(wù)器,DNS查詢過程,DNS客戶機(jī),本地域名服務(wù)器,根DNS服務(wù)器,cn,,,2,3,4,6,7,1,遞歸查詢,迭代查詢,Web服務(wù)器,5,,DNS查詢類型,從查詢方式上分 遞歸查詢 要么做出查詢成功響應(yīng),要么作出查詢失敗的響應(yīng) 迭代查詢 若有可能,返回下一級(jí)DNS服務(wù)器的IP地址 從查詢內(nèi)容上分 正向查詢由域名查找IP地址 反向查詢由IP地址查找域名,DNS的進(jìn)一步討論,問題:每次訪問網(wǎng)頁前進(jìn)行的DNS請(qǐng)求都按前述步驟進(jìn)行,會(huì)出現(xiàn)哪些不利因素? 性能瓶頸 效率低下 怎樣克服上述不利因素? 高速緩存機(jī)制,DNS的高速緩存,高速緩存機(jī)制 客戶端短期內(nèi)會(huì)將DNS映射緩存 DNS服務(wù)器從上級(jí)DNS服務(wù)器獲得的DNS映射會(huì)緩存 緩存的映射必須有生存時(shí)間 問題:緩存機(jī)制帶來的都是好處嗎? 導(dǎo)致有時(shí)無法及時(shí)獲得更新的DNS映射 導(dǎo)致DNS的負(fù)載均衡部分失效,域名解析順序,解析域名順序 本機(jī)DNS緩存 本機(jī)Hosts文件 DNS服務(wù)器 本機(jī)DNS緩存 Ipconfig /displaydns Ipconfig /flushdns 本機(jī)Hosts文件 Hosts文件%SystemRoot%system32driversetchosts,DNS的資源記錄(Resource Record),name:域名,value:根據(jù)type的不同意義不同,RR類型: type value A 域名對(duì)應(yīng)的IP地址 NS 域名對(duì)應(yīng)的授權(quán)域名服務(wù)器名稱 CNAME 域名對(duì)應(yīng)的別名 MX 域名對(duì)應(yīng)的郵件服務(wù)器的名稱,ttl:該記錄在緩存中能停留的時(shí)間,0表示不能緩存,class: RR的類別代碼,默認(rèn)為0001,表示因特網(wǎng),DNS的報(bào)文格式,事務(wù)標(biāo)識(shí)號(hào),標(biāo)記(報(bào)文類型):如標(biāo)記請(qǐng)求還是響應(yīng),問題的個(gè)數(shù),回答RR個(gè)數(shù),授權(quán)域名RR數(shù),附加RR數(shù),問題具體的RR,回答具體的RR,域名對(duì)應(yīng)的授權(quán)域名服務(wù)器相關(guān)RR,附加的具體RRs,標(biāo)記字段詳解,QR,AA,TC,RD,RA,Opcode,Z,RCODE,QR 是1 bit字段:0表示查詢報(bào)文,1表示響應(yīng)報(bào)文。,opcode是一個(gè)4 bit字段:通常值為0(標(biāo)準(zhǔn)查詢),其他值為1(反向查詢)和2(服務(wù)器 狀態(tài)請(qǐng)求)。,AA表示“授權(quán)回答”。該名字服務(wù)器是授權(quán)于該域的。,TC表示“可截?cái)嗟摹?。使用UDP時(shí),它表示當(dāng)應(yīng)答的總長(zhǎng)度超 過512字節(jié)時(shí),只返回前512個(gè)字節(jié)。,RD表示“期望遞歸”。該比特能在一個(gè)查詢中設(shè)置,并在響應(yīng)中返回。,RA表示“可用遞歸”。如果名字服務(wù)器支持遞歸查詢,則在響應(yīng)中將該比特設(shè)置為1。,未用,全為0,rcode字段的值一般為0(沒有差錯(cuò))和3(名字差錯(cuò))。名字差錯(cuò)從一個(gè)授權(quán)名字服務(wù)器上返回,表示在查詢中指定的域名不存在。,實(shí)驗(yàn):DNS的基本操作和協(xié)議分析,實(shí)驗(yàn)?zāi)康? 掌握DNS客戶端的配置方法 通過ping和nslookup觀察DNS的解析過程 掌握使用協(xié)議分析軟件驗(yàn)證分析DNS請(qǐng)求報(bào)文和響應(yīng)報(bào)文的格式 掌握在Windows 2003中搭建DNS服務(wù)器,WWW萬維網(wǎng),www通過網(wǎng)頁的形式訪問站點(diǎn),通過超級(jí)鏈接,鏈接不同的網(wǎng)站不同的頁面,WWW的相關(guān)概念,萬維網(wǎng)采用的是C/S模式 客戶端程序:瀏覽器 如:IE, firefox 服務(wù)器端程序: 如:IIS, Tomcat, Apache Web頁面:即網(wǎng)頁,由文字、圖片、聲音、視頻、超級(jí)鏈接等多種對(duì)象組成,構(gòu)建WWW應(yīng)用需解決哪些問題?,如何唯一標(biāo)識(shí)分布在因特網(wǎng)上的網(wǎng)頁及其中包含的各種對(duì)象? 統(tǒng)一資源定位符 URL (Uniform Resource Locator) URL格式:,:/:/,ftp:文件傳送協(xié)議 http: 超文本傳送協(xié)議, 是存放資源的主機(jī) 在因特網(wǎng)中的域名或IP地址,端口根據(jù)協(xié)議有默認(rèn)值,如http為80端口,默認(rèn)端口可以省略; 路徑是文件在主機(jī)中的相對(duì)位置,當(dāng)路徑省略時(shí)自動(dòng)打開默認(rèn)文檔,構(gòu)建WWW應(yīng)用需解決哪些問題?,客戶端如何從服務(wù)器端得到網(wǎng)頁及相關(guān)對(duì)象? 超文本傳送協(xié)議 HTTP (Hyper Text Transfer Protocol),使用TCP作為傳輸層,默認(rèn)端口號(hào)80 如何表示和顯示包含鏈接、圖片等多種信息的網(wǎng)頁? 超文本標(biāo)記語言 HTML (Hyper Text Markup Language) 怎樣使用戶能夠很方便地找到所需的信息? 搜索引擎SE(Search Engine) 如:,,HTTP協(xié)議,Web服務(wù)器,HTTP請(qǐng)求報(bào)文:給我某個(gè)頁面吧,HTTP響應(yīng)報(bào)文:我有這個(gè)頁面,給你,瀏覽器,輸入網(wǎng)址后發(fā)生了什么?,1.客戶端瀏覽器向DNS服務(wù)器請(qǐng)求的IP地址,3.服務(wù)器收到請(qǐng)求,向客戶端提供所需的網(wǎng)頁,2.瀏覽器獲得IP地址,向Web服務(wù)器建立TCP連接,不斷發(fā)送頁面對(duì)象請(qǐng)求。,4.客戶端獲得頁面對(duì)象后斷開TCP連接,HTTP1.0(RFC1945)的工作過程,Web服務(wù)器,瀏覽器,第一階段:TCP建立連接階段,第三階段:斷開TCP連接,依次請(qǐng)求頁面鏈接的對(duì)象,。,第二階段:獲取頁面文檔階段,斷開TCP連接,客戶端分析頁面的鏈接對(duì)象,依次建立新的TCP連接,獲取頁面鏈接的對(duì)象,如圖片,動(dòng)畫等,HTTP1.0的性能討論,非持續(xù)連接(Non-persistent):使用多條TCP連接獲取對(duì)象(http1.0默認(rèn)使用的方式) 獲得對(duì)象需要2 RTTs 每次傳送都要受到TCP初始化時(shí)的慢啟動(dòng)影響 瀏覽器同時(shí)打開多個(gè)并行的連接來改善性能 非流水線作業(yè)方式 完整收到每個(gè)對(duì)象后才發(fā)送對(duì)下一個(gè)對(duì)象的請(qǐng)求 討論:怎樣改進(jìn)HTTP1.0的性能?,改進(jìn)版:HTTP1.1(RFC2616),瀏覽器,第一階段:TCP建立連接階段,第三階段:在同一個(gè)TCP上依次請(qǐng)求頁面鏈接的對(duì)象,。,第二階段:獲取頁面文檔階段,客戶端分析頁面的連接對(duì)象,在同一個(gè)TCP連接上連續(xù)發(fā)送多個(gè)頁面鏈接的對(duì)象的請(qǐng)求,如圖片,動(dòng)畫等,逐漸接收對(duì)象,HTTP1.1的特點(diǎn),持續(xù)連接(Persistent):多個(gè)對(duì)象共享同一條TCP連接(http/1.1的默認(rèn)設(shè)置) 客戶端一旦下載到了基本的html文件(base HTML),馬上發(fā)送對(duì)所有網(wǎng)頁引用對(duì)象的請(qǐng)求 較少的RTTs, 較少的慢啟動(dòng) 流水線作業(yè)方式 沒有收到上一個(gè)請(qǐng)求的對(duì)象就發(fā)送對(duì)新的對(duì)象的請(qǐng)求,HTTP請(qǐng)求報(bào)文的格式,HTTP請(qǐng)求報(bào)文一般不需要數(shù)據(jù),注意:HTTP協(xié)議首部使用ASCII碼作為編碼方式,HTTP請(qǐng)求報(bào)文的格式,常見的HTTP請(qǐng)求的方法: OPTION 請(qǐng)求一些選項(xiàng)的信息 GET 請(qǐng)求讀取由URL所標(biāo)志的信息 HEAD 請(qǐng)求讀取由URL所標(biāo)志的信息的首部 POST 給服務(wù)器添加信息(例如,注釋) PUT 在指明的URL下存儲(chǔ)一個(gè)文檔 DELETE 刪除指明的URL所標(biāo)志的資源 TRACE 用來進(jìn)行環(huán)回測(cè)試的請(qǐng)求報(bào)文 CONNECT 用于代理服務(wù)器 首部字段名定義了一些雙方協(xié)商的參數(shù),如客戶端瀏覽器的類型,允許接收的數(shù)據(jù)類型,允許接收的語言,使用的編碼方式等,HTTP響應(yīng)報(bào)文的格式,HTTP響應(yīng)報(bào)文的數(shù)據(jù)一般就是客戶端請(qǐng)求的頁面內(nèi)容,HTTP響應(yīng)報(bào)文的格式,響應(yīng)報(bào)文的開始行是狀態(tài)行,它包括: HTTP 的版本 狀態(tài)碼(3位數(shù)字) 解釋狀態(tài)碼的簡(jiǎn)單短語 常見的狀態(tài)碼: 1xx 表示通知信息的,如請(qǐng)求收到了或正在進(jìn)行處理。 2xx 表示成功,如接受或知道了。 3xx 表示重定向,表示要完成請(qǐng)求還必須采取進(jìn)一步的行動(dòng)。 4xx 表示客戶的差錯(cuò),如請(qǐng)求中有錯(cuò)誤的語法或不能完成。 5xx 表示服務(wù)器的差錯(cuò),如服務(wù)器失效無法完成請(qǐng)求。,狀態(tài)碼及狀態(tài)信息舉例,200 OK 請(qǐng)求成功,請(qǐng)求的對(duì)象在這個(gè)報(bào)文后面 301 Moved Permanently 請(qǐng)求的對(duì)象已轉(zhuǎn)移,新的URL在響應(yīng)報(bào)文的Location:首部行中指定 400 Bad Request 請(qǐng)求報(bào)文不為服務(wù)器理解 404 Not Found 請(qǐng)求的文檔沒有在該服務(wù)器上發(fā)現(xiàn) 505 HTTP Version Not Supported 請(qǐng)求的HTTP版本不被支持,WWW的性能討論,企業(yè)網(wǎng),Web服務(wù)器,Internet,瀏覽器,R1,R2,企業(yè)網(wǎng)多個(gè)用戶需要訪問同一個(gè)Web服務(wù)器,Internet鏈路負(fù)載和時(shí)延都很大,試問:如何提高客戶端訪問效率,并減少Internet鏈路的流量和Web服務(wù)器的負(fù)載?,使用Web緩存,企業(yè)網(wǎng),Web服務(wù)器,Internet,瀏覽器,R1,R2,增加一個(gè)Web高速緩存代理服務(wù)器,緩存頁面,1.內(nèi)網(wǎng)瀏覽器首次發(fā)送請(qǐng)求數(shù)據(jù)給Web服務(wù)器,2.Web服務(wù)器發(fā)送頁面,3.頁面進(jìn)入內(nèi)網(wǎng)會(huì)保存一份副本到代理服務(wù)器的緩存中,高速緩存 (代理服務(wù)器),4.其余內(nèi)網(wǎng)用戶需訪問同一Web頁面,會(huì)首先訪問代理服務(wù)器,試問:如何保證代理服務(wù)器的頁面與Web服務(wù)器的相關(guān)最新頁面一致?,條件GET方法,代理服務(wù)器收到的HTTP響應(yīng)報(bào)文,記錄頁面的最后修改時(shí)間,代理服務(wù)器發(fā)送給Web服務(wù)器的HTTP請(qǐng)求報(bào)文,判斷頁面是否有更新,HTTP響應(yīng) HTTP/1.0 200 OK ,未修改,已修改,緩存的效能舉例,假定 平均對(duì)象長(zhǎng)度 = 100kb 來自機(jī)構(gòu)的瀏覽器的 平均請(qǐng)求 = 15次/s 從機(jī)構(gòu)路由器到服務(wù)器 并返回的平均時(shí)延= 2 s 結(jié)果 LAN帶寬利用率 = 15% 接入鏈路流量強(qiáng)度 = 1 總時(shí)延 = 因特網(wǎng)時(shí)延 + 接入排隊(duì)時(shí)延 + LAN時(shí)延 = 2 s + 分鐘 + 毫秒,服務(wù)器,公共因特網(wǎng),機(jī)構(gòu)網(wǎng)絡(luò),10 Mbps LAN,1.5 Mbps 接入鏈路,解決方案1:提高接入帶寬,措施 將訪問鏈路的帶寬提高 到10 Mbps 結(jié)果 LAN帶寬利用率 = 15% 接入鏈路流量強(qiáng)度= 0.15 總時(shí)延 = 因特網(wǎng)時(shí)延 + 接入排隊(duì)時(shí)延 + LAN時(shí)延 = 2 s + 毫秒 + 毫秒 通常升級(jí)費(fèi)用可觀,服務(wù)器,公共因特網(wǎng),機(jī)構(gòu)網(wǎng)絡(luò),10 Mbps LAN,10 Mbps 接入鏈路,解決方案2:設(shè)置緩存服務(wù)器,假定 Web緩存的命中率是0.4 結(jié)果 40%請(qǐng)求將幾乎立即得到滿足 60%請(qǐng)求由起始服務(wù)器 滿足 接入鏈路的流量強(qiáng)度減少到0.6, 產(chǎn)生可忽略不計(jì)的時(shí)延 總平均時(shí)延= 因特網(wǎng)時(shí)延 + 接入排隊(duì)時(shí)延 + LAN時(shí)延 = 0.6*(2.01s) + 0.4*(0.01s) = 1.21 s 時(shí)延更短 成本更低,服務(wù)器,公共因特網(wǎng),機(jī)構(gòu)網(wǎng)絡(luò),10 Mbps LAN,1.5 Mbps 接入鏈路,機(jī)構(gòu)緩存服務(wù)器,一般情況下,流量強(qiáng)度小于0.8時(shí)排隊(duì)時(shí)延比較小,HTTP的無狀態(tài)性,HTTP是“無狀態(tài)的” 服務(wù)器不保留有關(guān)客戶機(jī)過去請(qǐng)求的任何信息。,試問:服務(wù)器如何維護(hù)用戶登錄名和密碼信息,保證用戶下次訪問不需要再次登錄?,Cookie的奧妙,Cookie文件名,文件內(nèi)容,HTTP請(qǐng)求報(bào)文攜帶cookie內(nèi)容,使用Cookie保存信息,實(shí)驗(yàn):構(gòu)建Web服務(wù)與Http協(xié)議分析,實(shí)驗(yàn)?zāi)康模?了解iis的基本配置方法 判斷Http是否加密傳輸? 測(cè)試Http的服務(wù)器監(jiān)聽端口是否必須是80端口 分析持續(xù)連接和非持續(xù)連接,流水線和非流水線 分析Http的請(qǐng)求報(bào)文和響應(yīng)報(bào)文的格式 驗(yàn)證Web緩存,FTP文件傳輸協(xié)議,FTP(file transfer protocol)用于因特網(wǎng)文件傳輸(RFC 959) 使用客戶端/服務(wù)器模式 使用TCP提供可靠的傳輸 FTP屬于維護(hù)狀態(tài)的協(xié)議 FTP使用兩條TCP連接完成數(shù)據(jù)傳輸 數(shù)據(jù)連接:端口20 控制連接:端口21,控制連接與數(shù)據(jù)連接,Internet,控制進(jìn)程,數(shù)據(jù)傳送 進(jìn)程,用戶界面,控制進(jìn)程,數(shù)據(jù)傳送 進(jìn)程,客戶端,服務(wù)器端,控制連接:端口21,數(shù)據(jù)連接:端口20,討論:FTP為什么使用兩條TCP連接,F(xiàn)TP下載文件與HTTP文件下載的方式有何不同?,與FTP服務(wù)器交互,登錄FTP,也可輸入ftp,再用open + IP(域名),服務(wù)器端返回信息(控制連接),用戶名,服務(wù)器端返回信息(控制連接),密碼,客戶端不會(huì)回顯,服務(wù)器端返回信息(控制連接),列出目錄,服務(wù)器端返回信息(控制連接),服務(wù)器FTP共享目錄內(nèi)容( 數(shù)據(jù)連接),服務(wù)器端返回信息(控制連接),進(jìn)入class目錄,下載文件rfc945(ftp).txt,服務(wù)器端返回信息(控制連接),退出FTP,斷開和服務(wù)器的控制連接,服務(wù)器端返回信息(控制連接),FTP協(xié)議分析,服務(wù)器端返回信息(控制連接),客戶端輸入用戶名,服務(wù)器端返回信息(控制連接),客戶端輸入密碼,密碼明文傳輸,分析:客戶端輸入ls命令和get命令后FTP協(xié)議具體通信內(nèi)容,判斷數(shù)據(jù)連接和控制連接,實(shí)驗(yàn):構(gòu)建FTP服務(wù)與FTP協(xié)議分析,實(shí)驗(yàn)?zāi)康模?學(xué)會(huì)構(gòu)建FTP服務(wù)器,學(xué)會(huì)FTP服務(wù)器的配置和FTP客戶端的使用 學(xué)會(huì)使用FTP命令行的方式在FTP客戶端訪問FTP 分析FTP協(xié)議的工作細(xì)節(jié) 分析FTP數(shù)據(jù)連接和控制連接 分析協(xié)議的安全性,電子郵件系統(tǒng),電子郵件系統(tǒng)的組成 用戶代理:電子郵件客戶端軟件,如IE瀏覽器,Outlook,Outlook Express,Foxmail等 郵件服務(wù)器:提供郵件服務(wù)的主機(jī),如163郵件服務(wù)器和 郵件發(fā)送和接收協(xié)議:HTTP,SMTP,POP3等,用 戶 代 理,用 戶 代 理,郵件 服務(wù)器,郵件 服務(wù)器,電子郵件的發(fā)送和接收過程,假設(shè)一個(gè)新浪網(wǎng)的用戶發(fā)送一封郵件到,接收郵件必須由接收端主動(dòng)接收,郵件發(fā)送到目標(biāo)郵件服務(wù)器后便完成發(fā)送,郵件服務(wù)器使用先到先服務(wù)原則發(fā)送郵件到目標(biāo)郵件服務(wù)器,通過IE(HTTP)和郵件代理(SMTP)發(fā)送郵件,發(fā)送方,接收方,SMTP協(xié)議,SMTP(Simple Mail Transfer Protocol):簡(jiǎn)單郵件傳輸協(xié)議 使用TCP可靠的傳送郵件報(bào)文, 服務(wù)器監(jiān)聽端口為25 使用命令/響應(yīng)代碼完成郵件傳輸?shù)目刂平换?命令: ASCII文本 響應(yīng): 狀態(tài)碼和短語 注意:郵件報(bào)文必須使用7-bit ASCII表示,SMTP協(xié)議細(xì)節(jié),發(fā)送方,接收方,三次握手建立TCP連接,討論:SMTP協(xié)議發(fā)郵件不需要認(rèn)證可能帶來的問題,SMTP進(jìn)一步討論,SMTP發(fā)送郵件不認(rèn)證導(dǎo)致垃圾郵件泛濫,ESMTP使得發(fā)送郵件需要認(rèn)證 SMTP使用持續(xù)連接完成郵件的發(fā)送 SMTP協(xié)議只能傳輸ASCII碼,使得郵件只能發(fā)送文本文件 為突破只能發(fā)送文本文件的限制,SMTP使用擴(kuò)展MIME將非文本文件采用Base64或Quoted printable編碼成文本文件 討論:SMTP協(xié)議與HTTP協(xié)議的異同,MIME,MIME(Multipurpose Internet Email Extension):多功能Internet郵件擴(kuò)展 參考RFC 2045,RFC2046,MIME的關(guān)鍵是如何將非ASCII碼轉(zhuǎn)變成ASCII碼,MIME協(xié)議分析,編碼方式:Base64,編碼內(nèi)容,Base64編碼,將三個(gè)Byte的數(shù)據(jù)變成4個(gè)6位的數(shù) 根據(jù)每個(gè)6位二進(jìn)制數(shù)的值查找Base64編碼表,找到對(duì)應(yīng)的字符 用對(duì)應(yīng)的4個(gè)字符來表示原來的三個(gè)字節(jié)的數(shù)據(jù),0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v (pad) = 14 O 31 f 48 w 15 P 32 g 49 x 16 Q 33 h 50 y,Base64編碼表,Base64編碼圖示,編碼效率:75%,Base64編碼舉例,abc 01100001 01100010 01100011 (編碼前:3字節(jié)) 011000 010110 001001 100011 00011000 00010110 00001001 00100011 24 22 09 35 YWJj (編碼后:4字節(jié)) ab 01100001 01100010 011000 010110 001000 (補(bǔ)零) 00011000 00010110 00001000 24 22 08 YWI= a 01100001 011000 010000 (補(bǔ)零) 00011000 00010000 24 16 YQ=,Quote Printable編碼,對(duì)于所有可打印的ASCII碼,除等號(hào)“=”外,都不改變。 對(duì)于等號(hào)“=”和不可打印的ASCII碼以及非ASCII碼(如漢字),將每個(gè)字節(jié)的二進(jìn)制代碼用兩個(gè)十六進(jìn)制數(shù)字表示,然后在前面再加上一個(gè)等號(hào)“=” 例:“系統(tǒng)” 11001111 10110101 11001101 10110011 (編碼前:4字節(jié)) CF B5 CD B3 =CF=B5=CD=B3 (編碼后:12字節(jié)) 例:“=” 00111101 (編碼前:1字節(jié)) 3D =3D (編碼后:3字節(jié)),討論:Base64編碼和Quote Printable編碼的優(yōu)缺點(diǎn)與適用場(chǎng)合。,郵件接收協(xié)議,用戶收取郵件常用的協(xié)議 POP(Post Office Protocol郵局協(xié)議) RFC 1939:服務(wù)器端口默認(rèn)110 IMAP(Internet Mail Access 因特網(wǎng)郵件訪問協(xié)議) Protocol RFC 1730:服務(wù)器默認(rèn)端口143 HTTP,用戶代理或?yàn)g覽器,郵件 服務(wù)器,POP3協(xié)議,認(rèn)證階段: 客戶端命令 服務(wù)器響應(yīng) user: 用戶名 +OK pass: 口令 -ERR,交互階段: 客戶端: list: 列出郵件號(hào)碼 retr: 用郵件號(hào)碼取信 dele:用郵件號(hào)碼刪信 quit,明文發(fā)送密碼,IMAP協(xié)議,IMAP具備和POP一樣的郵件下載功能 IMAP 允許只讀取郵件中的某一個(gè)部分。 IMAP提供操作的三種模式 在線方式:郵件保留在Mail服務(wù)器端,客戶端可以對(duì)其進(jìn)行管理。其使用方式與WebMail相類似 離線方式:郵件保留在Mail客戶端,客戶端可以對(duì)其進(jìn)行管理。其使用方式與POP3相類似 分離方式:郵件的一部分在Mail服務(wù)器端,一部分在客戶端。,實(shí)驗(yàn):構(gòu)建郵件服務(wù)和相關(guān)協(xié)議分析,實(shí)驗(yàn)?zāi)康模?掌握郵件服務(wù)器的構(gòu)建 學(xué)會(huì)Outlook Express等郵件代理的基本配置 分析SMTP協(xié)議 分析POP協(xié)議 分析SMTP和POP的安全性,遠(yuǎn)程登錄與Telnet協(xié)議(RFC854),遠(yuǎn)程登錄:通過網(wǎng)絡(luò)遠(yuǎn)程登錄到其他主機(jī)。 Telnet(Telecommunication Network Protocol)是標(biāo)準(zhǔn)的提供遠(yuǎn)程登錄功能的應(yīng)用,幾乎每個(gè)TCP/IP的實(shí)現(xiàn)都提供這個(gè)功能。 Telnet使用TCP提供可靠傳輸,服務(wù)器端口號(hào)23,傳統(tǒng)的終端聯(lián)機(jī)系統(tǒng),Telnet的工作原理,偽終端驅(qū)動(dòng),終端驅(qū)動(dòng),應(yīng)用程序,操作系統(tǒng),終端,操作系統(tǒng),Telnet協(xié)議的特點(diǎn),網(wǎng)絡(luò)虛擬終端(Network Virtual Terminal, NVT) 選項(xiàng)協(xié)商機(jī)制 對(duì)稱處理連接的兩端,網(wǎng)絡(luò)虛擬終端NVT,偽終端,終端,本地計(jì)算機(jī),字符集,遠(yuǎn)程計(jì)算機(jī),字符集,NVT字符集,NVT字符集,NVT包括兩個(gè)字符集 數(shù)據(jù)字符集 對(duì)于數(shù)據(jù),NVT通常使用NVT ASCII,是8bit字符集,其中7個(gè)最低比特位和US ASCII相同,但最高位是0。 現(xiàn)在也可以最高位也可以是1,但必須在客戶和服務(wù)器之間使用選項(xiàng)協(xié)商取得一致。 控制字符集 也使用8bit字符集,但最高位為1。,Telnet的控制字符集,數(shù)據(jù)信息與控制信息,Telnet僅使用一個(gè)TCP連接同時(shí)用于發(fā)送數(shù)據(jù)和控制信息。 思考:如何把字符流中的數(shù)據(jù)信息和控制信息區(qū)分開? IAC(將下一字符解釋為命令) 在每個(gè)控制字符序列的前面加上控制字符IAC(FF) 。 如果要發(fā)送數(shù)據(jù)FF,則必須發(fā)送兩個(gè)連續(xù)的IAC。 例:輸入dir命令時(shí),如果錯(cuò)輸為dit則需使用回退鍵進(jìn)行改正,回退字符將被轉(zhuǎn)換為兩個(gè)字符(IAC EC),即最終傳給服務(wù)器的內(nèi)容是(d i t IAC EC r)。,選項(xiàng)協(xié)商,Telnet運(yùn)行客戶與服務(wù)器相互進(jìn)行選項(xiàng)協(xié)商。 選項(xiàng)協(xié)商是對(duì)稱的,任何一方都可以主動(dòng)發(fā)送選項(xiàng)協(xié)商請(qǐng)求給對(duì)方。 對(duì)于任何給定的選項(xiàng),連接的任何一方都可以發(fā)送下面4種請(qǐng)求的任意一種請(qǐng)求: WILL (FB) 發(fā)送方本身想激活(enable)選項(xiàng) WONT (FC) 發(fā)送發(fā)本身想禁止(disable)選項(xiàng) DO (FD) 發(fā)送方想讓接收方激活選項(xiàng) DONT (FE) 發(fā)送方想讓接收方禁止選項(xiàng),選項(xiàng)協(xié)商,Telnet規(guī)定:對(duì)于激活選項(xiàng)請(qǐng)求(WILL和DO),可以同意或不同意,而對(duì)于禁止選項(xiàng)請(qǐng)求(WONT和DONT),必須同意。因此共有6種組合情況:,常見選項(xiàng),子選項(xiàng)協(xié)商,有些選項(xiàng)不能僅僅用“激活”或“禁止”來表達(dá),例如設(shè)置終端窗口的大小,為了處理這種選項(xiàng),必須依靠子選項(xiàng)協(xié)商。 例:窗口大小選項(xiàng)協(xié)商 服務(wù)器: 客戶端: ,子選項(xiàng)開始,子選項(xiàng)結(jié)束,客戶轉(zhuǎn)義符,Telnet運(yùn)行用戶直接和客戶進(jìn)程進(jìn)行交互,而不是被發(fā)送到服務(wù)器進(jìn)程。 用戶可以使用客戶轉(zhuǎn)義符(也叫Escape字符,通常是Ctrl + ),使得客戶進(jìn)程顯示其提示符(通常是“telnet”),這時(shí)有一些命令可供用戶使用,以改變連接的特性或打印某些信息。 一般按回車鍵可以重新讓用戶和服務(wù)器進(jìn)行交互。,操作方式,大多數(shù)Telnet的實(shí)現(xiàn)工作在三種方式中的一種: 默認(rèn)方式(半雙工方式) 字符方式 行方式,默認(rèn)方式(半雙工方式),回顯由客戶完成 用戶鍵入字符,客戶就把字符回顯到屏幕,但到整個(gè)一行完成之前并不發(fā)送給服務(wù)器。 在把整個(gè)一行發(fā)送給服務(wù)器后,客戶在接收來自用戶的一個(gè)新行之前,要等待來自服務(wù)器的GA(Go ahead)命令。 這種操作是半雙工的,因此比較低效。,字符方式,每一個(gè)鍵入的字符從客戶發(fā)送給服務(wù)器。服務(wù)器通常將這個(gè)字符返回給客戶,并顯示在客戶的屏幕上。 對(duì)每一個(gè)字符數(shù)據(jù)必須發(fā)送3個(gè)TCP報(bào)文段: 用戶鍵入字符,發(fā)送給服務(wù)器 服務(wù)器確認(rèn)收到的字符,將該字符回送給客戶 客戶確認(rèn)收到被回送的字符,客戶,服務(wù)器,行模式,行編輯(回顯、字符刪除、行刪除等操作)由客戶完成,然后客戶把整個(gè)的行發(fā)送給服務(wù)器。 默認(rèn)工作在全雙工方式 客戶一行接一行地發(fā)送,而不需要等待來自服務(wù)器的GA(Go ahead)命令。,實(shí)驗(yàn):telnet使用及telnet協(xié)議分析,實(shí)驗(yàn)?zāi)康模?學(xué)習(xí)net start telnet及tlntadmn命令的用法 學(xué)習(xí)telnet客戶的添加 學(xué)習(xí)telnet客戶端命令的使用 分析telnet協(xié)議的選項(xiàng)協(xié)商及操作方式 分析telnet協(xié)議的安全性,套接字編程初步,套接字 API 在 BSD4.1 UNIX中首次引入(1981) 由應(yīng)用程序顯式產(chǎn)生、使用和釋放 客戶機(jī)/服務(wù)器模式 通過套接字 API 提供兩類運(yùn)輸服務(wù): 不可靠數(shù)據(jù)報(bào) 可靠, 面向字節(jié)流,TCP套接字編程,服務(wù)器首先運(yùn)行并創(chuàng)建歡迎套接字 ,等待客戶請(qǐng)求 客戶創(chuàng)建客戶套接字(需指定服務(wù)器的IP地址及端口號(hào)),并建立到服務(wù)器的TCP連接 當(dāng)客戶請(qǐng)求到達(dá)時(shí), 服務(wù)器生成新的連接套接字,并通過新套接字與該客戶通信 允許服務(wù)器同時(shí)為多個(gè) 客戶服務(wù) 源端口號(hào)用于區(qū)分不同的客戶,例:轉(zhuǎn)換為大寫,應(yīng)用描述 1. 客戶從標(biāo)準(zhǔn)輸入讀取行 2. 客戶把該行數(shù)據(jù)發(fā)送給服務(wù)器 3. 服務(wù)器收到該行數(shù)據(jù)后,將其中的所有字符轉(zhuǎn)換成大寫字符 4. 服務(wù)器把修改后的行發(fā)回給客戶端 5. 客戶機(jī)收到后,把修改后的行打印出來,一個(gè)流是流入或流出 某進(jìn)程的字符序列,客戶端Java代碼,import java.io.*; import .*; class TCP Client public static void main(String argv) throws Exception String sentence; String modifiedSentence; /創(chuàng)建與標(biāo)準(zhǔn)輸入設(shè)備相連的輸入流對(duì)象 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in); /創(chuàng)建客戶套接字,與服務(wù)器建立連接 Socket ClientSocket = new Socket(“hostname“, 6789); /創(chuàng)建與客戶套接字相連的輸出流對(duì)象 DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream();,客戶端Java代碼(續(xù)),/創(chuàng)建與客戶套接字相連的輸入流對(duì)象 BufferedReader inFromServer = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream(); /通過輸入流對(duì)象從標(biāo)準(zhǔn)輸入設(shè)備讀入一行 sentence = inFromUser.readLine(); /通過輸出流對(duì)象向套接字寫入一行,即發(fā)送給服務(wù)器 outToServer.writeBytes(sentence + n); /通過輸出流對(duì)象從套接字讀入被服務(wù)器修改后的行 modifiedSentence = inFromServer.readLine(); System.out.println(“FROM Server: “ + modifiedSentence); ClientSocket.close(); ,服務(wù)器端Java代碼,import java.io.*; import .*; class TCP Server public static void main(String argv) throws Exception String ClientSentence; String capitalizedSentence; /在端口6789 創(chuàng)建歡迎套接字 ServerSocket welcomeSocket = new ServerSocket(6789); while(true) /在歡迎套接字上接收到客戶請(qǐng)求后返回新的連接套接字 Socket connectionSocket = welcomeSocket.accept(); /創(chuàng)建與連接套接字相連的輸入流對(duì)象 BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream();,服務(wù)器端Java代碼(續(xù)),/創(chuàng)建與連接套接字相連的輸出流對(duì)象 DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream(); /通過與連接套接字相連的輸入流對(duì)象讀取行 ClientSentence = inFromClient.readLine(); /進(jìn)行大寫轉(zhuǎn)換 capitalizedSentence = ClientSentence.toUpperCase() + n; /通過與連接套接字相連的輸出流對(duì)象寫入行,即發(fā)回客戶端 outToClient.writeBytes(capitalizedSentence); ,客戶/服務(wù)器工作流程分析,UDP套接字編程,UDP客戶端與服務(wù)器之間沒有“連接”,也無需握手,因此不需要?dú)g迎套接字 UDP不提供面向字符流的傳輸服務(wù),所以無需與套接字相連的輸入輸出流 發(fā)送方必須在每個(gè)分組上攜帶目的IP地址和目的端口號(hào),以指明接收方的地址 服務(wù)器必須從接收到的分組提取源IP地址和源端口號(hào),以得到客戶端的地址,例:轉(zhuǎn)換為大寫(UDP版),(UDP版)客戶端Java代碼,import java.io.*; import .*; class UDPSocket public static void main(String args) throws Exception /創(chuàng)建與標(biāo)準(zhǔn)輸入設(shè)備相連的輸入流對(duì)象 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in); /創(chuàng)建客戶套接字(數(shù)據(jù)報(bào)套接字) DatagramSocket ClientSocket = new DatagramSocket(); /調(diào)用DNS將服務(wù)器主機(jī)名解析為IP地址 InetAddress IPAddress = InetAddress.getByName(“hostname“); byte sendData = new byte1024; byte receiveData = new byte1024; String sentence = inFromUser.readLine(); sendData = sentenc

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論