IP地址的合法性及子網(wǎng)判斷-JAVA.doc_第1頁(yè)
IP地址的合法性及子網(wǎng)判斷-JAVA.doc_第2頁(yè)
IP地址的合法性及子網(wǎng)判斷-JAVA.doc_第3頁(yè)
IP地址的合法性及子網(wǎng)判斷-JAVA.doc_第4頁(yè)
IP地址的合法性及子網(wǎng)判斷-JAVA.doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余11頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

學(xué) 號(hào): 0121010680221課 程 設(shè) 計(jì)題 目IP地址的合法性及子網(wǎng)判斷學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)軟件工程班 級(jí)1002姓 名王思騰指導(dǎo)教師劉東飛2013年6月 19日目 錄1任務(wù)書32相關(guān)知識(shí)43課程設(shè)計(jì)分析64 程序清單及注釋95 運(yùn)行結(jié)果分析及結(jié)論126 心得感悟。147 參考文獻(xiàn)14課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 王思騰 專業(yè)班級(jí): 軟件1002班 指導(dǎo)教師: 劉東飛 工作單位: 計(jì)算機(jī)學(xué)院 題目四: IP地址的合法性及子網(wǎng)判斷 初始條件:(1)學(xué)習(xí)相關(guān)知識(shí)(2)C/C+/VC/VB/JAVA語(yǔ)言(3)PC機(jī)一臺(tái)要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書撰寫等具體要求)在掌握IP地址表示方法及子網(wǎng)劃分的基礎(chǔ)上,按如下要求完成程序。1)命令行格式:ip_test subnet/mask ip_addr, ip_test其中為程序名;subnet為子網(wǎng)號(hào);mask是一個(gè)數(shù)值,代表子網(wǎng)掩碼連續(xù)1的個(gè)數(shù);ip_addr是要測(cè)試的IP地址。例如,要測(cè)試的IP地址為202.114.16.10,子網(wǎng)號(hào)為202.113.16.0,子網(wǎng)掩碼為255.255.255.0,則命令行為ip_test 202.113.16.0/24 202.114.16.10(因?yàn)?55.255.255.0是連續(xù)的24個(gè)1,所以用24表示)。2)判斷subnet和ip_addr的合法性。在判斷IP地址合法性時(shí)要自行編寫代碼,不要使用任何inet函數(shù)。判斷時(shí)要考慮全面,比如以下IP地址均不合法:123.2.1 / 123.23$.2.1 / 123.2345.2.1 / 123.23.45.2.13)判斷掩碼的合法性。4)在IP地址合法的前提下,判斷ip_addr是否屬于子網(wǎng)subnet。5)輸出命令行中的ip是否合法,掩碼是否合法(可適當(dāng)給出不合法的原因)以及ip_addr是否屬于子網(wǎng)subnet。時(shí)間安排:第一、二天:查閱資料,學(xué)習(xí)算法第三、四天:編程調(diào)試第五天:書寫報(bào)告指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日2、相關(guān)知識(shí):1. IP地址相關(guān)概念所謂IP地址就是給每個(gè)連接在Internet上的主機(jī)分配的一個(gè)32bit地址。 按照TCP/IP(Transport Control Protocol/Internet Protocol,傳輸控制協(xié)議/Internet協(xié)議)協(xié)議規(guī)定,IP地址用二進(jìn)制來(lái)表示,每個(gè)IP地址長(zhǎng)32bit,比特?fù)Q算成字節(jié),就是4個(gè)字節(jié)。例如一個(gè)采用二進(jìn)制形式的IP地址是“00001010000000000000000000000001”,這么長(zhǎng)的地址,人們處理起來(lái)也太費(fèi)勁了。為了方便人們的使用,IP地址經(jīng)常被寫成十進(jìn)制的形式,中間使用符號(hào)“”分開不同的字節(jié)。于是,上面的IP地址可以表示為“10001”。IP地址的這種表示法叫做“點(diǎn)分十進(jìn)制表示法”,這顯然比1和0容易記憶得多。 大型的互連網(wǎng)絡(luò)中應(yīng)該有一個(gè)全局的地址系統(tǒng),它能夠給連接到互聯(lián)網(wǎng)的每一臺(tái)主機(jī)或者路由器分配一個(gè)唯一的全局地址。TCP/IP協(xié)議的網(wǎng)絡(luò)層使用的地址標(biāo)識(shí)符叫做IP地址,IPv4中IP地址是一個(gè)32位的二進(jìn)制地址。網(wǎng)絡(luò)中的每一臺(tái)主機(jī)或者路由器至少有一個(gè)IP地址,在Internet中不允許有兩個(gè)設(shè)備具有相同的IP地址。如果一臺(tái)主機(jī)或者路由器連接到兩個(gè)或多個(gè)物理網(wǎng)絡(luò),那么它可以擁有兩個(gè)或多個(gè)IP地址。IP地址采用分層結(jié)構(gòu),由網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)兩部分組成(如下圖所示):網(wǎng)絡(luò)號(hào)主機(jī)號(hào)IP地址長(zhǎng)度為32位,用點(diǎn)分十進(jìn)制表示,格式為.,每個(gè)為8位,每個(gè)的值為0255(例如202.113.29.119)。根據(jù)不同的取值范圍,IP地址可以分為五類,IP地址中的前5位用于標(biāo)識(shí)IP地址的類別,具體的分類規(guī)則如下:A類地址的第一位為0。B類地址的前兩位為10 .C類地址的前三位為110。D類地址的前四位為1110。E類地址的前五位為11110。五類IP地址的結(jié)構(gòu)如下所示;0網(wǎng)絡(luò)號(hào)(7位)主機(jī)號(hào)(24位)10網(wǎng)絡(luò)號(hào)(14位)主機(jī)號(hào)(16位)110網(wǎng)絡(luò)號(hào)(21位)主機(jī)號(hào)(8位)1110組播地址(28位)11110保留用于課程設(shè)計(jì)和將來(lái)使用A類IP地址結(jié)構(gòu)適合用于有大量主機(jī)的大型網(wǎng)絡(luò)。由于主機(jī)號(hào)長(zhǎng)度為24位,因此每個(gè)A類網(wǎng)絡(luò)的主機(jī)IP數(shù)理論上為224=16777216。B類IP地址適合用于一些國(guó)際性大公司與政府機(jī)構(gòu)等中等大小的組織。由于網(wǎng)絡(luò)IP長(zhǎng)度為14位,因此允許有214=16384個(gè)不同的B類網(wǎng)絡(luò),實(shí)際允許連接16382個(gè)網(wǎng)絡(luò)。C類IP地址適合用于一些小公司與普通的研究機(jī)構(gòu)。2. 特殊的IP地址形式(1) 直接廣播地址A類,B類,C類IP地址中主機(jī)號(hào)全1的地址稱為直接廣播地址,用來(lái)使路由器將一個(gè)分組以廣播方式發(fā)送給特定網(wǎng)絡(luò)上的所有主機(jī)。直接廣播地址只能作為分組中的目的地址。物理網(wǎng)絡(luò)采用的是點(diǎn)點(diǎn)傳輸方式,分組廣播需要通過(guò)軟件來(lái)實(shí)現(xiàn)。網(wǎng)絡(luò)號(hào)主機(jī)號(hào)全1(2)受限廣播地址網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的32位全位1的地址為受限廣播地址,用來(lái)將一個(gè)分組以廣播方式發(fā)送給本網(wǎng)的所有主機(jī)。本網(wǎng)的所有主機(jī)將接受該分組,路由器則阻擋該分組通過(guò)。全1(3) “這個(gè)網(wǎng)絡(luò)上的這臺(tái)主機(jī)”地址全0(4)“這個(gè)網(wǎng)絡(luò)上的特定主機(jī)”地址主機(jī)或路由器向本網(wǎng)絡(luò)上的某個(gè)特定的主機(jī)發(fā)送分組,網(wǎng)絡(luò)號(hào)部分為全0,主機(jī)號(hào)為確定的值。這樣的分組被相知在本網(wǎng)絡(luò)內(nèi)部。網(wǎng)絡(luò)號(hào)全0主機(jī)號(hào)(5)回送地址回送地址用于網(wǎng)絡(luò)軟件測(cè)試和本地進(jìn)程見通信。TCP/IP協(xié)議規(guī)定網(wǎng)絡(luò)號(hào)為127的分組不能出現(xiàn)在任何網(wǎng)絡(luò)上;主機(jī)和路由器不能為該地址廣播任何尋址信息。127任意值(通常取1)3子網(wǎng)的劃分人們?cè)谠缙谠O(shè)計(jì)與建設(shè)ARPAnet是,沒(méi)有預(yù)料到網(wǎng)絡(luò)的發(fā)展速度如此之快,應(yīng)用范圍如此之廣。當(dāng)時(shí)個(gè)人計(jì)算機(jī)與局域網(wǎng)尚未出現(xiàn)。所以,研究者在設(shè)計(jì)Internet地址的編址方案時(shí),主要是針對(duì)大型互聯(lián)的網(wǎng)絡(luò)結(jié)構(gòu)。設(shè)計(jì)IP地址的最初目的是希望每個(gè)IP得志都能唯一地、確定地識(shí)別一個(gè)網(wǎng)絡(luò)與一臺(tái)主機(jī),但是這種方法同時(shí)也存在著兩個(gè)主要的問(wèn)題,即IP地址的有效利用率和路由器的工作效率。為了解決這個(gè)問(wèn)題,人們提出了子網(wǎng)(subnet)和超網(wǎng)(supernet)的概念。子網(wǎng)就是一個(gè)大的網(wǎng)絡(luò)劃分成幾個(gè)較小的網(wǎng)絡(luò),而每一個(gè)小網(wǎng)絡(luò)都是其自己的地址。超網(wǎng)就是將一個(gè)組織所屬的幾個(gè)C類網(wǎng)絡(luò)合并成為一個(gè)更大地址范圍的邏輯網(wǎng)絡(luò)。劃分子網(wǎng)實(shí)際上就是在IP地址系統(tǒng)中增加一個(gè)層次。三級(jí)IP地址的表示方法為netID-subnet ID-host ID。第一級(jí)網(wǎng)絡(luò)號(hào)定義了網(wǎng)點(diǎn)的位置;第二級(jí)子網(wǎng)號(hào)定義了物理子網(wǎng);第三級(jí)主機(jī)號(hào)定義了主機(jī)和路由器到物理網(wǎng)絡(luò)的連接。三級(jí)層次的IP地址,一個(gè)IP分組的路由器的過(guò)程分為三步:第一步將分組轉(zhuǎn)發(fā)給網(wǎng)點(diǎn),第二步轉(zhuǎn)發(fā)給物理子網(wǎng),第三步轉(zhuǎn)發(fā)給確切的主機(jī)。當(dāng)三級(jí)層次的IP地址提出后,一個(gè)很顯示的問(wèn)題是:如何從一個(gè)IP地址提取出子網(wǎng)號(hào)。因此,提出了子網(wǎng)掩碼(subnet mask)的概念。子網(wǎng)掩碼有時(shí)也叫做子網(wǎng)掩碼。子網(wǎng)掩碼表示方法:網(wǎng)絡(luò)號(hào)與子網(wǎng)號(hào)置1,主機(jī)號(hào)置0。如判斷某一IP地址是否屬于某一子網(wǎng)呢?只需將二進(jìn)制IP地址與子網(wǎng)掩碼按位進(jìn)行“與”運(yùn)算。若“與”運(yùn)算所得值與給定子網(wǎng)地址一致,則說(shuō)明該IP地址屬于給定的子網(wǎng)。3、課程設(shè)計(jì)分析:在掌握IP地址的表示方法以及子網(wǎng)劃分方法的基礎(chǔ)上,并以計(jì)算機(jī)網(wǎng)絡(luò)中關(guān)于IP地址的相關(guān)理論知識(shí)為基石,運(yùn)用C/C+語(yǔ)言按如下要求完成程序。3.1在判斷一個(gè)IP地址合法性時(shí)要自行編寫代碼,不要使用任何inet函數(shù)3.2命令行格式:ip_test subnet/mask ip_addr其中,ip_test為程序名;subnet為子網(wǎng)號(hào);mask是一個(gè)整型數(shù)值,代表子網(wǎng)掩碼連續(xù)1的個(gè)數(shù);ip_addr表示要測(cè)試的IP地址。比如說(shuō),要測(cè)試的IP地址為202.113.16.10,子網(wǎng)號(hào)碼是202.113.16.0,子網(wǎng)掩碼是255.255.255.0,則命令行為ip_test202.113.16.0/24 202.113.16.10。(因?yàn)?55.255.255.0是連續(xù)的24個(gè)1,所以用24表示)3.3判斷subnet和ip_addr的合法性。在判斷IP地址合法性時(shí)要自行編寫代碼,不要使用任何inet函數(shù)。判斷時(shí)要考慮各種情況,全面分析問(wèn)題。例如以下IP地址均不合法:123.2.1123.23$.2.1123.2345.2.1123.23.45.13.4判斷掩碼的合法性。無(wú)論是哪類地址,掩碼的第一個(gè)字段都是255。如果不是,一定是掩碼非法。3.5在IP地址、掩碼以及子網(wǎng)號(hào)都合法的前提下,判斷ip是否屬于subnet。 需要進(jìn)行與運(yùn)算(&),將ip、subnet_mask相與,將得到的結(jié)果與subnet比較,如果相同,則證明該ip屬于subnet。3.6輸出命令行中的ip是否合法,掩碼是否合法,子網(wǎng)號(hào)碼是否合法(可適當(dāng)給出不合法的原因)以及ip是否屬于子網(wǎng)subnet。3.7程序流程圖:(見下頁(yè))NYYNNYNYNY 讀取一個(gè)字符串總長(zhǎng)不超過(guò)15? return段數(shù)=4? 每段的值是否介于0到255input(subnet)是否為真Ip&subnet_mask=subnetsubnet_Mask首段是否為255 子網(wǎng)號(hào)與掩碼不匹配 程序結(jié)束 輸出”掩碼非法”調(diào)用input 函數(shù) 輸出”ip地址非法”輸出”子網(wǎng)非法”YN 程序開始,變量初始化4、程序清單及注釋:package iptest;import java.util.*;class inputScanner scanner = new Scanner(System.in); String s= scanner.nextLine(); int flag; /判斷輸入的IP地址是否合法,如果不合法從新輸入,flag=1為不合法;input() flag=0; char a=s.toCharArray(); if(s.length()15) System.out.println(地址總長(zhǎng)超過(guò)15); flag=1; for(int i=0;is.length();i+)/判斷是否存在非法字符,分隔符只能為3個(gè), if(ai9) & ai!=.) System.out.println(地址中包含非法字符!); flag=1; break; int dian=0; for(int i=0;is.length();i+)/判斷是否存在非法字符,分隔符只能為3個(gè), if(ai=.) dian+; if(dian!=3) System.out.println(地址中分隔符只能為3個(gè)!); flag=1; for(int i=0;is.length()-1;i+)/判斷是否出現(xiàn)連續(xù)的分隔符 if(ai=. & ai+1=.) System.out.println(地址中不能出現(xiàn)連續(xù)的分隔符!); flag=1; break; if(as.length()-1=.)/判斷是否最后位為分隔符 System.out.println(地址最后位不能為分隔符!); if(a0=.)/判斷是否首位為分隔符 System.out.println(地址首位不能為分隔符!); flag=1; String sss=s.split(.); for(int o=0;osss.length;o+) for(int p=0;p255|num0)System.out.println(ERROR!地址不在0至255之間!);flag=1;break; class subnet_mask extends input /*判斷子網(wǎng)掩碼第一個(gè)字節(jié)是否為255*/int flag2=0;/判斷輸入的子網(wǎng)掩碼是否合法,如果不合法從新輸入,flag=1表示輸入錯(cuò)誤; subnet_mask() String dian_s1=s.split(.); int first=Integer.parseInt(dian_s10); if(first!=255) System.out.println(地址第一字節(jié)不是255!); flag2=1; public class iptest public static void main(String g) System.out.println(請(qǐng)輸入IP地址); input IP=new input(); while(IP.flag=1) System.out.println(輸入IP地址有誤,請(qǐng)重新輸入IP地址:); input xin_IP=new input(); IP.s=xin_IP.s; if(xin_IP.flag=0) break; System.out.println(請(qǐng)輸入子網(wǎng)號(hào));input subnet=new input(); while(subnet.flag=1) System.out.println(您輸入的子網(wǎng)號(hào)有錯(cuò)誤!請(qǐng)重新輸入子網(wǎng)號(hào):); input xin_subnet=new input(); subnet.s=xin_subnet.s; if(xin_subnet.flag=0) break; System.out.println(請(qǐng)輸入子網(wǎng)掩碼); subnet_mask new3=new subnet_mask(); while(new3.flag=1|new3.flag2=1) System.out.println(您輸入的子網(wǎng)掩碼有錯(cuò)誤!請(qǐng)重新輸入子網(wǎng)掩碼:); input xin_new3=new input(); new3.s=xin_new3.s; if(xin_new3.flag=0) break; /*判斷輸入的Ip地址是否屬于子網(wǎng)*/ String s=IP.s; String s2=new3.s; String s3=subnet.s; String split_s=s.split(.); String split_s2=s2.split(.); System.out.println(您輸入的IP地址是:+IP.s); System.out.println(您輸入的子網(wǎng)地址是:+subnet.s); System.out.println(您輸入的子網(wǎng)掩碼是:+new3.s); /得出 XX int x00=Integer.parseInt(split_s0); int x22=Integer.parseInt(split_s20); int and_x=x00&x22;/進(jìn)行與運(yùn)算 String right_mask =String.valueOf(and_x); /得出余下的.XX.XX.XX 并和之前得出的XX合并 for(int i=1;i4;i+) int x=Integer.parseInt(split_si); int x2=Integer.parseInt(split_s2i); int and_x12=x&x2;/進(jìn)行與運(yùn)算 String and_x11 =String.valueOf(and_x12); right_mask=right_mask.concat(.); right_mask=right_mask.concat(and_x11); /將得到的XX.XX.XX.XX和輸入的子網(wǎng)掩碼比較,如果相同,則證明屬于,不同則不屬于 if(right_mask.equals(s3) System.out.println(您輸入的IP地址屬于子網(wǎng)+subnet.s); else System.out.println(您輸入的IP地址(+IP.s+)+不屬于子網(wǎng)+subnet.s); 5、程序結(jié)果分析及結(jié)論: 5.1 連續(xù)輸入兩個(gè)“.”,顯示輸入非法 5.2 輸入字段中有大于255或小于0的現(xiàn)象,顯示輸入非法5.3 子網(wǎng)掩碼地址的第一字段不是255,顯示輸入非法5.4 得出結(jié)果ip屬于subnet5.5 得出結(jié)果ip不屬于subnet分析: 其實(shí)就是利用split()將用戶手動(dòng)輸入的ip地址和subnet_mask以“.”為界限分為四個(gè)小段,并將它們賦值給String類,然后分別將它們轉(zhuǎn)化為int類型,逐段相與,再將相與得到的四小段以“.”為分隔符“拼接”起來(lái),最后一步是將最后得到的這一字符串與之前輸入的subnet比較,如果相同則該ip地址輸入subnet。6感悟與體會(huì)這次最大的體會(huì)就是要找對(duì)方法,起初也是一頭霧水,寫了幾行代碼發(fā)現(xiàn)其實(shí)一點(diǎn)進(jìn)度都沒(méi)有,冷靜下來(lái)仔細(xì)思考之后其實(shí)并不難。判斷一個(gè)ip地址是否屬于一個(gè)子網(wǎng),就是要將ip地址和子網(wǎng)掩碼轉(zhuǎn)化為二進(jìn)制后相與,看得到的結(jié)果是否和子網(wǎng)相同,相

溫馨提示

  • 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. 人人文庫(kù)網(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)論