第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT

上傳人:文*** 文檔編號(hào):56161632 上傳時(shí)間:2022-02-20 格式:PPT 頁(yè)數(shù):66 大?。?.23MB
收藏 版權(quán)申訴 舉報(bào) 下載
第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT_第1頁(yè)
第1頁(yè) / 共66頁(yè)
第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT_第2頁(yè)
第2頁(yè) / 共66頁(yè)
第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT_第3頁(yè)
第3頁(yè) / 共66頁(yè)

下載文檔到電腦,查找使用更方便

30 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT》由會(huì)員分享,可在線閱讀,更多相關(guān)《第五章 應(yīng)用協(xié)議的實(shí)現(xiàn) 計(jì)算機(jī)教學(xué)課件PPT(66頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、23nTCP/IP模型將模型將OSI參考模型中的會(huì)話層和表示層的功能參考模型中的會(huì)話層和表示層的功能合并到應(yīng)用層。針對(duì)各種各樣的網(wǎng)絡(luò)應(yīng)用,應(yīng)用層引入了合并到應(yīng)用層。針對(duì)各種各樣的網(wǎng)絡(luò)應(yīng)用,應(yīng)用層引入了許多協(xié)議,稱為應(yīng)用協(xié)議。許多協(xié)議,稱為應(yīng)用協(xié)議。n應(yīng)用協(xié)議服務(wù)于各種應(yīng)用功能:應(yīng)用協(xié)議服務(wù)于各種應(yīng)用功能:n收發(fā)電子郵件(收發(fā)電子郵件(E-mail)n上傳和下載文件上傳和下載文件n瀏覽網(wǎng)站瀏覽網(wǎng)站n登錄遠(yuǎn)程服務(wù)器登錄遠(yuǎn)程服務(wù)器n應(yīng)用協(xié)議分為兩種傳輸協(xié)議:應(yīng)用協(xié)議分為兩種傳輸協(xié)議:nUDP傳輸協(xié)議傳輸協(xié)議nTCP協(xié)議傳輸協(xié)議協(xié)議傳輸協(xié)議n本章重點(diǎn)討論基于底層本章重點(diǎn)討論基于底層TCP和和UDP協(xié)議

2、套接字上的網(wǎng)絡(luò)應(yīng)協(xié)議套接字上的網(wǎng)絡(luò)應(yīng)用層的編程實(shí)現(xiàn)。用層的編程實(shí)現(xiàn)。4n5.2.1 基于基于TCP協(xié)議傳輸協(xié)議的協(xié)議傳輸協(xié)議的 應(yīng)用層協(xié)議應(yīng)用層協(xié)議n5.2.2 基于基于UDP傳輸協(xié)議的傳輸協(xié)議的 應(yīng)用層協(xié)議應(yīng)用層協(xié)議n5.2.3 RFC (Request For Comment )文檔介紹)文檔介紹55.2.1 基于基于TCP協(xié)議的應(yīng)用層協(xié)議協(xié)議的應(yīng)用層協(xié)議n1TELNET,虛擬終端協(xié)議,虛擬終端協(xié)議n2FTP(File Transfer Protocol) ,文件傳輸協(xié)議,文件傳輸協(xié)議n3POP3(Post Office Protocol-Version 3) ,郵局協(xié)議,郵局協(xié)議-版本版

3、本3n4IMAP4(Internet Message Access Pprotocol-Version 4) ,Internet消息訪問(wèn)協(xié)議消息訪問(wèn)協(xié)議-版本版本4n5SMTP(Simple Mail Transfer Protocol) ,簡(jiǎn)單郵件傳送協(xié)議,簡(jiǎn)單郵件傳送協(xié)議n6HTTP(Hypertext Transfer Protocol) ,超文本傳輸協(xié)議,超文本傳輸協(xié)議n7HTTPS(Secure Hypertext Transfer Protocol) ,安全超文本,安全超文本傳輸協(xié)議傳輸協(xié)議6表表5-1 常見(jiàn)的應(yīng)用層協(xié)議使用的常見(jiàn)的應(yīng)用層協(xié)議使用的TCP協(xié)議端口協(xié)議端口 協(xié)議協(xié)議端

4、口端口服服 務(wù)務(wù)TELNETTELNET2323 遠(yuǎn)程登錄服務(wù)遠(yuǎn)程登錄服務(wù)FTPFTP2121和和2020 端口端口2121用來(lái)控制會(huì)話,端口用來(lái)控制會(huì)話,端口2020用來(lái)實(shí)際傳輸文用來(lái)實(shí)際傳輸文件內(nèi)容件內(nèi)容POP3POP3110110 訪問(wèn)遠(yuǎn)程服務(wù)器上的電子郵件服務(wù)訪問(wèn)遠(yuǎn)程服務(wù)器上的電子郵件服務(wù)IMAP4IMAP4143143 Internet Internet遠(yuǎn)程信息存取服務(wù)遠(yuǎn)程信息存取服務(wù)SMTPSMTP2525 發(fā)送電子郵件服務(wù)發(fā)送電子郵件服務(wù)HTTPHTTP8080 用于萬(wàn)維網(wǎng)(用于萬(wàn)維網(wǎng)(WWWWWW)的超文本傳送服務(wù))的超文本傳送服務(wù)HTTPSHTTPS443443 安全超文本傳

5、送服務(wù)安全超文本傳送服務(wù)75.2.2 基于基于UDP協(xié)議的應(yīng)用層協(xié)議協(xié)議的應(yīng)用層協(xié)議n1SNMPn(Simple Network Management Protocol)n 簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議n2DNSn(Domain Name Server)n域名解析協(xié)議域名解析協(xié)議85.2.3 RFC(Request For Comment) 文檔介紹文檔介紹nTCP/IP協(xié)議是以協(xié)議是以RFC文檔的形式發(fā)布的。文檔的形式發(fā)布的。RFC是描述互聯(lián)網(wǎng)相關(guān)是描述互聯(lián)網(wǎng)相關(guān)技術(shù)規(guī)范的文檔。技術(shù)規(guī)范的文檔。 nRFC所在的官方網(wǎng)站為:所在的官方網(wǎng)站為:nhttp:/www.ietf.org/rfc.

6、html。 RFCRFC編號(hào)編號(hào)協(xié)協(xié) 議議768768用戶數(shù)據(jù)報(bào)協(xié)議(用戶數(shù)據(jù)報(bào)協(xié)議(UDPUDP)783783日常文件傳輸協(xié)議(日常文件傳輸協(xié)議(TFTPTFTP)791791InternetInternet協(xié)議(協(xié)議(IPIP)792792InternetInternet控制消息協(xié)議控制消息協(xié)議(ICMPICMP)793793傳輸控制協(xié)議(傳輸控制協(xié)議(TCPTCP協(xié)議)協(xié)議)821821郵件傳輸協(xié)議(郵件傳輸協(xié)議(SMTPSMTP,最新,最新更新更新RFC5336RFC5336)RFCRFC編號(hào)編號(hào)協(xié)協(xié) 議議854854TelnetTelnet協(xié)議(協(xié)議(TELNETTELNET)959

7、959文件傳輸協(xié)議(文件傳輸協(xié)議(FTPFTP,最新更新,最新更新RFC3659RFC3659)11571157簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMPSNMP)19391939郵局協(xié)議郵局協(xié)議- -版本版本3 3(POP3POP3,最新更新,最新更新RFC5034RFC5034)19451945超級(jí)文本傳輸協(xié)議超級(jí)文本傳輸協(xié)議- -版本版本1.0 1.0 (HTTP1.0HTTP1.0)20602060InternetInternet消息訪問(wèn)協(xié)議消息訪問(wèn)協(xié)議- -版本版本4 4(IMAP4IMAP4)20682068超文本傳輸協(xié)議超文本傳輸協(xié)議- -版本版本1.11.1(HTTP1.1H

8、TTP1.1,為,為RFC1945RFC1945的更新版,第二次更新的更新版,第二次更新RFC2616RFC2616)9nSMTP是建立在是建立在TCP/IP協(xié)議基礎(chǔ)上的應(yīng)用層協(xié)議。它規(guī)定協(xié)議基礎(chǔ)上的應(yīng)用層協(xié)議。它規(guī)定了將電子郵件從發(fā)送方傳送到接收方的傳輸規(guī)則。了將電子郵件從發(fā)送方傳送到接收方的傳輸規(guī)則。n客戶客戶/郵件發(fā)送服務(wù)器模式:郵件發(fā)送服務(wù)器模式:n郵件發(fā)送服務(wù)器也稱郵件發(fā)送服務(wù)器也稱SMTP服務(wù)器或郵件服務(wù)器。服務(wù)器或郵件服務(wù)器。n詳細(xì)規(guī)則在詳細(xì)規(guī)則在RFC821文檔中網(wǎng)址為:文檔中網(wǎng)址為:nhttp:/www.ietf.org/rfc/rfc0821.txtn5.3.1 SMTP介

9、紹介紹n5.3.2 SMTP客戶端客戶端Java應(yīng)用程序應(yīng)用程序n5.3.3 SMTP客戶端客戶端Java Applet105.3.1 SMTP介紹介紹n當(dāng)用戶需要發(fā)送郵件時(shí),當(dāng)用戶需要發(fā)送郵件時(shí),SMTP客戶程序使用一組簡(jiǎn)單的命客戶程序使用一組簡(jiǎn)單的命令與令與SMTP服務(wù)器關(guān)聯(lián),并通過(guò)它把郵件發(fā)送出去,而后結(jié)服務(wù)器關(guān)聯(lián),并通過(guò)它把郵件發(fā)送出去,而后結(jié)束連接和發(fā)送。束連接和發(fā)送。n1SMTP請(qǐng)求請(qǐng)求/響應(yīng)協(xié)議命令與格式響應(yīng)協(xié)議命令與格式n命令和響應(yīng)都是基于命令和響應(yīng)都是基于ASCII文本,命令以文本,命令以CRLF符結(jié)束為一條命令符結(jié)束為一條命令格式,其中格式,其中CR為為“r”表示回車(chē),表示

10、回車(chē),LF為為“n”表示換行,表示換行,SP表示空格。表示空格。n應(yīng)答碼:響應(yīng)包括一個(gè)表示返回狀態(tài)的三位數(shù)字代碼。應(yīng)答碼:響應(yīng)包括一個(gè)表示返回狀態(tài)的三位數(shù)字代碼。 n2SMTP協(xié)議的傳輸模型協(xié)議的傳輸模型n3SMTP協(xié)議發(fā)送郵件過(guò)程協(xié)議發(fā)送郵件過(guò)程111SMTP請(qǐng)求請(qǐng)求/響應(yīng)協(xié)議命令與格式響應(yīng)協(xié)議命令與格式命命 令令格格 式式描描 述述HELO/EHLOHELO 指明郵件發(fā)送者的主機(jī)域名指明郵件發(fā)送者的主機(jī)域名MAIL FROMMAIL FROM: 指明郵件發(fā)送者的信箱名稱指明郵件發(fā)送者的信箱名稱RCPT TORCPT TO: 指明郵件接收者的信箱名稱指明郵件接收者的信箱名稱DATADATA

11、表示表示發(fā)送郵件內(nèi)容(包括信頭和信體)發(fā)送郵件內(nèi)容(包括信頭和信體)QUITQUIT 終止郵件會(huì)話終止郵件會(huì)話HELPHELP 查詢服務(wù)器支持什么命令查詢服務(wù)器支持什么命令RSETRSET 重設(shè)郵件連接重設(shè)郵件連接NOOPNOOP 無(wú)操作,服務(wù)器應(yīng)響應(yīng)無(wú)操作,服務(wù)器應(yīng)響應(yīng)OKTURNTURN 接收端和發(fā)送端交換角色接收端和發(fā)送端交換角色12 SMTP的應(yīng)答碼的應(yīng)答碼應(yīng)應(yīng) 答答 碼碼描描 述述214幫助信息幫助信息220服務(wù)就緒服務(wù)就緒221服務(wù)關(guān)閉服務(wù)關(guān)閉250郵件操作完成郵件操作完成354開(kāi)始輸入郵件內(nèi)容,以開(kāi)始輸入郵件內(nèi)容,以“”結(jié)束結(jié)束421服務(wù)未就緒,關(guān)閉傳輸通道服務(wù)未就緒,關(guān)閉傳輸通

12、道501命令參數(shù)格式錯(cuò)誤命令參數(shù)格式錯(cuò)誤502命令不支持命令不支持503錯(cuò)誤的命令序列錯(cuò)誤的命令序列504命令參數(shù)不支持命令參數(shù)不支持132SMTP協(xié)議的傳輸模型協(xié)議的傳輸模型圖圖 SMTP協(xié)議傳輸模型協(xié)議傳輸模型 143SMTP協(xié)議發(fā)送郵件過(guò)程協(xié)議發(fā)送郵件過(guò)程SMTP協(xié)議發(fā)送一封電子郵件從SMTP客戶端傳輸?shù)絊MTP服務(wù)器,只用表5-3所示中前5個(gè)命令即可??蛻舳伺c郵件服務(wù)器連接和發(fā)送郵件過(guò)程如下: 客戶端A與郵件服務(wù)器B建立TCP/IP協(xié)議連接;郵件服務(wù)器B響應(yīng),返回應(yīng)答碼220,表示就緒。 客戶端A發(fā)送“HELO”命令以標(biāo)識(shí)發(fā)件人自己的身份,即發(fā)件人主機(jī)域名,郵件服務(wù)器B響應(yīng),返回應(yīng)答碼

13、250,表明可以接收。 客戶端A發(fā)送“MAIL FROM”命令,以標(biāo)識(shí)該電子郵件的發(fā)件人郵件地址,服務(wù)器B返回應(yīng)答碼250及OK作為響應(yīng),表明準(zhǔn)備接收郵件。 客戶端A發(fā)送“RCPT TO”命令,以標(biāo)識(shí)該電子郵件的接收人郵件地址,服務(wù)器B返回應(yīng)答碼250及OK作為響應(yīng)。 協(xié)商結(jié)束,發(fā)送郵件,客戶端A發(fā)送命令“DATA”,服務(wù)器B返回應(yīng)答碼354,可發(fā)送內(nèi)容,并說(shuō)明發(fā)送“”表示結(jié)束。客戶端A發(fā)送郵件內(nèi)容。 客戶端A發(fā)送“”表示結(jié)束輸入內(nèi)容,服務(wù)器B返回應(yīng)答碼250,表示此操作完畢。 結(jié)束此次發(fā)送,客戶端A發(fā)送命令“QUIT”退出。服務(wù)器B返回應(yīng)答碼221,表示服務(wù)器B關(guān)閉。15客戶端服務(wù)器helo

14、250MAIL FROM250RCPT TO250DATA354數(shù)據(jù).(表示結(jié)束)250QUIT250165.3.2 SMTP客戶端客戶端 Java應(yīng)用程序應(yīng)用程序 郵件發(fā)送SMTP客戶端Java Application應(yīng)用程序SMTPClient5_1.java。17n安裝郵件服務(wù)器:jamesn登錄服務(wù)器:ntelnet localhost 4555nroot rootn注冊(cè)用戶nhelpnadduser tom 1234nadduser jack 5678nlistusersn發(fā)送郵件nSMTPClient5_1.java n接收郵件ntelnet localhost 110nuser

15、jacknpass 5678nlistnretr 11819*5.3.3 SMTP客戶端客戶端 Java Appletn郵件發(fā)送郵件發(fā)送SMTP客戶端客戶端nJava Applet應(yīng)用程序應(yīng)用程序SMTP_Applet5_2.javan網(wǎng)頁(yè)文件網(wǎng)頁(yè)文件SMTP_Applet5_2. html。nSMTP_Applet5_2.java程序的郵件發(fā)送:程序的郵件發(fā)送:SMTP服務(wù)器主機(jī)名、郵件收發(fā)地服務(wù)器主機(jī)名、郵件收發(fā)地址、郵件標(biāo)題、郵件內(nèi)容等信息是通過(guò)界面人機(jī)交互輸入。址、郵件標(biāo)題、郵件內(nèi)容等信息是通過(guò)界面人機(jī)交互輸入。 nSTMP客戶程序所在的主機(jī)名:客戶程序所在的主機(jī)名:“MyComput

16、er”nSTMP服務(wù)器所在的主機(jī)名為服務(wù)器所在的主機(jī)名為“l(fā)ocalhost”或或“”。n使用使用IceWarp 9.3.2郵件服務(wù)器郵件服務(wù)器20運(yùn)行界面運(yùn)行界面21nPOP3郵局協(xié)議:郵局協(xié)議:建立在建立在TCP/IP協(xié)議基礎(chǔ)上。協(xié)議基礎(chǔ)上。n客戶端客戶端/服務(wù)器模式接收電子郵件,郵件接收服務(wù)器服務(wù)器模式接收電子郵件,郵件接收服務(wù)器也稱也稱POP3服務(wù)器。服務(wù)器。n協(xié)議的詳細(xì)規(guī)則文檔協(xié)議的詳細(xì)規(guī)則文檔RFC1939n網(wǎng)址為:網(wǎng)址為:http:/www.ietf.org/rfc/rfc1939.txt。n5.4.1 POP3介紹介紹n5.4.2 POP3客戶端客戶端225.4.1 POP3介

17、紹介紹nPOP3郵件服務(wù)器接收并保存郵件郵件服務(wù)器接收并保存郵件 nPOP3分客戶端程序和服務(wù)器分客戶端程序和服務(wù)器 nPOP3也是命令請(qǐng)求也是命令請(qǐng)求/響應(yīng)協(xié)議響應(yīng)協(xié)議n在在TCP協(xié)議協(xié)議110號(hào)端口監(jiān)聽(tīng)連接請(qǐng)求。號(hào)端口監(jiān)聽(tīng)連接請(qǐng)求。 n1、合法身份登錄,即客戶端發(fā)送命令、合法身份登錄,即客戶端發(fā)送命令“USER”和和“PASS”。服。服務(wù)器應(yīng)答返回務(wù)器應(yīng)答返回“+OK”,表示用戶登錄成功,此時(shí)由認(rèn)可狀態(tài)轉(zhuǎn),表示用戶登錄成功,此時(shí)由認(rèn)可狀態(tài)轉(zhuǎn)換為處理狀態(tài)。換為處理狀態(tài)。n2、客戶端發(fā)送一系列、客戶端發(fā)送一系列POP3命令,服務(wù)器應(yīng)答命令,服務(wù)器應(yīng)答 “+OK”成功和成功和“ -ERR”失敗兩

18、種。轉(zhuǎn)換為處理狀態(tài)失敗兩種。轉(zhuǎn)換為處理狀態(tài) 。nPOP3協(xié)議協(xié)議中有三種狀態(tài):認(rèn)可、處理和更新?tīng)顟B(tài)。中有三種狀態(tài):認(rèn)可、處理和更新?tīng)顟B(tài)。23POP3的主要命令、格式和描述的主要命令、格式和描述命令命令格格 式式狀態(tài)狀態(tài)描描 述述USERUSER 認(rèn)可認(rèn)可用戶名,此命令與下面的用戶名,此命令與下面的PASS命令若成功,將命令若成功,將導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)換導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)換PASSPASS 認(rèn)可認(rèn)可用戶密碼,命令若成功,用戶密碼,命令若成功,狀態(tài)由狀態(tài)由“認(rèn)可認(rèn)可”轉(zhuǎn)換為轉(zhuǎn)換為“處理處理”STATSTAT 處理處理請(qǐng)求服務(wù)器發(fā)回關(guān)于郵箱的統(tǒng)計(jì)資料,如郵件總請(qǐng)求服務(wù)器發(fā)回關(guān)于郵箱的統(tǒng)計(jì)資料,如郵件總數(shù)和總字節(jié)數(shù);

19、信箱狀態(tài)數(shù)和總字節(jié)數(shù);信箱狀態(tài)RETRRETR處理處理返回由參數(shù)標(biāo)識(shí)的郵件的全部文本返回由參數(shù)標(biāo)識(shí)的郵件的全部文本LISTLIST msg處理處理返回郵件數(shù)量和每個(gè)郵件的大小返回郵件數(shù)量和每個(gè)郵件的大小QUITQUIT 更新更新退出并把做過(guò)退出并把做過(guò)DELE標(biāo)記的郵件刪掉標(biāo)記的郵件刪掉DELEDELE 處理處理服務(wù)器將由參數(shù)標(biāo)識(shí)的郵件標(biāo)記為刪除,由服務(wù)器將由參數(shù)標(biāo)識(shí)的郵件標(biāo)記為刪除,由QUIT命令執(zhí)行命令執(zhí)行RSETRSET 處理處理服務(wù)器將重置所有標(biāo)記為刪除的郵件,用于撤銷(xiāo)服務(wù)器將重置所有標(biāo)記為刪除的郵件,用于撤銷(xiāo)DELE命令命令UIDLUIDL msg處理處理返回郵件的唯一標(biāo)識(shí)符,返回郵

20、件的唯一標(biāo)識(shí)符,POP3會(huì)話的每個(gè)標(biāo)識(shí)會(huì)話的每個(gè)標(biāo)識(shí)符都將是唯一的符都將是唯一的TOPTOP 處理處理服務(wù)器將返回由參數(shù)標(biāo)識(shí)的郵件前服務(wù)器將返回由參數(shù)標(biāo)識(shí)的郵件前n行內(nèi)容,行內(nèi)容,n必必須是正整數(shù)須是正整數(shù)NOOPNOOP 處理處理服務(wù)器返回一個(gè)肯定的響應(yīng)服務(wù)器返回一個(gè)肯定的響應(yīng)24常用命令n命令都是基于ASCII文本的,最常用的是nUSER、PASS、STAT、RETR、DELE和QUIT 255.4.2 POP3客戶端客戶端nPOP3客戶端客戶端Java Application應(yīng)用程序應(yīng)用程序POP3Client5_3.java如例程如例程5-3所示。所示。2627nFTP文件傳輸協(xié)議:建

21、立在文件傳輸協(xié)議:建立在TCP/IP協(xié)議基礎(chǔ)上協(xié)議基礎(chǔ)上 n客戶端客戶端/服務(wù)器模式進(jìn)行文件的上傳和下載,稱服務(wù)器模式進(jìn)行文件的上傳和下載,稱FTP客戶端(程序)和客戶端(程序)和FTP服務(wù)器。服務(wù)器。 nRFC959文檔的網(wǎng)址:文檔的網(wǎng)址:nhttp:/www.ietf.org/ rfc/rfc959.txt。n目標(biāo)是提高文件的共享性,提供非直接使用遠(yuǎn)程計(jì)算機(jī),使存儲(chǔ)介質(zhì)目標(biāo)是提高文件的共享性,提供非直接使用遠(yuǎn)程計(jì)算機(jī),使存儲(chǔ)介質(zhì)對(duì)用戶透明和可靠高效地傳送數(shù)據(jù)。對(duì)用戶透明和可靠高效地傳送數(shù)據(jù)。n5.5.1 FTP協(xié)議體系結(jié)構(gòu)協(xié)議體系結(jié)構(gòu)n5.5.2 FTP工作模式工作模式n5.5.3 服務(wù)器

22、端服務(wù)器端FTP程序程序n5.5.4 客戶端客戶端FTP程序程序28295.5.1 FTP協(xié)議體系結(jié)構(gòu)協(xié)議體系結(jié)構(gòu)nFTP客戶端分為三個(gè)層次:客戶端分為三個(gè)層次:n用戶接口用戶接口UI(User Interface)n用戶協(xié)議執(zhí)行器用戶協(xié)議執(zhí)行器PI(The User Protocol Interpreter)n用戶數(shù)據(jù)傳輸進(jìn)程用戶數(shù)據(jù)傳輸進(jìn)程DTP(The User Data Transfer Process););nFTP服務(wù)器分為兩個(gè)層次:服務(wù)器分為兩個(gè)層次:n服務(wù)器協(xié)議執(zhí)行器服務(wù)器協(xié)議執(zhí)行器PI(The Server Protocol Interpreter)n服務(wù)器數(shù)據(jù)傳輸進(jìn)程服務(wù)器

