本格堅守四不一沒有政治主張:不知道、不清楚、不瞭解、不明白、沒有我的事!
[ start | index | login ]

查詢指定 IP 所屬國別

Created by Ada. Last edited by Ada, 4 years and 132 days ago. Viewed 1,106 times. #3
[diff] [history] [edit] [rdf]
labels
Parent:Programming
Parent:SnipSnap
attachments

查詢指定 IP 所屬國別

最近因公務所需調閱了一些網站的登入資訊,將有問題的 IP 記錄回覆給公司法務單位。

在查詢的過程中發現可以透過 DNS 反查 IP 所在網域,如下例(某廣告信來源 IP):

ada@gentoo ~ $ dig -x 125.250.18.250

; <<>> DiG 9.3.2 <<>> -x 125.250.18.250 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 4229 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION: ;250.18.250.125.in-addr.arpa. IN PTR

;; AUTHORITY SECTION: 250.125.in-addr.arpa. 1199 IN SOA a.dns.kr. inverse.nic.or.kr. 2005110202 21600 900 604800 43200

;; Query time: 45 msec ;; SERVER: 168.95.192.1#53(168.95.192.1) ;; WHEN: Mon Mar 20 15:25:16 2006 ;; MSG SIZE rcvd: 124

就前述這個例子而言可以知道該 IP 是配給韓國的,但更多時候會發現查到的是國際位址管理單位(如 APNIC):

ada@gentoo ~ $ dig -x 220.174.217.29

; <<>> DiG 9.3.2 <<>> -x 220.174.217.29 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 11019 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION: ;29.217.174.220.in-addr.arpa. IN PTR

;; AUTHORITY SECTION: 220.in-addr.arpa. 172800 IN SOA ns1.apnic.net. read-TXT-record-of-zone-first-dns-admin.apnic.net. 2006031595 7200 1800 604800 172800

;; Query time: 247 msec ;; SERVER: 168.95.192.1#53(168.95.192.1) ;; WHEN: Mon Mar 20 15:31:20 2006 ;; MSG SIZE rcvd: 134

還好,我們還有 >>IP to Country 查詢服務 ,前述 IP 檢查的結果是: IP Address 220.174.217.29 belongs to China.

這是怎麼做到的?說起來只是一個查表動作而以,比較討厭的只有這個對應表的維護。但是感謝天,原來網路上早就有這麼一份完整的對照表:>>The IP-to-Country Handbook,更令人激賞的是這份對照表可以免費使用(不過有些 >>授權規定)。

取得這份資料後,開始考慮看能不能放到 >>SnipSnap 中當成一個 Macro。

考慮點:

  1. 資料筆數有 63726 筆,而且看起來只會繼續增加。
  2. 筆數多,佔用空間就大。以一筆記錄最多佔 32 bytes,最少佔 20 bytes 來計算的話約要佔掉 1.2MB 到 2.0MB 之間。
  3. 佔用空間大,保存方式就變成一個重大問題:
    1. 全部塞到 SnipSnap 同一個資料庫去:由於 SnipSnap 提供了多種資料儲存方式,因此在更新資料庫時會變的複雜。
    2. 以文字檔保存,可以提供資料庫更新時的最大彈性:
      1. 全部載入記憶體:對一個預設的 JRE 環境而言,很可能造成 OutOfMemory 的執行時期錯誤。
      2. 僅載入特定欄位:降低/免除 OutOfMemory 執行時期錯誤的發生率,但也同時限制了使用方式(例如只顯示國旗或僅英文代碼)。
      3. 載入 IP 起始位址及檔案中的記錄點:最省記憶體空間的方式,缺點是要對資料庫檔案長時間保持開啟狀態(另套 Java 版的 Blog 系統 blojsom 採用此法)
決定:
  1. 我想以載入 IP 起始位置、二碼簡稱、三碼簡稱為主。其中二碼簡稱可以作為國旗圖檔檔名,三碼簡稱可以作為文字輸出之用。
  2. 使用二維陣列儲存。
  3. 提供輸出國旗圖檔或文字輸出選項。
  4. 有空再來寫!
no comments | post comment
【搜尋】

【求助】

  1. 如何指定格式化的文字
  2. 如果字太小
【SnipSnap 強化方案】
>>SnipIt 誕生
>>功能討論
>>功能確認

< July 2010 >
SunMonTueWedThuFriSat
123
45678910
11121314151617
18192021222324
25262728293031

【RSS 訂閱】




【雜想分類區】
美食小吃
生活雜想
職場遭遇戰
休閒娛樂
台北居、大不易
錯誤正在橫行中
廣告異聞錄
神秘事件簿
電影
健康管理
資訊電腦
科高地球
手機應用
新聞馬後炮
動漫世界
管理眾人之事
專案管理
歌曲歌詞
嘸爽啦!
部落格記錄
惡搞裝笨耍白爛
歧視非IE用戶之網頁
關於我
CSS
RSS

【與 Ada 聯絡】

【有趣的 Blog】
>>什麼都破,什麼都爛,什麼都不奇怪
>>酪梨壽司的日記
>>去吧!錯誤特攻隊!
>>隨裕而安
>>荒謬大觀
>>網路黑貓
>>瑞克梅添涼 DALIREAL
>>鳥毅的blog
>>潛艦 - >>反垃圾信
>>窮留學生懶人食譜
>>約耳談軟體

【網路貼紙】
XHTML 1.0 validated CSS validated
RSS 2.0 validated Powered by SnipSnap
Powered by Gentoo Linux
網站使用 UTF-8 編碼 網站所在地-台灣
Onion Club 洋蔥酷樂部 Powered By PostgreSQL
我是台灣人

【網路同盟】
怠墮管理者同盟

【PCDVD 七八區 RSS】




【PCDVD 疑雜區 RSS】




【網路串連】











【參訪團】

snipsnap.org | Copyright 2000-2002 Matthias L. Jugel and Stephan J. Schmidt