第1章 網(wǎng)絡(luò)程序設(shè)計(jì)_第1頁
第1章 網(wǎng)絡(luò)程序設(shè)計(jì)_第2頁
第1章 網(wǎng)絡(luò)程序設(shè)計(jì)_第3頁
第1章 網(wǎng)絡(luò)程序設(shè)計(jì)_第4頁
第1章 網(wǎng)絡(luò)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章網(wǎng)絡(luò)程序設(shè)計(jì)1頁主要內(nèi)容選擇JAVA語言網(wǎng)絡(luò)常識網(wǎng)絡(luò)程序設(shè)計(jì)簡介網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù)Java支持的網(wǎng)絡(luò)程序設(shè)計(jì)移動(dòng)網(wǎng)絡(luò)Java安全性常識本章小結(jié)實(shí)踐檢驗(yàn)2頁1-1選擇JAVA語言互聯(lián)網(wǎng)在世界上蓬勃發(fā)展,Sun公司發(fā)現(xiàn)Oak語言所具有的跨平臺(tái)、面向?qū)ο?、安全性高等特點(diǎn)非常符合互聯(lián)網(wǎng)的需要,于是改進(jìn)了該語言的設(shè)計(jì),造就了一代成功的編程語言。3頁1-2網(wǎng)絡(luò)常識網(wǎng)絡(luò)體系結(jié)構(gòu)協(xié)議OSI參考模型命名與路由Internet地址4頁1-2-1網(wǎng)絡(luò)體系結(jié)構(gòu)網(wǎng)絡(luò)中的設(shè)備既可以在同一個(gè)房間內(nèi),又可以分布于整幢大樓?;蛘咄ㄟ^電話線、微波等類似設(shè)備,分布于更遠(yuǎn)的距離。通過使用一些遠(yuǎn)距離介質(zhì),網(wǎng)絡(luò)甚至可以分布于整個(gè)世界。5頁1-2-2協(xié)議“協(xié)議”通常是指兩個(gè)或更多的計(jì)算機(jī)之間,為交換信息所必須遵循的一組規(guī)則。它描述了計(jì)算機(jī)發(fā)送信息所應(yīng)具有的格式,以及對收到的信息應(yīng)作出何種響應(yīng)。正是有了協(xié)議的存在,使得開發(fā)人員能夠使用不同的程序設(shè)計(jì)語言,以不同的數(shù)據(jù)結(jié)構(gòu)和命令代碼,獨(dú)立地開發(fā)和實(shí)現(xiàn)分布式應(yīng)用程序的不同部分。6頁1-2-3OSI參考模型OSI協(xié)議層7頁1-2-3OSI參考模型應(yīng)用層這一層負(fù)責(zé)發(fā)送數(shù)據(jù)給用戶。它主要定義了一個(gè)到服務(wù)的接口。此層協(xié)議有:文件傳輸協(xié)議(FTP)、遠(yuǎn)程登錄(Telnet)和簡單郵件傳輸協(xié)議(SMTP)。表示層實(shí)現(xiàn)此層的協(xié)議負(fù)責(zé)在網(wǎng)絡(luò)的表示層傳輸數(shù)據(jù),它獨(dú)立于底層的平臺(tái)。如果要進(jìn)行加密,將在此層完成。此層的協(xié)議有:XDR和ASN.1。會(huì)話層此層負(fù)責(zé)在兩個(gè)進(jìn)程間建立通信,以及進(jìn)行錯(cuò)誤恢復(fù)。需要注意的是,在無連接通信時(shí),不需要此層。傳輸層在這一層,信息被編址到通信端口。此層既可以用于無連接的情況(如UDP),又可以用于面向連接的情況(TCP),這一點(diǎn)將在第2章進(jìn)一步介紹。網(wǎng)絡(luò)層兩臺(tái)計(jì)算機(jī)將在此層進(jìn)行數(shù)據(jù)包的傳遞。這一層也負(fù)責(zé)進(jìn)行路由(廣域網(wǎng)中如此,局域網(wǎng)中不需路由)。此層協(xié)議有:IP和X.25。數(shù)據(jù)鏈路層此層負(fù)責(zé)兩臺(tái)計(jì)算機(jī)間包的容錯(cuò)傳輸。物理層此層包括驅(qū)動(dòng)網(wǎng)絡(luò)的線路及硬件等。8頁1-2-4命名與路由當(dāng)一臺(tái)主機(jī)要向/從處于同一個(gè)網(wǎng)絡(luò)或不同網(wǎng)絡(luò)中的另一臺(tái)主機(jī)發(fā)送/接收包時(shí)就要用到IP地址。如果該主機(jī)向處于同一個(gè)網(wǎng)絡(luò)中的主機(jī)發(fā)送包,那么只要用主機(jī)標(biāo)識符來定位即可;如果該主機(jī)向處于不同網(wǎng)絡(luò)中的另一臺(tái)主機(jī)發(fā)送包,則要用主機(jī)標(biāo)識符和網(wǎng)絡(luò)標(biāo)識符來定位此外部主機(jī)。這個(gè)定位網(wǎng)絡(luò)和主機(jī)并發(fā)送包給它們的過程就叫做路由(Routing)。在網(wǎng)絡(luò)中,一個(gè)路由器包含了一個(gè)IP層,來實(shí)現(xiàn)路徑的選擇,以及發(fā)送包到它們的目的地。當(dāng)數(shù)據(jù)被路由后,它在網(wǎng)絡(luò)的傳輸過程中有可能丟失,所以底層的協(xié)議應(yīng)該能夠保證數(shù)據(jù)起始點(diǎn)到目的地的正確傳遞。9頁1-2-5Internet地址Internet地址分為5類,分別是A、B、C、D和E。每類地址各不相同,各自適應(yīng)不同大小組織的需要。例如,A類地址用于超過65、536臺(tái)主機(jī)的大型網(wǎng)絡(luò),B類地址用于超過256臺(tái)但少于65536臺(tái)主機(jī)的中等規(guī)模的網(wǎng)絡(luò),C類地址用于最多256臺(tái)主機(jī)的網(wǎng)絡(luò)。D類地址被用于在一些Internet主機(jī)間進(jìn)行多點(diǎn)傳遞,其范圍為~55。E類地址被預(yù)留,以便將來使用,其范圍為~55。10頁A類地址11頁1-3網(wǎng)絡(luò)程序設(shè)計(jì)簡介

