版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
10.1網(wǎng)絡(luò)技術(shù)的基本概念
10.2Java網(wǎng)絡(luò)技術(shù)架構(gòu)
10.3URL編程
10.4Socket編程10.1網(wǎng)絡(luò)技術(shù)的基本概念10.1.1TCP/IP協(xié)議集合傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(TransmissionControlProtocol/InternetProtocol,TCP/IP),又名網(wǎng)絡(luò)通信協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。TCP/IP定義了電子設(shè)備如何聯(lián)入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。協(xié)議采用了四層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求。也就是說,TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個(gè)地址。盡管TCP/IP協(xié)議的名稱中只有TCP這個(gè)協(xié)議名,但是在TCP/IP的傳輸層同時(shí)存在TCP和UDP兩個(gè)協(xié)議。TCP是面向連接的通信協(xié)議,通過三次握手建立連接,通信完成時(shí)要拆除連接,由于TCP是面向連接的所以只能用于端到端的通信。TCP提供的是一種可靠的數(shù)據(jù)流服務(wù),采用“帶重傳的肯定確認(rèn)”技術(shù)來實(shí)現(xiàn)傳輸?shù)目煽啃?。TCP還采用一種稱為“滑動窗口”的方式進(jìn)行流量控制,所謂窗口實(shí)際表示接收能力,用以限制發(fā)送方的發(fā)送速度。如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向“上”傳送到TCP層。TCP將包排序并進(jìn)行錯誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,即設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。面向連接的服務(wù)(如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP發(fā)送和接收域名數(shù)據(jù)庫,而使用UDP則傳送有關(guān)單個(gè)主機(jī)的信息。UDP是面向無連接的通信協(xié)議,UDP數(shù)據(jù)包括目的端口號和源端口號信息,由于通信不需要連接,所以可以實(shí)現(xiàn)廣播發(fā)送。UDP通信時(shí)不需要接收方確認(rèn),屬于不可靠的傳輸,可能會出現(xiàn)丟包現(xiàn)象,實(shí)際應(yīng)用中要求程序員編程驗(yàn)證。UDP與TCP位于同一層,但它不負(fù)責(zé)數(shù)據(jù)包的順序、錯誤或重發(fā)。因此,UDP不應(yīng)用于那些使用虛電路的面向連接的服務(wù),而主要應(yīng)用于那些面向查詢—應(yīng)答的服務(wù),如NFS。相對于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP(網(wǎng)絡(luò)時(shí)間協(xié)議)和DNS(DNS也使用TCP)。欺騙UDP包比欺騙TCP包更容易,因?yàn)閁DP沒有建立初始化連接(也可以稱為握手,因?yàn)樵趦蓚€(gè)系統(tǒng)間沒有虛電路)。也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。10.1.2IP地址與端口網(wǎng)際互聯(lián)協(xié)議(IP)用于數(shù)據(jù)包在互聯(lián)的網(wǎng)絡(luò)設(shè)備間傳送。這些設(shè)備都帶有一個(gè)稱為IP地址的邏輯地址。由網(wǎng)際互聯(lián)協(xié)議提供的IP地址具有特定的形式。每個(gè)IP地址都是32位的數(shù)值,通常由4個(gè)范圍在0~255之間的8位數(shù)值表示,如。在Internet上,各主機(jī)間通過TCP/IP協(xié)議發(fā)送和接收數(shù)據(jù)包,各個(gè)數(shù)據(jù)包根據(jù)其目的主機(jī)的IP地址來進(jìn)行互聯(lián)網(wǎng)絡(luò)中的路由選擇。可見,數(shù)據(jù)包順利地傳送到目的主機(jī)是可以的。但是大多數(shù)操作系統(tǒng)都支持多程序(進(jìn)程)同時(shí)運(yùn)行,那么目的主機(jī)應(yīng)該把接收到的數(shù)據(jù)包傳送給同時(shí)運(yùn)行的哪一個(gè)進(jìn)程呢?為了解決這個(gè)問題,端口(port)機(jī)制便被引入進(jìn)來。本地操作系統(tǒng)會給那些有需求的進(jìn)程分配協(xié)議端口(protocolport,即我們常說的端口),每個(gè)協(xié)議端口由一個(gè)正整數(shù)標(biāo)識。當(dāng)目的主機(jī)接收到數(shù)據(jù)包后,將根據(jù)包文首部的目的端口號,把數(shù)據(jù)發(fā)送到相應(yīng)端口,而與此端口相對應(yīng)的那個(gè)進(jìn)程將會讀取數(shù)據(jù)并等待下一組數(shù)據(jù)的到來。不光接收數(shù)據(jù)包的進(jìn)程需要開啟端口,發(fā)送數(shù)據(jù)包的進(jìn)程也需要開啟端口,這樣,數(shù)據(jù)包中將會標(biāo)識有源端口,以便接收方能順利地回傳數(shù)據(jù)包到這個(gè)端口。如果沒有指明端口號,則使用服務(wù)文件中服務(wù)器的端口。每種協(xié)議有一個(gè)缺省的端口號,在端口號未指明時(shí)使用該缺省端口號。端口號應(yīng)用如下:21FTP:傳輸文件。23Telnet:提供遠(yuǎn)程登錄。25SMTP:傳遞郵件信息。67BOOTP:在啟動時(shí)提供配置情況。80HTTP:傳輸Web頁。109POP:使用戶能訪問遠(yuǎn)程系統(tǒng)中的郵箱。10.1.3URL統(tǒng)一資源定位符(UniformResourceLocator,URL)是對可以從互聯(lián)網(wǎng)上得到的資源位置和訪問方法的一種簡潔表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。URL的組成形式為protocol://resourceName,其中協(xié)議名(protocol)指明獲取資源所使用的傳輸協(xié)議,如http、ftp、gopher、file等;資源名(resourceName)則應(yīng)該是資源的完整地址,包括主機(jī)名、端口號、文件名或文件內(nèi)部的一個(gè)引用。10.2Java網(wǎng)絡(luò)技術(shù)架構(gòu)Java最初是作為一種網(wǎng)絡(luò)編程語言出現(xiàn)的,它能夠使用網(wǎng)絡(luò)上的各種資源和數(shù)據(jù),與服務(wù)器建立各種傳輸通道,將自己的數(shù)據(jù)傳送到網(wǎng)絡(luò)的各個(gè)地方。Java中有關(guān)的網(wǎng)絡(luò)功能都定義在程序包中。Java所提供的網(wǎng)絡(luò)功能可分為以下三種:URL和URLConnection是功能中最高級的一種。通過URL的網(wǎng)絡(luò)資源表達(dá)方式,很容易確定網(wǎng)絡(luò)上數(shù)據(jù)的位置。利用URL的表示和建立,Java程序可以直接讀取網(wǎng)絡(luò)上的數(shù)據(jù),或把自己的數(shù)據(jù)傳送到網(wǎng)絡(luò)的另一端。所謂Socket,可以想象成兩個(gè)不同的程序通過網(wǎng)絡(luò)的通道,這是傳統(tǒng)網(wǎng)絡(luò)程序中最常用的方法。一般在TCP/IP網(wǎng)絡(luò)協(xié)議下的客戶服務(wù)器軟件采用Socket作為交互的方式。Datagram是功能中最低級的一種。其他網(wǎng)絡(luò)數(shù)據(jù)傳送方式都假想在程序執(zhí)行時(shí),建立一條安全穩(wěn)定的通道。但是以Datagram的方式傳送數(shù)據(jù)時(shí),只是把數(shù)據(jù)的目的地記錄在數(shù)據(jù)包中,然后就直接放在網(wǎng)絡(luò)上進(jìn)行傳輸,系統(tǒng)不保證數(shù)據(jù)一定能夠安全送到,也不能確定什么時(shí)候可以送到。也就是說,Datagram不能保證傳送質(zhì)量。10.3URL編程Java網(wǎng)絡(luò)API通過提供URL類讓我們能在源代碼層使用URL。每一個(gè)URL對象都封裝了資源的標(biāo)識符和協(xié)議處理程序。通過調(diào)用URL構(gòu)造函數(shù)來建立URL對象后,我們可以通過調(diào)用URL的方法來提取URL的組件,打開一個(gè)輸入流(InputStream),從中讀取信息,獲得某個(gè)能方便檢索資源數(shù)據(jù)的對象的引用,然后比較兩個(gè)URL對象中的URL,獲得資源的連接對象,該連接對象允許代碼了解并寫入更多的資源信息。10.3.1創(chuàng)建URL對象為了表示URL,中實(shí)現(xiàn)了類URL。我們可以通過下面的構(gòu)造方法來初始化一個(gè)URL對象:(1)?publicURL(Stringspec);通過一個(gè)表示URL地址的字符串可以構(gòu)造一個(gè)URL對象。URLurlBase=newURL("http://www.263.net/")(2)?publicURL(URLcontext,Stringspec);通過基于URL和相對URL構(gòu)造一個(gè)URL對象。URLnet263=newURL("/");URLindex263=newURL(net263,"index.html");(3)?publicURL(Stringprotocol,Stringhost,Stringfile);newURL("http","","/pages/G.html");(4)?publicURL(Stringprotocol,Stringhost,intport,Stringfile);URLgamelan=newURL("http","",80,"Pages/Gwork.html");注意:類URL的構(gòu)造方法都聲明拋出非運(yùn)行時(shí)異常(MalformedURLException),因此生成URL對象時(shí),我們必須要對這一異常進(jìn)行處理,即:try{URLmyURL=newURL("")}catch(MalformedURLExceptione){…}10.3.2獲取URL對象的信息一個(gè)URL對象生成后,其屬性是不能被改變的,但是我們可以通過以下類URL所提供的方法來獲取這些屬性:?publicStringgetProtocol():獲取該URL的協(xié)議名。?publicStringgetHost():獲取該URL的主機(jī)名。?publicintgetPort():獲取該URL的端口號,如果沒有設(shè)置端口,返回-1。?publicStringgetFile():獲取該URL的文件名。?publicStringgetRef():獲取該URL在文件中的相對位置。?publicStringgetQuery():獲取該URL的查詢信息。?publicStringgetPath():獲取該URL的路徑。?publicStringgetAuthority():獲取該URL的權(quán)限信息。?publicStringgetUserInfo():獲得使用者的信息。?publicStringgetRef():獲得該URL的錨。10.4Socket編程Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面。對用戶來說,一組簡單的接口就是全部,由Socket去組織數(shù)據(jù),符合指定的協(xié)議。服務(wù)器端先初始化Socket,然后與端口綁定(Bind),對端口進(jìn)行監(jiān)聽(Listen),調(diào)用accept(),等待客戶端連接。在這時(shí)如果有個(gè)客戶端初始化一個(gè)Socket,然后連接(Connect)服務(wù)器,若連接成功,則客戶端與服務(wù)器端的連接就建立了??蛻舳税l(fā)送數(shù)據(jù)請求,服務(wù)器端接收請求并處理,然后把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),最后關(guān)閉連接,交互結(jié)束。10.4.1Socket類和ServerSocket類Java在包中提供了Socket和ServerSocket兩個(gè)類,分別用來表示雙向連接的客戶端和服務(wù)端。其構(gòu)造方法如下:Socket(InetAddressaddress,intport);Socket(InetAddressaddress,intport,booleanstream);Socket(Stringhost,intprot);Socket(Stringhost,intprot,booleanstream);Socket(SocketImplimpl);Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort);Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort);ServerSocket(intport);ServerSocket(intport,intbacklog);ServerSocket(intport,intbacklog,InetAddressbindAddr);其中,address、host和port分別是雙向連接中另一方的IP地址、主機(jī)名和端口號;stream指明Socket是Socket流還是Socket數(shù)據(jù)報(bào);localPort表示本地主機(jī)的端口號;localAddr和bindAddr是本地機(jī)器的地址(ServerSocket的主機(jī)地址);impl是Socket的父類,既可以用來創(chuàng)建serverSocket,又可以用來創(chuàng)建Socket;count則表示服務(wù)端所能支持的最大連接數(shù)。注意,在選擇端口時(shí),必須小心。每一個(gè)端口提供一種特定的服務(wù),只有給出正確的端口,才能獲得相應(yīng)的服務(wù)。0~1023的端口號為系統(tǒng)所保留,例如,http服務(wù)的端口號為80,telnet服務(wù)的端口號為21,ftp服務(wù)的端口號為23,所以我們在選擇端口號時(shí),最好選擇一個(gè)大于1023的數(shù)以防止發(fā)生沖突。在創(chuàng)建Socket時(shí)如果發(fā)生錯誤,將產(chǎn)生IOException,在程序中必須對此作出處理。所以,在創(chuàng)建Socket或ServerSocket時(shí)必須捕獲或拋出異常。10.4.2So
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 眉山藥科職業(yè)學(xué)院《軟件工程與》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度校園食堂承包與食品安全監(jiān)管合同3篇
- 2024年度汽車貸款信用保證保險(xiǎn)合同3篇
- 2024年標(biāo)準(zhǔn)版房地產(chǎn)項(xiàng)目資本金監(jiān)管協(xié)議版B版
- 2024年版:教育貸款申請合同3篇
- 影調(diào)的造型作用
- 呂梁師范高等專科學(xué)?!吨袊鞘邪l(fā)展史》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024全新指紋鎖智能家居控制系統(tǒng)集成合同2篇
- 2024年特色手工藝品買賣合同詳細(xì)
- 2024年標(biāo)準(zhǔn)膩?zhàn)邮┕趧?wù)分包合同樣本版B版
- T-CCIIA 0004-2024 精細(xì)化工產(chǎn)品分類
- 低年級革命文化類課文教學(xué)探析
- TPM知識競賽題庫含答案
- 中國成人失眠診斷與治療指南(2023版)解讀
- 解析德意志意識形態(tài)中的難解之謎生產(chǎn)關(guān)系概念與交往形式等術(shù)語的關(guān)系
- 皮膚疾病超聲檢查指南(2022版)
- 國開機(jī)考答案-工程力學(xué)(本)(閉卷)
- 2024醫(yī)院護(hù)士聘用合同
- 錢轉(zhuǎn)入別人帳戶協(xié)議書
- 《公路工程集料試驗(yàn)規(guī)程》JTG-3432-2024考核試題及答案文檔
- 血液透析疑難病例討論
評論
0/150
提交評論