23、數(shù)據(jù)傳輸進(jìn)程DTP(The Server Data Transfer Process)。)。30FTP客戶端與服務(wù)器傳輸模型客戶端與服務(wù)器傳輸模型31FTP協(xié)議使用兩個(gè)層次的連接:協(xié)議使用兩個(gè)層次的連接:n第一個(gè)層次是由兩個(gè)第一個(gè)層次是由兩個(gè)PI形成的控制連接形成的控制連接n是由用戶是由用戶PI直接建立的專用于發(fā)送直接建立的專用于發(fā)送FTP命令的連接,向服務(wù)器命令的連接,向服務(wù)器PI提提出查看或下載文件的請(qǐng)求,連接遵循出查看或下載文件的請(qǐng)求,連接遵循Telnet協(xié)議,稱控制連接;協(xié)議,稱控制連接;n第二個(gè)層次是由第二個(gè)層次是由DTP形成的數(shù)據(jù)連接形成的數(shù)據(jù)連接n由用戶由用戶PI發(fā)出數(shù)據(jù)傳輸命令

24、,服務(wù)器發(fā)出數(shù)據(jù)傳輸命令,服務(wù)器PI響應(yīng),并控制服務(wù)器響應(yīng),并控制服務(wù)器DTP而而建立的專用于傳遞數(shù)據(jù)的連接,稱數(shù)據(jù)連接,它響應(yīng)用戶端的請(qǐng)求建立的專用于傳遞數(shù)據(jù)的連接,稱數(shù)據(jù)連接,它響應(yīng)用戶端的請(qǐng)求把指定的文件傳送到客戶端計(jì)算機(jī)中。把指定的文件傳送到客戶端計(jì)算機(jī)中。n一旦兩個(gè)一旦兩個(gè)DTP之間數(shù)據(jù)連接建好,就開(kāi)始傳送數(shù)據(jù)。之間數(shù)據(jù)連接建好,就開(kāi)始傳送數(shù)據(jù)。n這兩個(gè)層次的連接,也是兩條單獨(dú)的基于雙工通信鏈路的這兩個(gè)層次的連接,也是兩條單獨(dú)的基于雙工通信鏈路的TCP協(xié)協(xié)議連接。議連接。32FTP的主要命令、格式和描述的主要命令、格式和描述1、訪問(wèn)控制命令、訪問(wèn)控制命令 命命 令令格格 式式描描 述