IP以兩種形式存在著:DNS(域名服務(wù))形式。此外,IP地址在內(nèi)部都表達(dá)成一個(gè)由32個(gè)二進(jìn)制位(bit)構(gòu)成的數(shù)字,所以IP地址的每一組數(shù)字都不能超過255。12頁1-3網(wǎng)絡(luò)程序設(shè)計(jì)簡介該程序只在Windows95中進(jìn)行了測試,但大家可以依次進(jìn)入自己的“開始”、“設(shè)置”、“控制面板”、“網(wǎng)絡(luò)”,然后進(jìn)入“標(biāo)識”選項(xiàng)卡。其中,“計(jì)算機(jī)名稱”就是應(yīng)在命令行中輸入的內(nèi)容。13頁1-3網(wǎng)絡(luò)程序設(shè)計(jì)簡介//:WhoAmI.java//Findsoutyournetworkaddresswhenyou're//connectedtotheInternet.packagec15;import.*;publicclassWhoAmI{publicstaticvoidmain(String[]args)throwsException{if(args.length!=1){System.err.println("Usage:WhoAmIMachineName");System.exit(1);}InetAddressa=InetAddress.getByName(args[0]);System.out.println(a);}}///:~14頁1-4網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù)SocketRPC網(wǎng)絡(luò)程序設(shè)計(jì)特性15頁1-4-1Socket信息在一個(gè)進(jìn)程的Socket和另一個(gè)進(jìn)程的Socket間,以報(bào)文傳輸?shù)男问竭M(jìn)行交換。在發(fā)送端Socket,報(bào)文以隊(duì)列的形式等待,直到網(wǎng)絡(luò)協(xié)議傳輸它們。當(dāng)報(bào)文到達(dá)后,它們又在接收端的Socket排隊(duì),等待接收進(jìn)程以一定的系統(tǒng)調(diào)用來接收它們。在客戶/服務(wù)器模式下,服務(wù)器是監(jiān)聽請求的進(jìn)程,客戶是發(fā)送請求的進(jìn)程。一旦服務(wù)器進(jìn)程接收到了請求,它就試圖去處理該請求,并且將輸出發(fā)送給客戶。16頁1-4-2RPCRPC(遠(yuǎn)程過程調(diào)用)誕生于20世紀(jì)70年代,它將計(jì)算機(jī)間的通信,看作是一個(gè)計(jì)算機(jī)調(diào)用另一個(gè)計(jì)算機(jī)的過程。在RPC方式中,所有報(bào)文都通過網(wǎng)絡(luò)傳遞,每一個(gè)既可能請求,也可能應(yīng)答一個(gè)過程的動(dòng)作。17頁基于RPC的客戶/服務(wù)器計(jì)算示例18頁1-4-3網(wǎng)絡(luò)程序設(shè)計(jì)特性多用戶應(yīng)用程序電子郵件(E–mail)是多用戶應(yīng)用程序的一個(gè)很好的例子。通過互聯(lián)的單機(jī)系統(tǒng),分布式計(jì)算使這樣的應(yīng)用程序成為可能。資源共享分布式計(jì)算使一個(gè)組織能夠更好地利用物理資源。例如,辦公人員可以共用一臺(tái)價(jià)格昂貴的彩色打印機(jī)??缮壭杂捎诜植际较到y(tǒng)由許多組件構(gòu)建而成,而且很有可能根據(jù)需要增加更多的組件,所以要具有可升級性。分布式系統(tǒng)可能要用于解決各種大小問題,所以要有隨問題大小變化的能力。有效性在不同環(huán)境下,多平臺(tái)能夠得以應(yīng)用,以解決每一個(gè)計(jì)算機(jī)的問題。容錯(cuò)性和實(shí)用性分布式應(yīng)用程序的各組件,被配置為能夠解決大多數(shù)的錯(cuò)誤類型。透明性這個(gè)系統(tǒng)感覺上應(yīng)為一個(gè)整體,而不是一系列獨(dú)立組件的集合。這樣,本地和遠(yuǎn)程對象可以使用同樣的操作進(jìn)行訪問,而不需要知道它們的位置。19頁1-5Java支持的網(wǎng)絡(luò)程序設(shè)計(jì)20頁1-5Java支持的網(wǎng)絡(luò)程序設(shè)計(jì)Socket通過Socket通信,Java支持面向連接(TCP)和無連接(UDP)的協(xié)議。在本書的第一部分,將介紹任何使用Socket編寫的分布式應(yīng)用程序。RMI遠(yuǎn)程方法調(diào)用(RMI)允許程序編寫分布式應(yīng)用程序,在這個(gè)分布式應(yīng)用程序中,遠(yuǎn)程Java對象的方法可以被運(yùn)行于網(wǎng)絡(luò)中不同主機(jī)上的Java虛擬機(jī)所調(diào)用。在這種模式下,參與通信的所有分布的對象必須用Java語言實(shí)現(xiàn)。如果它們以其他語言實(shí)現(xiàn)的話,Java對象就無法與網(wǎng)絡(luò)上的其他對象進(jìn)行通信。本書第二部分將討論RMI,以及任何使用它去開發(fā)分布式應(yīng)用程序。有關(guān)RMI的更多信息,請瀏覽/products/jdk/rmi。JavaIDLJavaIDL讓程序員能夠用接口定義語言(IDL)定義遠(yuǎn)程接口(IDL是OMG組織定義的工業(yè)標(biāo)準(zhǔn))。一旦程序員使用IDL定義了遠(yuǎn)程接口,那就可以使用特定的編譯器編譯該定義,以產(chǎn)生Java接口定義、客戶樁(stub)和服務(wù)器構(gòu)架(skeleton)。JavaIDL允許一個(gè)Java客戶透明地調(diào)用駐留在遠(yuǎn)程服務(wù)器上的IDL對象,并且允許介紹CORBA,以及如何使用VisiBrokerforJava——一個(gè)完整的CORBA實(shí)現(xiàn)——開發(fā)分布式應(yīng)用程序。有關(guān)JavaIDL的更多信息,請瀏覽/products/jdk/idl。21頁1-5Java支持的網(wǎng)絡(luò)程序設(shè)計(jì)JavaSpacesJavaSpaces是一種嘗試,它想要幫助分布式應(yīng)用程序開發(fā)者,以方便簡單、快速的統(tǒng)一機(jī)制,去共享、協(xié)調(diào)、傳送網(wǎng)絡(luò)中分布的資源、服務(wù)和對象。JavaSpaces有它自己的私有元組空間(tuplespaces),其建立于著名的Linda原型的元組空間之上。這一原型最初是為并行處理系統(tǒng)開發(fā)的,作為一個(gè)全球通信的緩沖。有關(guān)JavaSpaces的更多信息,請瀏覽/products/javaspaces。JiniJini是SunMicrosystems的一個(gè)R&D項(xiàng)目,它擴(kuò)展了Java的能力,使Java能夠支持更為廣泛的網(wǎng)絡(luò)設(shè)備。Sun設(shè)想使Jini成為一個(gè)系統(tǒng),在此系統(tǒng)中,人們使用網(wǎng)絡(luò)設(shè)備和服務(wù),就像使用今天的電話一樣簡單。有關(guān)Jini的更多信息,請瀏覽/software/jini。JavaPCJavaPC是一個(gè)軟件系統(tǒng),它提供了一個(gè)簡單而又靈活的移植路徑到Java平臺(tái)和網(wǎng)絡(luò)計(jì)算。JavaPC允許公司企業(yè)在運(yùn)行MS-DOS和Windows3.x的PC上配置使用Java應(yīng)用程序22頁1-6移動(dòng)網(wǎng)絡(luò)當(dāng)一個(gè)程序開始通過網(wǎng)絡(luò)運(yùn)行時(shí),在網(wǎng)絡(luò)和程序之間就產(chǎn)生一種新的關(guān)系。網(wǎng)絡(luò)移動(dòng)(NetworkMobile)代碼確保最終用戶有必要的軟件查看和使用通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)變得容易。移動(dòng)代理(MobileAgent),是網(wǎng)絡(luò)程序設(shè)計(jì)的一種改進(jìn)方法。由于網(wǎng)絡(luò)的可靠性不是很重要,所以它們是非常有吸引力的。Java支持網(wǎng)絡(luò)移動(dòng)開始于平臺(tái)獨(dú)立性和安全性兩方面。Java的這兩項(xiàng)功能使網(wǎng)絡(luò)移動(dòng)步入使用階段。平臺(tái)獨(dú)立性使開發(fā)一個(gè)網(wǎng)絡(luò)應(yīng)用程序更為容易,因?yàn)殚_發(fā)人員不再需要為不同的平臺(tái)開發(fā)不同版本的程序。Java的安全性則使得用戶從不可靠的資源下載文件時(shí)更為有信心。23頁1-7Java安全性常識Java的安全模式包括3層:Java語言本身。Java編譯器和run-time(運(yùn)行時(shí))系統(tǒng)。SecurityManager類。24頁1-7Java安全性常識

