《Java網絡程序設計》課件-第1章_第1頁
《Java網絡程序設計》課件-第1章_第2頁
《Java網絡程序設計》課件-第1章_第3頁
《Java網絡程序設計》課件-第1章_第4頁
《Java網絡程序設計》課件-第1章_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章緒論

1.1計算機網絡1.2網絡編程1.3Java與網絡編程

1.1計?算?機?網?絡

1.1.1計算機網絡的概念

計算機網絡是通過電纜、電話線或無線通信將兩臺以上的計算機互連起來構成的集合,其準確定義是:由若干臺擁有獨立處理能力的計算機,通過通信設備連接,且在通信軟件支持下可實現信息傳輸與交換的系統(tǒng)集合。其簡單的定義是:一些互相連接的、自治的計算機的集合。最簡單的網絡由兩臺計算機設備構成,進行兩點一線的通信;最龐大的網絡是由多個計算機網絡通過路由器等網絡設備連接而成的因特網,因此因特網也被稱為“網絡的網絡”,如圖1-1所示。圖1-1互聯(lián)網1.1.2TCP/IP體系結構

計算機網絡由多個互連的網絡節(jié)點組成,節(jié)點之間要不斷地交換數據和控制信息,就必須做到有條不紊地交換數據,并遵循一整套合理而嚴謹的結構化管理體系。計算機網絡是按照高度結構化設計方法,采用功能分層的原理來實現的,網絡體系(NetworkArchitecture)為了完成計算機間的通信合作,把每臺計算機互連的功能劃分成有明確定義的層次,并規(guī)定了同層次進程通信的協(xié)議及相鄰層次之間的接口與服務,從而形成網絡體系。不同廠家生產的計算機系統(tǒng)以及不同網絡之間要實現數據通信,就必須遵循相同的網絡體系結構模型,否則異種計算機就無法連接成網絡,這種共同遵循的網絡體系結構模型就是國際標準——開放系統(tǒng)互連參考模型(OpenSystemInterface/ReferenceModel,OSI/RM),這是一種七層的體系結構。在Internet中,網絡通信協(xié)議使用的是傳輸控制協(xié)議/因特網互聯(lián)協(xié)議(TransmissionControlProtocol/InternetProtocol,TCP/IP),這是一種四層的體系結構。TCP/IP定義了電子設備(比如計算機)如何連入互聯(lián)網,以及數據如何在設備之間傳輸的標準。兩個網絡體系結構的對比如圖1-2所示。圖1-2TCP/IP結構與OSI/RM結構對比在TCP/IP中,應用層為協(xié)議的最高層,應用程序與該層協(xié)議相配合發(fā)送或接收數據。TCP/IP協(xié)議集在應用層上有遠程登錄協(xié)議(Telnet)、文件傳輸協(xié)議(FTP)、電子郵箱協(xié)議(SMTP)、域名系統(tǒng)(DNS)、超文本傳輸協(xié)議(HTTP)等,它們構成了TCP/IP基本應用程序的基礎。

傳輸層上的主要協(xié)議是TCP(TransmissionControlProtocol,傳輸控制協(xié)議)和。正如網絡層控制著主機之間的數據傳遞,而傳輸層控制著那些將要進入網絡層的數據。TCP與UDP兩個協(xié)議是管理這些數據的兩種方式:TCP是一個基于連接的協(xié)議,UDP則是面向無連接服務的管理方式的協(xié)議。由于UDP不使用很繁瑣的流控制或錯誤恢復機制,只充當數據報的發(fā)送者和接收者,因此,UDP比TCP簡單。網絡層中的協(xié)議主要有IP、ICMP、IGMP等,由于它包含了IP協(xié)議模塊,因而它是所有基于TCP/IP協(xié)議網絡的核心。在網絡層中,IP模塊完成大部分功能。ICMP和IGMP以及其他支持IP的協(xié)議幫助IP完成特定的任務,如傳輸差錯控制信息以及主機和路由器之間的控制電文等。網絡層掌管著網絡中主機間的信息傳輸。

網絡接口層實現與通信介質的連接,完成數據在網絡中的發(fā)送和接收,向上層協(xié)議屏蔽通信的詳細過程。

在本書中所涉及的Java網絡編程以TCP/IP網絡體系結構為基礎。

1.2網絡編程

1.2.1網絡編程的概念

網絡編程就是用一門編程語言結合相應的網絡接口API,編寫關于網絡信息傳輸方面的程序的過程。如在WindowsXP環(huán)境下,利用C++?語言,根據Microsoft提供的Winsock2網絡編程接口,編寫網絡程序;又如使用Java語言,引用類庫和java.io類庫等相關類庫包,編寫網絡程序。各種程序設計語言都能實現網絡編程。

根據TCP/IP的分層體系結構,網絡編程可劃分為如圖1-3所示的層次。圖1-3網絡編程的層次劃分圖1-3中,用戶功能設計包含了應用層和傳輸層兩層在內的應用軟件設計,通常根據應用軟件中傳輸數據的要求不同以及用戶需求,選擇適當的傳輸層協(xié)議TCP或者UDP進行通信,主要完成某種特定的應用,Java網絡編程集中在此。

通信功能設計,主要包括傳輸層、網絡層和網絡接口層,完成數據傳輸安全、數據傳輸效率等功能,主要使用C/C++?實現。

在TCP/IP體系結構中,應用層協(xié)議與傳輸層協(xié)議的對應關系如表1-1所示。

1.2.2C/S架構和B/S架構