25、述USERUSER 系統(tǒng)登錄的用戶名系統(tǒng)登錄的用戶名PASSPASS 系統(tǒng)登錄的用戶密碼系統(tǒng)登錄的用戶密碼CWDCWD 改變服務(wù)器上的工作目錄,即切換目錄改變服務(wù)器上的工作目錄,即切換目錄CDUPCDUP 切換到上一層目錄切換到上一層目錄QUITQUIT 從從FTP服務(wù)器上退出登錄服務(wù)器上退出登錄33FTP的主要命令、格式和描述的主要命令、格式和描述2、傳輸參數(shù)命令:、傳輸參數(shù)命令: 命命 令令格格 式式描描 述述PORTPORT IP地址和兩字節(jié)的端口地址和兩字節(jié)的端口ID(主動(dòng)模式)(主動(dòng)模式)TYPETYPE 數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型(A=ASCII,E=EBCDIC,I=binary)STR

26、USTRU 數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)(F=文件,文件,R=記錄,記錄,P=頁(yè)面)頁(yè)面)MODEMODE 傳輸模式(傳輸模式(S=流模式,流模式,B=塊模式,塊模式,C=壓縮模式)壓縮模式)PASVPASV 請(qǐng)求服務(wù)器等待數(shù)據(jù)連接(被動(dòng)模式)請(qǐng)求服務(wù)器等待數(shù)據(jù)連接(被動(dòng)模式)34FTP的主要命令、格式和描述的主要命令、格式和描述3、FTP服務(wù)命令服務(wù)命令 命命 令令格格 式式描描 述述RETRRETR 從服務(wù)器中獲得(找回)文件從服務(wù)器中獲得(找回)文件STORSTOR 向服務(wù)器中發(fā)送文件向服務(wù)器中發(fā)送文件STOUSTOU 存儲(chǔ)文件到服務(wù)器名稱上存儲(chǔ)文件到服務(wù)器名稱上DELEDELE 刪除服務(wù)器上的指

