<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    廉頗老矣,尚能飯否

    java:從技術(shù)到管理

    常用鏈接

    統(tǒng)計

    最新評論

    怎樣用JSP獲取當前用戶的網(wǎng)卡IP和MAC地址?[轉(zhuǎn)載]

    隨著Internet技術(shù)的飛速發(fā)展,企業(yè)信息系統(tǒng)逐步轉(zhuǎn)向Intranet化,建立Web服務(wù)器作為企業(yè)信息的發(fā)布和交換平臺。但是,從企業(yè)信息安全角度出發(fā),應(yīng)該建立企業(yè)信息有限度的開放機制,保證用戶在規(guī)定的權(quán)限范圍內(nèi)的獲取相應(yīng)的信息。常規(guī)的安全檢查方法就是設(shè)立用戶身份驗證機制,即在Web服務(wù)器上進行口令和IP地址過濾。可是,企業(yè)內(nèi)部網(wǎng)絡(luò)工作站的IPI地址是動態(tài)分配,沒有固定的地址,而且容易被假旦。口令檢查方式又增加用戶記憶上的負擔(dān),容易被別人獲取。由于網(wǎng)絡(luò)工作站上的網(wǎng)卡地址是全世界唯一和固定不變的,可以作為安全檢查的身份標識。當用戶通過瀏覽器訪問企業(yè)的Web服務(wù)器的時候,采用的網(wǎng)絡(luò)通信HTTP協(xié)議是工作在TCP/IP協(xié)議上,是基于網(wǎng)絡(luò)層的協(xié)議,而AC地址是在鏈路層上的設(shè)備才會關(guān)心的東西,所以通常情況下兩臺機器互訪是通過廣播或ARP(Address   Resolution   Protocol)協(xié)議得到相互的MAC地址后進行通信,而基于TCP/IP協(xié)議編程是很難獲取對方的MAC地址的。因為路由器要準確地投遞網(wǎng)絡(luò)數(shù)據(jù)包,必須擁有網(wǎng)絡(luò)上最完整ARP地址識別表,該表存放于路由器上的SNMP   MIB管理信息庫中,所以應(yīng)從這些網(wǎng)絡(luò)設(shè)備入手獲取MAC地址。根據(jù)該思路,我們采用了根據(jù)用戶網(wǎng)絡(luò)MAC地址進行身份驗證的安全機制,已在我局的計算機城域網(wǎng)上實際運行了一年多的時間,證明是一種簡易有效的安全檢查手段。  
       
      一、技術(shù)思路  
       
      瀏覽器/服務(wù)器的模式是一種把標準輸入輸出定向到客戶端的瀏覽器上,而運算過程在服務(wù)器上的一種操作,所以當某個瀏覽器訪問相應(yīng)的主頁時,它的一些基本信息就會提交給服務(wù)器,這些信息包括了瀏覽器的名稱,版本號等,同時也包括了我們所關(guān)心的客戶端的IP地址,該地址存放于環(huán)境變量REMOTE   ADDR中。  
       
      當我們獲得了這引會址后,下一步工作就是去詢問該機器的MAC地址,這也是編程最重要的一步。要從路由器中取到ARP的信息,就要進行基于網(wǎng)絡(luò)的SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)編程。SNMP協(xié)議目前最常用的有兩個版本,通常稱之為v1和v2。一般情況下v2向下兼容v1版,但有時也有例外。SNMP   MIB管理信息庫的存儲方式是一種目錄樹的結(jié)構(gòu),而且它總是開始于:iso.   Org.   Dod翻譯成數(shù)字就是.1.3.6,這就是我們所說的MIB(Management   Information   Base,管理信息庫)的格式,而關(guān)于物理地址的MIB就是:iso.   Org.   Dod.   Internet.   Mgmt.   Mib.   At.   AtTable.   AtEnty.   AtPhysAddress(1.3.6.1.2.1.3.1.1.2)。  
       
      所以基于上述思路,該程序整個處理流程就是這樣設(shè)計的,當有人訪問Web服務(wù)器的主頁,便激活MAC.EXE(用C語言編寫),而當該程序獲得了客戶機的IP地址后,自動激活一個叫sn.   Class的java程序,sn.   Class便通過相應(yīng)的MIB值向路由器詢問此IP的MAC地址,并將結(jié)果傳遞給MAC.EXE,而AC.EXE將獲取的這個MAC地址到自身Web服務(wù)器上的已登記合法的MAC地址庫內(nèi)查找,若已在MAC地址庫登記的,則通過身份驗證,把其相應(yīng)的主頁信息呈現(xiàn)在客戶端的屏幕上;否則,驗證失敗,拒絕訪問。  
       
      二、SNMP協(xié)議的MIB管理信息庫  
       
      由于上述技術(shù)思路涉及SNMP協(xié)議及其MIB管理信息庫,這里做一下簡要說明。SNMP標準主要由三部人組成:簡單網(wǎng)絡(luò)管理協(xié)議(SNMP);管理信息結(jié)構(gòu)(Structure   ofanagement   Information,簡稱SMI,RFC1155標準)和管理信息庫(MIB,RFC1156、RFC1158標準)。  
       
      管理信息結(jié)構(gòu)(SMI)和管理信息庫(MIB)兩個協(xié)議是關(guān)于管理信息的標準,它們規(guī)定了被管理的網(wǎng)絡(luò)對象的定義格式,MIB庫中都包含哪些對象以及怎樣訪問這些對象等等。  
       
      SMI協(xié)議規(guī)定了定義和標識MIB變量的一組原則。它規(guī)定所有的MIB變量必須用ASN.1(即抽象語法表示法I,它是一種描述數(shù)據(jù)結(jié)構(gòu)的通用方法,作為OSI研究的一部分,由ISSO推出)來定義。  
       
       
       
      每個MIB變量都有一個名稱用來標識。在SMI中,這個名稱以對象標識符(Object   Identifier)來表示。對象標識符相互關(guān)聯(lián),共同構(gòu)成一個分層結(jié)構(gòu)。在這個分層結(jié)構(gòu)里,一個對象的標識符是由從根出發(fā)到對象所在節(jié)點的途中所經(jīng)過的一個數(shù)字標號序列組成。如圖中,Internet的對象標識符就是1.3.6.1,對象標識符的命名有專門的機構(gòu)負責(zé)。  
       
      在Internet節(jié)點下的mgmt節(jié)點,專門為管理信息庫分配了一個子樹,名為mib(1)。所有的MIB變量都在mib節(jié)點下,因此它們的名稱(對象標識符)都以iso.org.dod.internet.mgmt.mib開關(guān),數(shù)字表示是1.3.6.1.2.1。  
       
      路由器中的路由表MIB中就有網(wǎng)絡(luò)中工作站IP地址與MAC地址的對應(yīng)表。在CISCO路由器的路由表中,這種信息一般放在樹型結(jié)構(gòu)的{1.3.6.1.2.1.3.1.1.2.0.0.1.47}位置中,比如:一個IP地址為10.142.168.1的機器,它的MAC地址就存放在MIB表中{1.3.6.1.2.1.3.1.1.2.0.0.1.47}+{10.142.168.1}的這個位置上,知道了這個表結(jié)構(gòu)后,我們就可以通過編寫CGI程序來調(diào)用SNMP代理,讀取MIB管理信息表中的MAC地址。  
       
      三、獲取MAC地址的Java接口程序  
       
      我們可以通過好幾種方法來調(diào)用SNMP代理,如用C++來調(diào)用WINT下SNMP自帶的SNMP   API   FOR   WIN32的動態(tài)鏈接庫,也可以利用SNMP   PERL來編寫CGI程序完成這種功能,也可以用SNMP   Java程序來編寫。SNMP   Java程序類似于SNMP   PERL程序,它是Java程序類擴展庫,它提供了Java語言與SNMP代理接口的類庫,使程序員通過調(diào)用這個類庫很容易地操縱SNMP代理,獲取網(wǎng)絡(luò)路由表中儲存的網(wǎng)絡(luò)設(shè)備的各種信息;包括IP地址與MAC地址映射表。下面我介紹一下SNMP   Java獲取MAC信息的過程。首先在程序開頭加SNMP   Jva的擴展類,import   Snmp.   *;  
       
      ……  
       
      OIDStr[0]=new   String  
       
      (“.1.3.6.1.2.1.3.1.1.2.0.0.1.47.”+args[1]);定義IP地址與CAC地址的映射的位置  
       
      ……  
       
      api=new   SnmpAPI();   //產(chǎn)生一個SNMP代理的接口api.   Start();  
       
      snmpPDU   pdu=new   SnmpPDU(api);  
       
      pdu.   Command=apiGET_REQ_MSG;  
       
      SnmpSEssion   session=new   SnmpSession(api);  
       
      Session.   version=SnmpAPI.   SNMP   VERSION_1;  
       
      Session.   Peername=Host[I];//把路由器地址賦給線程SnmpOID   odi=new   SnmpOID(OIDStr[I],   api);   //產(chǎn)生一個對象標識符  
       
      If(oid.   ToValue()!=null)pdu.   AddNull(oid);  
       
      Try{Session.   Open();  
       
      Pdu=session.   SyncSend(pdu);//發(fā)出請求單元信息}catch   (SnmpException   e){}  
       
      If   (pdu=   =null){//timeout  
       
      System.   Out.   Println(“Request   timed   out   to:”+Host);  
       
      System.   Exit(1):}  
       
      SnmpVarBind   Varbind=(SnmpVarBind)  
       
      Pdu.   Variables.   FirstElement();//找到第一滿足條件的信息  
       
      PduStr=varbind.   ToString();//存放找到的所需的信息  
       
      四、通過編寫CGI程序?qū)崿F(xiàn)SNMP代理功能  
       
      我們用Java編寫一個sn.java程序,該程序的功能是根據(jù)給定的路由器地址(10.142.168.29)和主機IIP地址來獲得相應(yīng)IP地址主機的MAC地址,如:java   sn   10.142.168.29   10.142.169.1就會獲得10.142.169.1的MAC地址,再通過編寫一個C語言的CGI程序把Java程序執(zhí)行的結(jié)果讀取過來,和原有的合法MAC地址庫中的數(shù)據(jù)進行比較來驗證用戶是否僉。首先我們可通過讀取環(huán)境變量“REMOTEADDR”,該變量存放著請求用戶工作站的IP地址,作為執(zhí)行Java程序的一個參數(shù),再通過C語言的sprint函數(shù)來執(zhí)行Java程序sn:   Sprint(getmac,   “java   %   s   %   s”,   10.142.168.29.   remote   ipaddress);當C語言程序執(zhí)行這個函數(shù)時,Java程序就被執(zhí)行。并且getmac所指向的文件頭就是執(zhí)行結(jié)果的文件頭,我們再來讀取該文件,就可獲取remote   ipaddress所對應(yīng)的MAC地址,然后可用這個MAC地址與原有的合法MAC地址庫中數(shù)據(jù)相比較,從而驗證用戶是否為合法用戶。  
       
      五、結(jié)束語  
       
      硬件環(huán)境要求:  
       
      l   只能在局域網(wǎng)中(在某些特定的情況也可將其擴充到更遠一些的專線網(wǎng)絡(luò)  
       
      l   網(wǎng)絡(luò)連接協(xié)議必須采用TCP/IP  
       
      l   網(wǎng)絡(luò)中至少有一臺路由器或智能HUB  
       
      l   至少有一臺Web服務(wù)器  
       
      對系統(tǒng)軟件需求:  
       
      l   Java程序解釋器(JDK1.14以上版本)  
       
      l   GNU   C  
       
      以上兩個軟件均為免費軟件,可以在Internet上下載。前者可在http://www.sum.com站點取到,而GCC在http://www.gnu   org/software/gcc/gcc.html下可以下載。

    柳德才
    13691193654
    18942949207
    QQ:422157370
    liudecai_zan@126.com
    湖北-武漢-江夏-廟山

    posted on 2009-02-14 16:12 liudecai_zan@126.com 閱讀(2792) 評論(1)  編輯  收藏 所屬分類: 在路上

    評論

    # re: 怎樣用JSP獲取當前用戶的網(wǎng)卡IP和MAC地址?[轉(zhuǎn)載][未登錄] 2010-04-21 15:42 Nick

    似乎在哪里看到過啊,http://zenglingjun.blog.51cto.com/541909/197613這個地址還有代碼,不仿去看看  回復(fù)  更多評論   

    主站蜘蛛池模板: 亚洲人成网77777亚洲色| 午夜亚洲av永久无码精品| 久久亚洲春色中文字幕久久久| 日韩精品无码免费专区午夜| 亚洲男人的天堂一区二区| 亚洲高清免费视频| 亚洲综合色自拍一区| a在线免费观看视频| 亚洲另类激情综合偷自拍| **一级一级毛片免费观看| 亚洲午夜精品在线| 野花高清在线观看免费3中文 | 亚洲日韩AV一区二区三区四区| 无码国产精品一区二区免费式直播| 亚洲乱码一二三四区麻豆| 永久免费的网站在线观看| 亚洲欧美中文日韩视频| 亚洲第一视频在线观看免费| 最近国语视频在线观看免费播放| 亚洲av无码国产精品色午夜字幕 | 2048亚洲精品国产| 国产成人免费AV在线播放 | 亚洲精品国产第一综合99久久| 国产成人高清精品免费鸭子 | 日日麻批免费40分钟日本的| 色偷偷亚洲女人天堂观看欧| 国产精品99久久免费| 国产成人自产拍免费视频| 亚洲电影国产一区| 我要看WWW免费看插插视频| 深夜a级毛片免费视频| 亚洲AV永久无码区成人网站| 麻豆最新国产剧情AV原创免费 | 在线观看黄片免费入口不卡| 久久精品国产亚洲av麻豆色欲| 色吊丝最新永久免费观看网站| 国产美女视频免费观看的网站| 亚洲毛片在线免费观看| 亚洲av片一区二区三区| 91久久精品国产免费一区| 亚洲第一se情网站|