Java編譯器和run-time系統(tǒng)安全層提供了必要的功能,以確保Java系統(tǒng)不會(huì)因無效代碼而崩潰。它提供了一個(gè)簡單的、由以下3個(gè)子層所組成的安全的運(yùn)行環(huán)境:Java字節(jié)代碼解釋器和類格式校驗(yàn)。一個(gè)在運(yùn)行時(shí)動(dòng)態(tài)裝載和檢查庫的機(jī)制。自動(dòng)的垃圾回收機(jī)制。25頁1-7Java安全性常識26頁1-8本章小結(jié)在網(wǎng)絡(luò)通信中,Java不僅提供了面向連接和無連接數(shù)據(jù)報(bào)的底層通信,而且還提供了高層服務(wù),如E-mail和WWW服務(wù)等。通過Java提供的網(wǎng)絡(luò)功能,可以以流的方式來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的傳輸,而且不需要關(guān)注連網(wǎng)的細(xì)節(jié)問題。在因特網(wǎng)上,已經(jīng)開發(fā)了許多服務(wù),如WWW瀏覽、E-mail等,而Java也提供了相應(yīng)的擴(kuò)展組件,如對于E-mail應(yīng)用,Java提供了JavaMailAPI,使用時(shí)只需要調(diào)用其提供的方法就可以完成如發(fā)送郵件的操作。Java對數(shù)據(jù)報(bào)的支持與它對TCP套接字的支持大致相同,使用DatagramSocket類來表示無連接的Socket,接收和發(fā)送數(shù)據(jù)報(bào)。接收和要發(fā)送的數(shù)據(jù)報(bào)內(nèi)容保存在DatagramPacket對象中。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論