27、定文件刪除服務(wù)器上的指定文件LISTLIST 如果是文件名列出文件信息,如果是目錄則列如果是文件名列出文件信息,如果是目錄則列出文件列表出文件列表RMDRMD 刪除指定文件夾刪除指定文件夾MKDMKD 在服務(wù)器上建立指定目錄在服務(wù)器上建立指定目錄PWDPWD 顯示(打?。┊?dāng)前工作目錄顯示(打?。┊?dāng)前工作目錄HELPHELP 返回指定命令信息返回指定命令信息35FTP的部分應(yīng)答碼的部分應(yīng)答碼應(yīng)應(yīng) 答答 碼碼描描 述述150文件狀態(tài)正常,準(zhǔn)備打開(kāi)數(shù)據(jù)連接文件狀態(tài)正常,準(zhǔn)備打開(kāi)數(shù)據(jù)連接200命令執(zhí)行成功命令執(zhí)行成功220服務(wù)就緒,可以執(zhí)行新用戶的請(qǐng)求。如服務(wù)就緒,可以執(zhí)行新用戶的請(qǐng)求。如與服務(wù)器連接

28、成功與服務(wù)器連接成功221服務(wù)關(guān)閉控制連接。如果適當(dāng),請(qǐng)注銷(xiāo)服務(wù)關(guān)閉控制連接。如果適當(dāng),請(qǐng)注銷(xiāo)227進(jìn)入被動(dòng)模式進(jìn)入被動(dòng)模式230用戶登錄成功,繼續(xù)進(jìn)行用戶登錄成功,繼續(xù)進(jìn)行250目錄切換成功,已完成目錄切換成功,已完成257已創(chuàng)建文件夾已創(chuàng)建文件夾331用戶名正確,輸入密碼用戶名正確,輸入密碼應(yīng)應(yīng) 答答 碼碼描描 述述350請(qǐng)求的文件操作正在等待進(jìn)一步的信息請(qǐng)求的文件操作正在等待進(jìn)一步的信息421服務(wù)不可用,正在關(guān)閉控制連接。如果服務(wù)不可用,正在關(guān)閉控制連接。如果服務(wù)確定它必須關(guān)閉,將向任何命令發(fā)服務(wù)確定它必須關(guān)閉,將向任何命令發(fā)送這一應(yīng)答送這一應(yīng)答425無(wú)法打開(kāi)數(shù)據(jù)連接無(wú)法打開(kāi)數(shù)據(jù)連接45

