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

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

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

    廉頗老矣,尚能飯否

    java:從技術到管理

    常用鏈接

    統計

    最新評論

    怎樣用JSP獲取當前用戶的網卡IP和MAC地址?[轉載]

    隨著Internet技術的飛速發展,企業信息系統逐步轉向Intranet化,建立Web服務器作為企業信息的發布和交換平臺。但是,從企業信息安全角度出發,應該建立企業信息有限度的開放機制,保證用戶在規定的權限范圍內的獲取相應的信息。常規的安全檢查方法就是設立用戶身份驗證機制,即在Web服務器上進行口令和IP地址過濾。可是,企業內部網絡工作站的IPI地址是動態分配,沒有固定的地址,而且容易被假旦??诹顧z查方式又增加用戶記憶上的負擔,容易被別人獲取。由于網絡工作站上的網卡地址是全世界唯一和固定不變的,可以作為安全檢查的身份標識。當用戶通過瀏覽器訪問企業的Web服務器的時候,采用的網絡通信HTTP協議是工作在TCP/IP協議上,是基于網絡層的協議,而AC地址是在鏈路層上的設備才會關心的東西,所以通常情況下兩臺機器互訪是通過廣播或ARP(Address   Resolution   Protocol)協議得到相互的MAC地址后進行通信,而基于TCP/IP協議編程是很難獲取對方的MAC地址的。因為路由器要準確地投遞網絡數據包,必須擁有網絡上最完整ARP地址識別表,該表存放于路由器上的SNMP   MIB管理信息庫中,所以應從這些網絡設備入手獲取MAC地址。根據該思路,我們采用了根據用戶網絡MAC地址進行身份驗證的安全機制,已在我局的計算機城域網上實際運行了一年多的時間,證明是一種簡易有效的安全檢查手段。  
       
      一、技術思路  
       
      瀏覽器/服務器的模式是一種把標準輸入輸出定向到客戶端的瀏覽器上,而運算過程在服務器上的一種操作,所以當某個瀏覽器訪問相應的主頁時,它的一些基本信息就會提交給服務器,這些信息包括了瀏覽器的名稱,版本號等,同時也包括了我們所關心的客戶端的IP地址,該地址存放于環境變量REMOTE   ADDR中。  
       
      當我們獲得了這引會址后,下一步工作就是去詢問該機器的MAC地址,這也是編程最重要的一步。要從路由器中取到ARP的信息,就要進行基于網絡的SNMP(簡單網絡管理協議)編程。SNMP協議目前最常用的有兩個版本,通常稱之為v1和v2。一般情況下v2向下兼容v1版,但有時也有例外。SNMP   MIB管理信息庫的存儲方式是一種目錄樹的結構,而且它總是開始于:iso.   Org.   Dod翻譯成數字就是.1.3.6,這就是我們所說的MIB(Management   Information   Base,管理信息庫)的格式,而關于物理地址的MIB就是:iso.   Org.   Dod.   Internet.   Mgmt.   Mib.   At.   AtTable.   AtEnty.   AtPhysAddress(1.3.6.1.2.1.3.1.1.2)。  
       
      所以基于上述思路,該程序整個處理流程就是這樣設計的,當有人訪問Web服務器的主頁,便激活MAC.EXE(用C語言編寫),而當該程序獲得了客戶機的IP地址后,自動激活一個叫sn.   Class的java程序,sn.   Class便通過相應的MIB值向路由器詢問此IP的MAC地址,并將結果傳遞給MAC.EXE,而AC.EXE將獲取的這個MAC地址到自身Web服務器上的已登記合法的MAC地址庫內查找,若已在MAC地址庫登記的,則通過身份驗證,把其相應的主頁信息呈現在客戶端的屏幕上;否則,驗證失敗,拒絕訪問。  
       
      二、SNMP協議的MIB管理信息庫  
       
      由于上述技術思路涉及SNMP協議及其MIB管理信息庫,這里做一下簡要說明。SNMP標準主要由三部人組成:簡單網絡管理協議(SNMP);管理信息結構(Structure   ofanagement   Information,簡稱SMI,RFC1155標準)和管理信息庫(MIB,RFC1156、RFC1158標準)。  
       
      管理信息結構(SMI)和管理信息庫(MIB)兩個協議是關于管理信息的標準,它們規定了被管理的網絡對象的定義格式,MIB庫中都包含哪些對象以及怎樣訪問這些對象等等。  
       
      SMI協議規定了定義和標識MIB變量的一組原則。它規定所有的MIB變量必須用ASN.1(即抽象語法表示法I,它是一種描述數據結構的通用方法,作為OSI研究的一部分,由ISSO推出)來定義。  
       
       
       
      每個MIB變量都有一個名稱用來標識。在SMI中,這個名稱以對象標識符(Object   Identifier)來表示。對象標識符相互關聯,共同構成一個分層結構。在這個分層結構里,一個對象的標識符是由從根出發到對象所在節點的途中所經過的一個數字標號序列組成。如圖中,Internet的對象標識符就是1.3.6.1,對象標識符的命名有專門的機構負責。  
       
      在Internet節點下的mgmt節點,專門為管理信息庫分配了一個子樹,名為mib(1)。所有的MIB變量都在mib節點下,因此它們的名稱(對象標識符)都以iso.org.dod.internet.mgmt.mib開關,數字表示是1.3.6.1.2.1。  
       
      路由器中的路由表MIB中就有網絡中工作站IP地址與MAC地址的對應表。在CISCO路由器的路由表中,這種信息一般放在樹型結構的{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}的這個位置上,知道了這個表結構后,我們就可以通過編寫CGI程序來調用SNMP代理,讀取MIB管理信息表中的MAC地址。  
       
      三、獲取MAC地址的Java接口程序  
       
      我們可以通過好幾種方法來調用SNMP代理,如用C++來調用WINT下SNMP自帶的SNMP   API   FOR   WIN32的動態鏈接庫,也可以利用SNMP   PERL來編寫CGI程序完成這種功能,也可以用SNMP   Java程序來編寫。SNMP   Java程序類似于SNMP   PERL程序,它是Java程序類擴展庫,它提供了Java語言與SNMP代理接口的類庫,使程序員通過調用這個類庫很容易地操縱SNMP代理,獲取網絡路由表中儲存的網絡設備的各種信息;包括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();   //產生一個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);   //產生一個對象標識符  
       
      If(oid.   ToValue()!=null)pdu.   AddNull(oid);  
       
      Try{Session.   Open();  
       
      Pdu=session.   SyncSend(pdu);//發出請求單元信息}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程序實現SNMP代理功能  
       
      我們用Java編寫一個sn.java程序,該程序的功能是根據給定的路由器地址(10.142.168.29)和主機IIP地址來獲得相應IP地址主機的MAC地址,如:java   sn   10.142.168.29   10.142.169.1就會獲得10.142.169.1的MAC地址,再通過編寫一個C語言的CGI程序把Java程序執行的結果讀取過來,和原有的合法MAC地址庫中的數據進行比較來驗證用戶是否僉。首先我們可通過讀取環境變量“REMOTEADDR”,該變量存放著請求用戶工作站的IP地址,作為執行Java程序的一個參數,再通過C語言的sprint函數來執行Java程序sn:   Sprint(getmac,   “java   %   s   %   s”,   10.142.168.29.   remote   ipaddress);當C語言程序執行這個函數時,Java程序就被執行。并且getmac所指向的文件頭就是執行結果的文件頭,我們再來讀取該文件,就可獲取remote   ipaddress所對應的MAC地址,然后可用這個MAC地址與原有的合法MAC地址庫中數據相比較,從而驗證用戶是否為合法用戶。  
       
      五、結束語  
       
      硬件環境要求:  
       
      l   只能在局域網中(在某些特定的情況也可將其擴充到更遠一些的專線網絡  
       
      l   網絡連接協議必須采用TCP/IP  
       
      l   網絡中至少有一臺路由器或智能HUB  
       
      l   至少有一臺Web服務器  
       
      對系統軟件需求:  
       
      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 閱讀(2791) 評論(1)  編輯  收藏 所屬分類: 在路上

    評論

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

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

    主站蜘蛛池模板: 国产精品福利片免费看| 中文亚洲AV片不卡在线观看| 亚洲综合在线视频| 久久国产精品免费看| 久久av无码专区亚洲av桃花岛 | 亚洲人成电影网站免费| 大地资源二在线观看免费高清| 亚洲一区电影在线观看| 最好免费观看韩国+日本| 亚洲精品国产suv一区88| 国产成人免费网站在线观看| 狼人大香伊蕉国产WWW亚洲| 亚洲AV中文无码乱人伦在线视色| 一级毛片在线免费视频| 亚洲日韩一页精品发布| 亚欧日韩毛片在线看免费网站| 亚洲综合小说久久另类区| 永久免费毛片在线播放| 日韩亚洲翔田千里在线| 无码国产精品一区二区免费3p| 亚洲综合久久夜AV | 特级做A爰片毛片免费看无码| 亚洲国产精品免费视频| 午夜性色一区二区三区免费不卡视频 | 国产亚洲精品VA片在线播放| 日韩精品免费电影| 亚洲国产成人高清在线观看 | 亚洲欧洲国产经精品香蕉网| 8x8×在线永久免费视频| 亚洲粉嫩美白在线| 亚洲日韩国产成网在线观看| 中文字幕av免费专区| 青青草原精品国产亚洲av| 成人最新午夜免费视频| 成人免费ā片在线观看| 亚洲国产成人久久77| 亚洲?V无码成人精品区日韩| 日韩国产精品亚洲а∨天堂免| 亚洲国产精品毛片av不卡在线 | 91亚洲导航深夜福利| 人禽杂交18禁网站免费|