C/S架構是軟件應用架構,通過它可以充分發(fā)揮網絡兩端的硬件環(huán)境優(yōu)勢,將任務合理分配到客戶機端和服務器端來實現,降低系統(tǒng)網絡通信帶來的開銷。C/S架構是一種典型的兩層軟件應用架構,也被稱為是胖客戶端(FatClient)架構,原因在于客戶機端需要實現絕大多數的業(yè)務邏輯和界面展示,客戶端包含一個或多個在用戶的電腦上運行的程序。該類應用架構中,作為客戶端的部分需要承受很大的計算壓力,因為顯示邏輯和事務處理都包含在其中,通過與數據庫的交互(通常使用SQL語句或存儲過程來實現)來達到數據的永久化存儲,以此滿足實際應用項目的需要。服務器端有兩種:數據庫服務器端,客戶機端直接連接服務器端的數據庫資源;Socket服務器端,服務器端的程序通過Socket與客戶端的程序通信,實現數據交換。采用C/S架構的常見軟件包括管理信息系統(tǒng)、實時消息軟件、娛樂軟件等。C/S架構如圖1-4所示。圖1-4C/S架構

B/S架構是Web興起后的一種軟件應用架構,Web瀏覽器是客戶端基礎的應用軟件。這種模式統(tǒng)一客戶端,將軟件應用系統(tǒng)功能實現的核心部分集中到服務器上,簡化系統(tǒng)的開發(fā)、維護和使用。其中,瀏覽器指的是Web瀏覽器,極少數事務邏輯在瀏覽器端實現,但主要事務邏輯在服務器端實現;由于客戶端承擔的邏輯很少,因此被稱為瘦客戶端(ThinClient)。通常,由Browser客戶端、WebApp服務器端和DB端構成三層架構。B/S架構中,顯示邏輯交給了Web瀏覽器,將事務處理邏輯放在了WebApp上,這樣就避免了龐大的胖客戶端,減少了客戶端的壓力。

B/S架構如圖1-5所示。圖1-5B/S架構1.2.3C/S架構與B/S架構的區(qū)別

在為應用軟件選擇應用架構時,可以參考以下C/S與B/S的區(qū)別:

(1)硬件環(huán)境不同。

(2)處理問題不同。

(3)信息流不同。

(4)對安全要求不同。

(5)對程序架構不同。

(6)軟件重用性不同。

(7)用戶接口不同。

(8)系統(tǒng)維護不同。

(9)用戶端表現不同。1.2.4P2P的概念

C/S和B/S架構中,都是以服務器作為中心進行應用構架布局的。伴隨著計算機網絡的迅速發(fā)展,客戶機硬件設備能力的提高,接入網絡用戶人數的增多,以服務器為核心的模式逐漸不能滿足所有用戶的需求。例如,一個提供視頻的服務器,或者提供文件下載的服務器,無法應對眾多用戶的同時連接請求。于是,產生了對等技術。這是一種網絡通信技術,它依賴于網絡中參與者的計算能力和帶寬,而不是把所有需求都聚集在較少的幾臺服務器上。對等技術又被稱為“點對點”(PeertoPeer,P2P)技術,它允許各個參與者之間相互分享數據。P2P模式如圖1-6所示。圖1-6P2P模式伴隨著P2P技術研究的深入,有斷言說對等聯(lián)網是只讀網絡的終結,它使客戶機擺脫了服務器的束縛,用戶采用新的方式參與互聯(lián)網。其實,P2P不是一個新思想,從某些角度看,它甚至是創(chuàng)建互聯(lián)網的最初最基本的思想。因為,互聯(lián)網的初衷就是使接入網絡的設備實現資源共享。

P2P的常見應用有文件下載,例如eMule、迅雷、BitTorrent都是用于多點下載的P2P軟件。還有各類網絡娛樂應用,如在線點播、視頻游戲等。

P2P的主要缺點是在為多個連接服務時,對共享磁盤文件的讀、寫同時進行,對硬盤損傷比較大,還有對內存占用較多,影響整機速度。

1.3Java與網絡編程

1.3.1Java語言

Java語言本身是基于虛擬機(VirtualMachine,VM)的,程序可以跨各種平臺運行,擁有較好的可移植性,更適合網絡時代的要求,Java程序的編譯及運行圖如圖1-7所示。

從圖1-7可以看到,Java源程序文件經編譯生成字節(jié)碼文件,該字節(jié)碼文件通過網絡下載到運行終端,經過校驗正確,由終端的Java虛擬機解釋執(zhí)行,從而實現“一次編寫,到處執(zhí)行”。圖1-7Java程序編譯及運行圖1.3.2Java網絡編程

Java作為一門單純的編程語言和網絡沒有直接關系,只有掌握了Java的網絡類庫(和java.io),才能開始網絡編程。.net類庫被Java用于封裝網絡相關類;.io類庫被Java用于封裝數據流的輸入和輸出類。

在本書中,將依次介紹Java與網絡編程相關的知識,包括:

與網絡編程輸入/輸出相關的類,包括FileInputStream/

FileOutputStream實現以字節(jié)流的形式讀寫文件、ObjectInputStream/ObjectOutputStream以對象流的形式處理數據、Zip/ZipEntry進行壓縮文件的處理、XML實現跨平臺的數據交換等內容。與資源定位相關的類,包括InetAddress實現目標主機的名稱與IP地址的對應、URL類進行網絡資源的定位;

與TCP相關的類,包括Socket建立TCP客戶端套接字,實現發(fā)起對指定服務器端連接和承擔數據通信任務、與ServerSocket實現監(jiān)聽客戶端連接請求和實現連接等內容;

與UDP相關的類,包括DatagramSocket建立UDP套接字、DatagramPac

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論