29、0請(qǐng)求的文件操作未執(zhí)行請(qǐng)求的文件操作未執(zhí)行452未執(zhí)行請(qǐng)求的操作。系統(tǒng)存儲(chǔ)空間不夠未執(zhí)行請(qǐng)求的操作。系統(tǒng)存儲(chǔ)空間不夠500語(yǔ)法錯(cuò)誤,命令無(wú)法識(shí)別語(yǔ)法錯(cuò)誤,命令無(wú)法識(shí)別501在參數(shù)中有語(yǔ)法錯(cuò)誤在參數(shù)中有語(yǔ)法錯(cuò)誤502命令未實(shí)現(xiàn)命令未實(shí)現(xiàn)530未登錄未登錄550未執(zhí)行請(qǐng)求的操作。文件不可用未執(zhí)行請(qǐng)求的操作。文件不可用365.5.2 FTP工作模式(工作模式(1)nFTP協(xié)議有兩種工作模式:它們使用的端口不同,工作流程也不同。協(xié)議有兩種工作模式:它們使用的端口不同,工作流程也不同。nActive模式:主動(dòng)方式(模式:主動(dòng)方式(PORT)n命令通道建立:客戶端命令通道建立:客戶端PI使用隨機(jī)端口號(hào)使用

30、隨機(jī)端口號(hào)N呼叫服務(wù)器呼叫服務(wù)器PI的的21端口(默端口(默認(rèn))發(fā)送連接請(qǐng)求,服務(wù)器認(rèn))發(fā)送連接請(qǐng)求,服務(wù)器PI接收連接,建立一條控制連接,客戶端接收連接,建立一條控制連接,客戶端PI發(fā)送用戶名和密碼進(jìn)行身份認(rèn)證,確認(rèn)后可發(fā)送發(fā)送用戶名和密碼進(jìn)行身份認(rèn)證,確認(rèn)后可發(fā)送FTP的命令。的命令。N端口要求端口要求N1024。 n數(shù)據(jù)連接通道建立數(shù)據(jù)連接通道建立:由命令通道客戶端由命令通道客戶端PI用用PORT命令命令告知服務(wù)器告知服務(wù)器PI,客,客戶端的戶端的“IP地址和已打開(kāi)地址和已打開(kāi)M端口,可連接端口,可連接”;服務(wù)器;服務(wù)器PI接到命令后,利接到命令后,利用用20端口(默認(rèn))向客戶端的端口(

31、默認(rèn))向客戶端的M端口端口主動(dòng)發(fā)送連接請(qǐng)求主動(dòng)發(fā)送連接請(qǐng)求,服務(wù)器,服務(wù)器DTP與與客戶端客戶端DTP建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù),建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù),稱為主動(dòng)模式稱為主動(dòng)模式 。 M端口在端口在102565535 之間,隨機(jī)產(chǎn)生。之間,隨機(jī)產(chǎn)生。37FTP客戶FTP服務(wù)器21端口20端口控制連接數(shù)據(jù)連接FTP客戶FTP服務(wù)器21端口M2端口控制連接數(shù)據(jù)連接M端口主動(dòng)模式主動(dòng)模式被動(dòng)模式被動(dòng)模式M1端口385.5.2 FTP工作模式(工作模式(2)nPassive模式:被動(dòng)方式(模式:被動(dòng)方式(PASV)n命令通道建立:同主動(dòng)方式;命令通道建立:同主動(dòng)方式;n數(shù)據(jù)連接通道建立:通過(guò)命令通

32、道客戶端數(shù)據(jù)連接通道建立:通過(guò)命令通道客戶端PI發(fā)送發(fā)送PASV命令,告訴服務(wù)器命令,告訴服務(wù)器要采用被動(dòng)模式建立連接。當(dāng)服務(wù)器要采用被動(dòng)模式建立連接。當(dāng)服務(wù)器PI接收命令后,服務(wù)器就會(huì)自動(dòng)監(jiān)接收命令后,服務(wù)器就會(huì)自動(dòng)監(jiān)聽(tīng)端口聽(tīng)端口M1被動(dòng)等待連接,并利用命令通道告訴客戶端被動(dòng)等待連接,并利用命令通道告訴客戶端PI“M1端口,可連端口,可連接接”,客戶端在接到此信息后,就會(huì)自動(dòng)選擇一個(gè)端口,客戶端在接到此信息后,就會(huì)自動(dòng)選擇一個(gè)端口M2,與服務(wù)器,與服務(wù)器DTP的的M1端口建立數(shù)據(jù)連接通道。對(duì)服務(wù)器來(lái)說(shuō)數(shù)據(jù)連接通道端口建立數(shù)據(jù)連接通道。對(duì)服務(wù)器來(lái)說(shuō)數(shù)據(jù)連接通道DTP建立建立的過(guò)程中,是被動(dòng)等待

33、連接,稱為被動(dòng)模式。的過(guò)程中,是被動(dòng)等待連接,稱為被動(dòng)模式。 M1和和M2端口在端口在102565535中隨機(jī)產(chǎn)生。中隨機(jī)產(chǎn)生。395.5.3 服務(wù)器端服務(wù)器端FTP程序程序nFTP服務(wù)器程序?yàn)槎嗑€程,分為兩部分:主程序服務(wù)器程序?yàn)槎嗑€程,分為兩部分:主程序FtpServer5_4.java和命令和命令處理程序處理程序FtpConnection5_4.java,兩程序均為線程類(lèi),如例程,兩程序均為線程類(lèi),如例程5-4(a)和例程和例程5-4(b)所示。)所示。n主程序主程序FtpServer5_4為主線程類(lèi),由為主線程類(lèi),由main()方法啟動(dòng)和運(yùn)行主線程,方法啟動(dòng)和運(yùn)行主線程,run()方法

34、實(shí)現(xiàn)客戶線程。方法實(shí)現(xiàn)客戶線程。n其中,其中,main()方法調(diào)用命令處理程序方法調(diào)用命令處理程序FtpConnection5_4.java,并創(chuàng)建主線程,并創(chuàng)建主線程對(duì)象和其運(yùn)行,如對(duì)象和其運(yùn)行,如new FtpServer5_4().start()。nrun()方法系統(tǒng)自動(dòng)調(diào)用,其中定義了服務(wù)器套接字方法系統(tǒng)自動(dòng)調(diào)用,其中定義了服務(wù)器套接字ftpsocket,運(yùn)行,運(yùn)行accept()方方法來(lái)監(jiān)控端口法來(lái)監(jiān)控端口21,從而獲取客戶端套接字,將其賦給,從而獲取客戶端套接字,將其賦給client,以便與客戶端建立,以便與客戶端建立命令通道;命令通道;n以以client作為參數(shù),建立命令處理程序

35、對(duì)象并運(yùn)行,如作為參數(shù),建立命令處理程序?qū)ο蟛⑦\(yùn)行,如new FtpConnection5_4(client).start()。n服務(wù)器套接字服務(wù)器套接字ftpsocket的監(jiān)控和建立命令處理程序?qū)ο蠖际窃谒姥h(huán)的監(jiān)控和建立命令處理程序?qū)ο蠖际窃谒姥h(huán)for(;)中進(jìn)行的,新的客戶進(jìn)入,便產(chǎn)生一個(gè)新客戶線程,從而在服務(wù)器中實(shí)現(xiàn)多中進(jìn)行的,新的客戶進(jìn)入,便產(chǎn)生一個(gè)新客戶線程,從而在服務(wù)器中實(shí)現(xiàn)多線程。線程。40關(guān)鍵命令關(guān)鍵命令n1主動(dòng)模式主動(dòng)模式PORT(PORT)命令命令n2被動(dòng)模式被動(dòng)模式PASV(PASSIVE)命令命令n3文件下載文件下載RETR(RETEIEVE)和文件和文件上傳上傳S

36、TOR(STORE)命令命令n4文件和目錄列表文件和目錄列表LIST (LIST)命令命令415.5.4 客戶端客戶端FTP程序程序nFTP客戶端程序客戶端程序FTPClient5_5.java,如例程,如例程5-5所示。主要有所示。主要有5種方種方法,各方法的作用和功能如下:法,各方法的作用和功能如下:n main(String args)主方法。創(chuàng)建)主方法。創(chuàng)建FTP客戶端程序客戶端程序FTPClient5_5的的對(duì)象對(duì)象client,使程序開(kāi)始運(yùn)行。,使程序開(kāi)始運(yùn)行。n FTPClient5_5()構(gòu)造函數(shù)。調(diào)用構(gòu)造函數(shù)。調(diào)用displayFile() 向服務(wù)器發(fā)送命令。向服務(wù)器發(fā)送命

37、令。n displayFile()發(fā)送命令。向服務(wù)器發(fā)送登錄、建立文件夾、查看文件列發(fā)送命令。向服務(wù)器發(fā)送登錄、建立文件夾、查看文件列表、文件操作和文件傳輸?shù)让?,接收服?wù)器應(yīng)答信息和顯示信息。表、文件操作和文件傳輸?shù)让?,接收服?wù)器應(yīng)答信息和顯示信息。n getReply(BufferedReader dataIn)方法接收方法接收FTP服務(wù)器應(yīng)答碼和信服務(wù)器應(yīng)答碼和信息。息。n writeMsg(String msg,String str) pw.println(msg)方法向方法向FTP服務(wù)服務(wù)器發(fā)送命令和信息。器發(fā)送命令和信息。42nHTTP超文本傳輸協(xié)議:建立在超文本傳輸協(xié)議:建立在

38、TCP/IP協(xié)議基礎(chǔ)上。協(xié)議基礎(chǔ)上。n傳輸超文本。也是應(yīng)用最廣的網(wǎng)絡(luò)應(yīng)用協(xié)議之一。傳輸超文本。也是應(yīng)用最廣的網(wǎng)絡(luò)應(yīng)用協(xié)議之一。n基于請(qǐng)求基于請(qǐng)求/響應(yīng)模式??蛻敉ㄟ^(guò)瀏覽器訪問(wèn)響應(yīng)模式??蛻敉ㄟ^(guò)瀏覽器訪問(wèn)HTTP服務(wù)器上的文檔和文服務(wù)器上的文檔和文件服務(wù)。件服務(wù)。 nRFC2068文檔為文檔為HTTP/1.1版本,網(wǎng)址:版本,網(wǎng)址:nhttp:/www.ietf.org/rfc/ rfc2068.txt。 n5.6.1 HTTP協(xié)議概述協(xié)議概述n5.6.2 HTTP協(xié)議內(nèi)容協(xié)議內(nèi)容n5.6.3 HTTP服務(wù)器實(shí)現(xiàn)服務(wù)器實(shí)現(xiàn)435.6.1 HTTP協(xié)議概述協(xié)議概述nHTTP協(xié)議是一種靈活和迅速的應(yīng)

39、用于分布式、協(xié)作、超協(xié)議是一種靈活和迅速的應(yīng)用于分布式、協(xié)作、超媒體信息系統(tǒng)所需的應(yīng)用層協(xié)議。這是一個(gè)媒體信息系統(tǒng)所需的應(yīng)用層協(xié)議。這是一個(gè)通用通用、無(wú)狀態(tài)無(wú)狀態(tài)、面向?qū)ο竺嫦驅(qū)ο蟮膮f(xié)議,通過(guò)擴(kuò)展它的請(qǐng)求方法(命令)可用于的協(xié)議,通過(guò)擴(kuò)展它的請(qǐng)求方法(命令)可用于多種任務(wù)。多種任務(wù)。nHTTP客戶以客戶以Web瀏覽器作為客戶工具通過(guò)瀏覽器作為客戶工具通過(guò)HTTP協(xié)議向協(xié)議向HTTP服務(wù)器請(qǐng)求超文本文件,而超文本文件中包含著超服務(wù)器請(qǐng)求超文本文件,而超文本文件中包含著超鏈接。鏈接。 nHTTP服務(wù)器使得服務(wù)器使得Internet成為超文本文件的集合。成為超文本文件的集合。445.6.2 HTTP

40、協(xié)議內(nèi)容協(xié)議內(nèi)容n服務(wù)器:服務(wù)器:包括包括HTML文件,一個(gè)文件,一個(gè)HTTP駐留程序,即服務(wù)器程序,用于響應(yīng)駐留程序,即服務(wù)器程序,用于響應(yīng)HTTP客戶請(qǐng)求??蛻粽?qǐng)求。n瀏覽器:瀏覽器:就是就是HTTP客戶,向服務(wù)器發(fā)送請(qǐng)求,當(dāng)瀏覽器中輸入一個(gè)開(kāi)始文件或客戶,向服務(wù)器發(fā)送請(qǐng)求,當(dāng)瀏覽器中輸入一個(gè)開(kāi)始文件或單擊一個(gè)超鏈接時(shí),瀏覽器就向服務(wù)器發(fā)送了單擊一個(gè)超鏈接時(shí),瀏覽器就向服務(wù)器發(fā)送了HTTP請(qǐng)求,此請(qǐng)求被送往由請(qǐng)求,此請(qǐng)求被送往由IP地址指定的地址指定的URL。n程序接收到請(qǐng)求,在進(jìn)行必要的操作后回送所要求的文件。之前,要建立程序接收到請(qǐng)求,在進(jìn)行必要的操作后回送所要求的文件。之前,要建立H

41、TTP客戶與客戶與HTTP服務(wù)器的連接,默認(rèn)端口為服務(wù)器的連接,默認(rèn)端口為80;之后,要關(guān)閉連接。;之后,要關(guān)閉連接。HTTP協(xié)議協(xié)議的內(nèi)部操作過(guò)程分為的內(nèi)部操作過(guò)程分為4個(gè)過(guò)程:個(gè)過(guò)程:建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息和內(nèi)容、關(guān)閉連接。建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息和內(nèi)容、關(guān)閉連接。 45客戶A服務(wù)器80端口客戶請(qǐng)求ss請(qǐng)求隊(duì)列客戶Bv v46HTTP協(xié)議協(xié)議兩個(gè)重點(diǎn)過(guò)程兩個(gè)重點(diǎn)過(guò)程 n1HTTP客戶發(fā)送請(qǐng)求信息客戶發(fā)送請(qǐng)求信息n完整請(qǐng)求完整請(qǐng)求=請(qǐng)求行請(qǐng)求行(通用信息頭通用信息頭|請(qǐng)求頭請(qǐng)求頭|實(shí)體頭實(shí)體頭)CRLF實(shí)體內(nèi)容實(shí)體內(nèi)容n格式:格式:Full-Request=Requ

42、est-Line*(General-Header|Request-Header|Entity-Header) CRLFEntity-Bodyn2HTTP服務(wù)器發(fā)送響應(yīng)信息和內(nèi)容服務(wù)器發(fā)送響應(yīng)信息和內(nèi)容n響應(yīng)消息響應(yīng)消息=狀態(tài)行狀態(tài)行(通用信息頭通用信息頭|響應(yīng)頭響應(yīng)頭|實(shí)體頭實(shí)體頭)CRLF實(shí)體內(nèi)容實(shí)體內(nèi)容n格式:格式:Full-Response=Status-Line*(General-Header|Response-Header|Entity-Header) CRLFEntity-Bodyn請(qǐng)求方式請(qǐng)求方式nGET客戶端請(qǐng)求訪問(wèn)服務(wù)器上的一個(gè)文檔;(網(wǎng)頁(yè))客戶端請(qǐng)求訪問(wèn)服務(wù)器上的一個(gè)文檔;

43、(網(wǎng)頁(yè))nPOST客戶程序發(fā)送大量信息給服務(wù)器。通常包含大量客戶程序發(fā)送大量信息給服務(wù)器。通常包含大量HTML表單數(shù)據(jù)。表單數(shù)據(jù)。nHEAD客戶端和服務(wù)器之間交流內(nèi)部數(shù)據(jù);服務(wù)器不會(huì)返回具體文檔。對(duì)用戶透明??蛻舳撕头?wù)器之間交流內(nèi)部數(shù)據(jù);服務(wù)器不會(huì)返回具體文檔。對(duì)用戶透明。nPUT 客戶程序上傳文檔給服務(wù)器??蛻舫绦蛏蟼魑臋n給服務(wù)器。nDELETE 客戶程序刪除服務(wù)器上的某個(gè)文檔。客戶程序刪除服務(wù)器上的某個(gè)文檔。47HTTP請(qǐng)求格式n請(qǐng)求由三部分組成:請(qǐng)求由三部分組成:n請(qǐng)求行:請(qǐng)求方式、請(qǐng)求行:請(qǐng)求方式、URI、HTTP協(xié)議版本協(xié)議版本n請(qǐng)求頭字段請(qǐng)求頭字段n請(qǐng)求正文請(qǐng)求正文n例:例:PO

44、ST /servlet/default.jsp HTTP/1.1POST /servlet/default.jsp HTTP/1.1Accept: text/plain; text/htmlAccept: text/plain; text/htmlAccept-Language: en-gbAccept-Language: en-gbConnection: Keep-AliveConnection: Keep-AliveHost: localhostHost: localhostReferer: http:/localhost/ch8/SendDetails.htmReferer: http:

45、/localhost/ch8/SendDetails.htmUser-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)Content-Length: 33Content-Length: 33Content-Type: application/x-www-form-urlencodedContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzipA

46、ccept-Encoding: gzip,deflatedeflate CRLFCRLFLastName=Franks&FirstName=MichaelLastName=Franks&FirstName=Michaeln請(qǐng)求頭和請(qǐng)求正文之間必須以空行請(qǐng)求頭和請(qǐng)求正文之間必須以空行(CRLF)分割,它表示請(qǐng)求頭結(jié)束。分割,它表示請(qǐng)求頭結(jié)束。n正文可以包含客戶以正文可以包含客戶以POST方式提交的表單數(shù)據(jù)。方式提交的表單數(shù)據(jù)。 48HTTP響應(yīng)格式n也由三部分組成:也由三部分組成:n響應(yīng)行:響應(yīng)行:HTTP協(xié)議的版本、狀態(tài)代碼、描述協(xié)議的版本、狀態(tài)代碼、描述n響應(yīng)頭字段響應(yīng)頭字段n響應(yīng)正文響應(yīng)正

47、文HTTP/1.1 200 OK Server: Microsoft-IIS/4.0Date: Mon, 3 Jan 1998 13:13:33 GMTContent-Type: text/htmlLast-Modified: Mon, 11 Jan 1998 13:23:42 GMTContent-Length: 112 CRLF HTTP Response ExampleWelcome to Brainy Softwaren響應(yīng)頭和響應(yīng)正文之間必須以空行響應(yīng)頭和響應(yīng)正文之間必須以空行(CRLF)分割,它表示響應(yīng)頭結(jié)束。分割,它表示響應(yīng)頭結(jié)束。495.6.3 HTTP服務(wù)器實(shí)現(xiàn)服務(wù)器實(shí)現(xiàn)nH

48、TTP服務(wù)器程序?yàn)槎嗑€程,適合同時(shí)并行處理服務(wù)器程序?yàn)槎嗑€程,適合同時(shí)并行處理多個(gè)請(qǐng)求,有一個(gè)主類(lèi)多個(gè)請(qǐng)求,有一個(gè)主類(lèi)HTTPServer5_6和一個(gè)和一個(gè)內(nèi)部多線程類(lèi)內(nèi)部多線程類(lèi)Handler。服務(wù)器主要工作由。服務(wù)器主要工作由Handler類(lèi)完成。類(lèi)完成。Handler類(lèi)的設(shè)計(jì)可提供更好類(lèi)的設(shè)計(jì)可提供更好的性能和正確處理的性能和正確處理I/O阻塞問(wèn)題,客戶間可互不阻塞問(wèn)題,客戶間可互不影響。影響。n該該HTTP服務(wù)器程序是服務(wù)器程序是Web服務(wù)器的簡(jiǎn)單結(jié)構(gòu),服務(wù)器的簡(jiǎn)單結(jié)構(gòu),實(shí)現(xiàn)了實(shí)現(xiàn)了HTTP1.0 GET請(qǐng)求的基本框架,不支持請(qǐng)求的基本框架,不支持其他請(qǐng)求,如其他請(qǐng)求,如POST等。等

49、。50nURL(Unifoem Resource Locator)是描述如何尋找是描述如何尋找Internet上資源的上資源的字符串,也是網(wǎng)絡(luò)地址類(lèi)型之一。字符串,也是網(wǎng)絡(luò)地址類(lèi)型之一。nURL指向網(wǎng)絡(luò)上某臺(tái)機(jī)器的一個(gè)文件(視頻、圖片、文檔等)、指向網(wǎng)絡(luò)上某臺(tái)機(jī)器的一個(gè)文件(視頻、圖片、文檔等)、Web站點(diǎn)、站點(diǎn)、FTP站點(diǎn)、新聞組、電子郵件地址,以及指向網(wǎng)絡(luò)上的其他資源,如數(shù)據(jù)站點(diǎn)、新聞組、電子郵件地址,以及指向網(wǎng)絡(luò)上的其他資源,如數(shù)據(jù)庫(kù)查詢和命令輸出。庫(kù)查詢和命令輸出。包中提供了幾個(gè)包中提供了幾個(gè)HTTP功能的類(lèi):功能的類(lèi):nURL、URLConnection和和HttpURLConnec

50、tion,其中,其中URLConnection為抽為抽象類(lèi),需要?jiǎng)?chuàng)建其子類(lèi)。象類(lèi),需要?jiǎng)?chuàng)建其子類(lèi)。n這些類(lèi)封裝了這些類(lèi)封裝了Socket套接字通信,不需要額外建立通信連接。套接字通信,不需要額外建立通信連接。n5.7.1 Java URL主類(lèi)主類(lèi)n5.7.2 URLConnection抽象類(lèi)抽象類(lèi)n5.7.3 用用URL和和URLConnection獲取資源獲取資源515.7.1 Java URL主類(lèi)主類(lèi)n統(tǒng)一資源定位器統(tǒng)一資源定位器URL具有兩個(gè)主要組成部分:訪具有兩個(gè)主要組成部分:訪問(wèn)資源的協(xié)議及資源的位置。問(wèn)資源的協(xié)議及資源的位置。 nURL格式:協(xié)議名格式:協(xié)議名:/主機(jī)名主機(jī)名:端口

51、號(hào)端口號(hào)/路徑路徑/文件文件n例如,例如,http:/:80/index.html或或http:/ 。n80端口號(hào)可省略端口號(hào)可省略 。n1URL類(lèi)類(lèi)n2常用成員方法常用成員方法521URL類(lèi)類(lèi)nURL類(lèi)構(gòu)造函數(shù)如下四個(gè):類(lèi)構(gòu)造函數(shù)如下四個(gè):n(1)public URL(String spec) throws MalformedURLExceptionn(2)public URL(String protocol, String host, int port, String file) throws MalformedURLExceptionn(3)public URL(String proto

52、col, String host, String file) throws MalformedURLExceptionn(4)public URL(URL context, String spec) throws MalformedURLExceptionnURL url=new URL(getDocumentBase(), myfile.html);532常用成員方法常用成員方法n boolean equals(Object obj):比較此:比較此URL是否等于另一個(gè)對(duì)象。是否等于另一個(gè)對(duì)象。n Object getContent():獲得此:獲得此URL的內(nèi)容。的內(nèi)容。n int get

53、DefaultPort():獲得與此:獲得與此URL關(guān)聯(lián)協(xié)議的默認(rèn)端口號(hào)。關(guān)聯(lián)協(xié)議的默認(rèn)端口號(hào)。n String getFile():獲得此:獲得此URL的文件名。如果沒(méi)有查詢部分,此方法將返回與的文件名。如果沒(méi)有查詢部分,此方法將返回與getPath()相同的結(jié)果。相同的結(jié)果。n String getHost():獲得此:獲得此URL的主機(jī)名(如果適用)。的主機(jī)名(如果適用)。n String getPath():獲得此:獲得此URL的路徑部分。的路徑部分。n int getPort():獲得此:獲得此URL的端口號(hào)。的端口號(hào)。n String getProtocol():獲得此:獲得此UR

54、L的協(xié)議名稱。的協(xié)議名稱。n String getQuery():獲得此:獲得此URL的查詢部分。的查詢部分。n URLConnection openConnection() throws IOException:返回一個(gè):返回一個(gè)URLConnection對(duì)象,表示到對(duì)象,表示到URL所引用的遠(yuǎn)程對(duì)象的連接。所引用的遠(yuǎn)程對(duì)象的連接。n URLConnection openConnection(Proxy proxy) :與:與openConnection()類(lèi)類(lèi)似,所不同是連接通過(guò)指定的代理建立;不支持代理方式的協(xié)議處理程序?qū)⒑雎栽摯?,所不同是連接通過(guò)指定的代理建立;不支持代理方式的協(xié)議處

55、理程序?qū)⒑雎栽摯韰?shù)并建立正常的連接。理參數(shù)并建立正常的連接。n InputStream openStream():打開(kāi)到此:打開(kāi)到此URL的連接并返回一個(gè)用于從該連接讀的連接并返回一個(gè)用于從該連接讀入的入的InputStream。n String toString():返回此:返回此URL的字符串表示形式。的字符串表示形式。54客戶A建立連接,讀取數(shù)據(jù)網(wǎng)絡(luò)資源URL對(duì)象555.7.2 URLConnection抽象類(lèi)抽象類(lèi)nURLConnection抽象類(lèi)表示客戶應(yīng)用程序和遠(yuǎn)程服務(wù)器的通信連接。nURLConnection類(lèi)的作用是解釋在瀏覽器顯示的文本。n1URLConnection抽象

56、類(lèi)n2常用成員方法561URLConnection抽象類(lèi)抽象類(lèi)n定義:定義:npublic abstract class URLConnection extends Objectn此類(lèi)的對(duì)象可通過(guò)相應(yīng)的讀取和寫(xiě)入方法調(diào)用此類(lèi)的對(duì)象可通過(guò)相應(yīng)的讀取和寫(xiě)入方法調(diào)用URL的資源。的資源。通常,創(chuàng)建一個(gè)到通常,創(chuàng)建一個(gè)到URL的連接需要以下四個(gè)步驟:的連接需要以下四個(gè)步驟:n 通過(guò)在通過(guò)在URL對(duì)象調(diào)用對(duì)象調(diào)用openConnection()方法創(chuàng)建方法創(chuàng)建URLConnection連接對(duì)象。連接對(duì)象。n 處理設(shè)置參數(shù)和一般請(qǐng)求屬性。處理設(shè)置參數(shù)和一般請(qǐng)求屬性。n 使用使用connect()方法建立到

57、遠(yuǎn)程對(duì)象的實(shí)際連接。方法建立到遠(yuǎn)程對(duì)象的實(shí)際連接。n 遠(yuǎn)程對(duì)象變?yōu)榭捎?。遠(yuǎn)程對(duì)象的頭字段和內(nèi)容變?yōu)榭稍L問(wèn)。遠(yuǎn)程對(duì)象變?yōu)榭捎?。遠(yuǎn)程對(duì)象的頭字段和內(nèi)容變?yōu)榭稍L問(wèn)。57URL的連接步驟的連接步驟創(chuàng)建創(chuàng)建URLConnection對(duì)象對(duì)象connection,并打開(kāi)到此,并打開(kāi)到此URL引用資源的引用資源的通信連接:通信連接:URL url=new URL(some_url);/創(chuàng)建創(chuàng)建URL對(duì)象對(duì)象/ 創(chuàng)建創(chuàng)建URLConnection對(duì)象對(duì)象URLConnection connection=url.openConnection();/ 建立連接建立連接connection.connect();/

58、訪問(wèn)遠(yuǎn)程文件的頭字段和內(nèi)容訪問(wèn)遠(yuǎn)程文件的頭字段和內(nèi)容System.out.println(文件類(lèi)型文件類(lèi)型:+ connection.getContentType);582常用成員方法常用成員方法nURLConnection類(lèi)有兩個(gè)成員域,包括由類(lèi)有兩個(gè)成員域,包括由get和和set開(kāi)頭的兩種成員方法。開(kāi)頭的兩種成員方法。nURLConnection類(lèi)成員域:類(lèi)成員域:n protected boolean doInput變量:默認(rèn)值為變量:默認(rèn)值為true,允許應(yīng)用程序從,允許應(yīng)用程序從URL連連接讀取遠(yuǎn)程服務(wù)器發(fā)送的數(shù)據(jù)。接讀取遠(yuǎn)程服務(wù)器發(fā)送的數(shù)據(jù)。n protected boolean

59、doOutput變量:默認(rèn)值為變量:默認(rèn)值為false,允許應(yīng)用程序由,允許應(yīng)用程序由URL連接向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù)。連接向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù)。nURLConnection類(lèi)提供了設(shè)置參數(shù)、讀取數(shù)據(jù)方法,方法都為類(lèi)提供了設(shè)置參數(shù)、讀取數(shù)據(jù)方法,方法都為public。n abstract void connect() throws IOException:打開(kāi)到此:打開(kāi)到此URL引用的資源的引用的資源的通信連接。通信連接。nvoid setDoInput(boolean doinput):將此:將此URLConnection的的doInput字段字段值設(shè)置為指定的值。值設(shè)置為指定的值。nvoid

60、 setDoOutput(boolean dooutput):將此:將此URLConnection的的doOutput字段值設(shè)置為指定的值。字段值設(shè)置為指定的值。nvoid setUseCaches(boolean usecaches):如果連接中:如果連接中UseCaches標(biāo)志為標(biāo)志為true,則允許連接使用任何可用的緩存。,則允許連接使用任何可用的緩存。59n在建立到遠(yuǎn)程服務(wù)器對(duì)象的連接后,訪問(wèn)文件的頭字段和內(nèi)容:在建立到遠(yuǎn)程服務(wù)器對(duì)象的連接后,訪問(wèn)文件的頭字段和內(nèi)容:nObject getContent() throws IOException:獲取此:獲取此URL連接的內(nèi)容。連接的內(nèi)

61、容。nString getHeaderField(String name):返回指定頭字段的最后一次:返回指定頭字段的最后一次設(shè)置的值。設(shè)置的值。nString getHeaderField(int n):返回第:返回第n個(gè)頭字段的設(shè)置的值。個(gè)頭字段的設(shè)置的值。nString getHeaderFieldKey(int n):返回第:返回第n個(gè)頭字段的鍵。個(gè)頭字段的鍵。nInputStream getInputStream() throws IOException:返回從此:返回從此打開(kāi)的連接讀取輸入流。打開(kāi)的連接讀取輸入流。nOutputStream getOutputStream() th

62、rows IOException:返回寫(xiě):返回寫(xiě)入到此連接的輸出流。入到此連接的輸出流。60客戶B建立連接,讀/寫(xiě)數(shù)據(jù)網(wǎng)絡(luò)資源URLConnection對(duì)象對(duì)象inout61例程例程5-7,urlConnection5_7.javan實(shí)現(xiàn)了創(chuàng)建實(shí)現(xiàn)了創(chuàng)建URLConnection對(duì)象對(duì)象con和和URL對(duì)象對(duì)象url,并通過(guò)調(diào)用,并通過(guò)調(diào)用URLConnection不同方法獲得服務(wù)不同方法獲得服務(wù)器響應(yīng)正文的相關(guān)信息;檢查服務(wù)器響應(yīng)正文屬性(頭域)和設(shè)置;通過(guò)使用器響應(yīng)正文的相關(guān)信息;檢查服務(wù)器響應(yīng)正文屬性(頭域)和設(shè)置;通過(guò)使用HTTPURLConnection對(duì)對(duì)象,獲得與象,獲得與HTT

63、P協(xié)議相關(guān)的信息。運(yùn)行結(jié)果如下:協(xié)議相關(guān)的信息。運(yùn)行結(jié)果如下:n輸出服務(wù)器資源域的屬性信息:輸出服務(wù)器資源域的屬性信息: Content Type: text/html;charset=ISO-8859-1 Content Encoding: null Content Length: -1 Date: Sat Oct 17 22:44:38 CST 2009 Last Modified: Thu Jan 01 08:00:00 CST 1970 Expiration: Thu Jan 01 08:00:00 CST 1970 User-Agent: CERN-LineMode/2.15 lib

64、www/2.17b3 Referer: http:/ Server: Sun-Java-System-Web-Server/7.0 Date: Sat,17 Oct 2009 14:44:38 GMT Content-type: text/html;charset=ISO-8859-1 Set-cookie: JSESSIONID=CD8D947C0DB6621E17385BCDB515A759;Path=/ Transfer-encoding: chunked與與HTTP協(xié)議相關(guān)的信息,如狀態(tài)碼等。協(xié)議相關(guān)的信息,如狀態(tài)碼等。 Request Method: GET Response Mes

65、sage: OK Response Code: 20062635.7.3 用用URL和和URLConnection獲取資源獲取資源nURL和和URLConnection類(lèi)都封裝了類(lèi)都封裝了Socket套套接字通信,不需要通信連接,從網(wǎng)絡(luò)上獲取資接字通信,不需要通信連接,從網(wǎng)絡(luò)上獲取資源變得方便。源變得方便。n1用用URL方式獲取資源方式獲取資源n2用用URLConnection方式獲取資源方式獲取資源641用用URL方式獲取資源方式獲取資源n首先,在首先,在try/catch塊內(nèi)部,創(chuàng)建捆綁資源地址塊內(nèi)部,創(chuàng)建捆綁資源地址MyURL1的的URL對(duì)象對(duì)象url1;n第二,調(diào)用第二,調(diào)用openS

66、tream()方法,便可建立與下載資源的服務(wù)器方法,便可建立與下載資源的服務(wù)器(url1)的連接。該方法返回一個(gè)輸入流)的連接。該方法返回一個(gè)輸入流InputStream對(duì)象,通過(guò)賦對(duì)象,通過(guò)賦值創(chuàng)建一個(gè)捆綁值創(chuàng)建一個(gè)捆綁url1,連接到服務(wù)器上的輸入流對(duì)象,連接到服務(wù)器上的輸入流對(duì)象in1;n第三,由輸入流對(duì)象第三,由輸入流對(duì)象in1調(diào)用調(diào)用read()方法獲取遠(yuǎn)程服務(wù)器上的資源;方法獲取遠(yuǎn)程服務(wù)器上的資源;n第四,將獲取的資源第四,將獲取的資源c1,用,用write(char)c1)方法寫(xiě)入文件輸出流方法寫(xiě)入文件輸出流FileOutputStream(MyFile1)的對(duì)象的對(duì)象fout1所指定的本地計(jì)算機(jī)的所指定的本地計(jì)算機(jī)的MyFile1文件中。文件中。n如例程如例程5-8 URLResource5_8.java程序所示。程序所示。652用用URLConnection方式獲取資源方式獲取資源n首先,創(chuàng)建捆綁資源地址首先,創(chuàng)建捆綁資源地址MyURL2的的URL對(duì)象對(duì)象url2;n第二,通過(guò)賦值創(chuàng)建一個(gè)第二,通過(guò)賦值創(chuàng)建一個(gè)URLConnection對(duì)象對(duì)象con,便建立了與下載資

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!