Recent site activity

วิธีหาที่อยู่ทางภูมิศาสตร์ของไอพีแอดเดรส (IP Address)

posted Dec 12, 2009, 1:16 AM by Naris Ariyavanitchakul
             บางครั้งเมื่อเราเห็นไอพีแอดเดรสแล้ว ทำให้เราสงสัยและอยากรู้ข้อมูลที่มากขึ้นของใครบางคนหรือโฮสต์บางโฮสต์ แต่เราจะใช้ไอพีแอดเดรสนั้นเพื่อหาข้อมูลที่มากกว่า เช่น หาที่ตั้งของคอมพิวเตอร์ของไอพีนั้นได้อย่างไร บทความเรื่องนี้จะตอบคำถามเหล่านี้

ที่จริงแล้ว ไอพีแอดเดรส (จริง ๆ แล้วทั้ง TCP/IP Protocol) ถูกกำหนดโครงสร้างหรือการออกแบบที่ไม่สามารถ บอกได้ว่าระบบที่มีไอพีนั้นตั้งอยู่ที่ประเทศใหน ถ้าเราดูอย่างง่าย ๆ จะเห็นได้ว่าไอพีแอดเดรสไม่มีส่วนที่บอกได้ว่า คอมพิวเตอร์ที่ใช้ไอพีนั้นมาจากประเทศใหน ดังนั้นการเข้าใจว่า ส่วนที่สองหรือสามของไอพีจะหมายถึงประเทศที่ระบบนั้นใช้ นั้นไม่ถูกต้อง

            อย่างไรก็ตาม บางครั้งก็สามารถเดาหรือหามาได้ว่า อยู่ที่ประเทศใหนหรือแม้แต่กระทั่งบอกเมืองที่ตั้งอยู่นั้น โดยการดูจากสามส่วนแรกของไอพี เรามาดูตัวอย่างเพื่อจะให้เข้าใจว่าที่ผมกล่าวไปนั้นหมายถึงอะไร ก่อนที่จะ ไปดูที่ตัวอย่างเรามาทำความเข้าใจกันก่อนว่าจริง ๆ แล้วมีการให้ไอพีแอดเดรสกับคุณได้อย่างไร

            ขั้นแรก ผู้ให้บริการอินเตอร์เน็ต(ISP) ของคุณจะต้องไปขอไอพีจากส่วนกลางที่รับผิดชอบและได้ไอพีแอดเดรสที่ อยู่ในช่วงหนึ่งซึ่งจะให้ไปแก่สมาชิก (ที่โทรศัพท์เข้ามายังเซิร์ฟเวอร์)ไปอีกต่อหนึ่ง ไอเอสพีส่วนมากจะได้ network address เป็น Class C ซึ่งประกอบไปด้วย Network Prefix 24 บิต (สามส่วนแรกของไอพี) และ Host number 8 บิต (ส่วนสุดท้าย) ถูกเรียกเป็น "24's" และใช้โดยทั่วไปโดยไอเอสพีส่วนใหญ่

ในโลกแห่งความเป็นจริง ทุก ๆ คนจะมีที่อยู่บ้านของตัวเอง หรือหมายเลขโทรศัพท์ เพื่อให้เขาสามารถติดต่อ ได้โดยหมายเลขหรือที่อยู่นั้น เช่นเดียวกันกับคอมพิวเตอร์ที่ต่อเข้ากับอินเตอร์เน็ตจะมี Internet Protocol ที่เป็นของตัวเอง หรือไอพีแอดเดรสที่สามารถใช้เพื่อติดต่อกับคอมพิวเตอร์เครื่องนั้น ในภาษาของนักคอมพิวเตอร์ตัวยง ไอพีแอดเดรสหนึ่ง ๆ จะเป็นสัญลักษณ์เลขฐานสิบ ที่แบ่งที่อยู่ทางอินเตอร์เน็ตขนาด 32 บิตเป็นสี่ส่วน ๆ ละ 8 บิต

ไอพีแอดเดรสให้ข้อมูลกับเราบ้างหรือไม่ รึว่าตัวเลขนั้นมันหมายถึงอะไร ?

            มาดูตัวอย่างของไอพีแอดเดรสต่อไปนี้: 202.144.49.110 ในส่วนแรก ตัวเลขก่อนเลขฐานสิบตัวแรก เช่น 202 เป็น Network number หรือ Network Prefix หมายถึงมันจะระบุถึงหมายเลขของเน็ตเวิร์คที่เป็นโฮสต์นั้น ส่วนที่สองเช่น 144 เป็น Host number ที่บอกถึงหมายเลขของโฮสต์ที่อยู่ภายในเน็ตเวิร์ค ดังนั้น ถ้าคอมพิวเตอร์อยู่ในเน็ตเวิร์คเดียวกับก็จะมี Network number เหมือนกัน เพื่อให้เกิดความยืดหยุ่นกับ ขนาดของเน็ตเวิร์คดังนั้นจึงมีไอพีแอดเดรสหลาย class ที่แตกต่างกัน:

Address Class                  Dotted Decimal Notation Ranges
Class A (/8 Prefixes)            1.xxx.xxx.xxx ถึง 126.xxx.xxx.xxxClass B ( /16 Prefixes)        128.0.xxx.xxx ถึง 191.255.xxx.xxxClass C ( /24 Prefixes)        192.0.0.xxx     ถึง  223.255.255.xxx

            class A Network Address จะประกอบด้วย Network Prefix 8 บิต ตามด้วย Host number 24 บิต เรียกว่า "/8"s" หรือ "8's" เพราะว่ามันมี Network prefix ขนาด 8 บิต ส่วน class B Network Address มี Network Prefix ขนาด 16 บิตตามด้วย Host number 16 บิต เรียกว่า "16's"

ใน class C Network Address มี Network Prefix ขนาด 24 บิต และ Host number 8 บิต เรียกว่า "24's" และมักจะใช้กันโดยไอเอสพีต่าง ๆ

            เนื่องจากขนาดที่เติบโตขึ้นเรื่อย ๆ ของเครือข่ายอินเตอร์เน็ต ผู้บริหารเน็ตเวิร์คต่าง ๆ จึงเจอปัญหาหลายอย่าง ตารางเส้นทางการติดต่อบนอินเตอร์เน็ตเริ่มโตขึ้น และผู้บริหารระบบจำเป็นต้องร้องขอ Network number จากอินเตอร์เน็ตอีกก่อนที่จะมีเน็ตเวิร์คใหม่ในไซต์ของพวกเขา จึงทำให้เกิด subnet ขึ้นมา

            ถ้าไอเอสพีของคุณมีขนาดใหญ่และให้บริการไอพีแบบ dynamic IP address คุณจะสังเกตเห็นได้ว่าเมื่อใด ก็ตามที่คุณล๊อกออนเข้าอินเตอร์เน็ต ไอพีแอดเดรสของคุณจะมี 24 บิตแรกที่เหมือนกันแต่มีเพียง 8 บิต สุดท้ายเท่านั้นที่เปลี่ยนไป เนื่องจากการนำ subnet มาใช้ ดังนั้นไอพีแอดเดรสจึงมีลักษณะดังนี้:

xxx.xxx.zzz.yyy
สองส่วนแรกเป็น Network Prefix number, zzz เป็น Subnet number และ yyy คือ Host number ดังนั้นคุณจึงเชื่อมต่ออยู่กับ subnet เดิมทุกครั้งในเน็ตเวิร์คเดียวกัน ด้วยเหตุนี้สามส่วนแรกจึงยังเหมือนเดิม มีเพียงส่วนท้ายสุด เช่น yyy เท่านั้นที่ไม่แน่นอน

เช่น ถ้าไอเอสพี xyz ได้ไอพี 203.98.12.xx มา ดังนั้นคุณสามารถที่จะมีไอพีใด ๆ ก็ตามที่สามส่วนแรกเป็น 203.98.12.

แต่ละไอเอสพีมีไอพีอยู่ในช่วงหนึ่ง ซึ่งจะจัดสรรให้กับสมาชิกทุกคน หรือ สมาชิกทุกคนที่เชื่อมต่อกับอินเตอร์เน็ต โดยใช้ไอเอสพีเดียวกันก็จะมีไอพีอยู่ในช่วงนี้ด้วย จึงมีผลทำให้ทุกคนที่ใช้ไอเอสพีเดียวกัน มีแนวโน้มที่จะมีไอพี แอดเดรสที่มีสามส่วนแรกเหมือนกัน

ถ้าคุณค้นคว้าหาข้อมูลอย่างจริงจัง คุณสามารถบอกได้ว่าไอเอสพีไหน ที่คนนั้นกำลังใช้อยู่อย่างง่าย ๆ โดยดูจาก ไอพีของเขาเอง แล้วชื่อของไอเอสพีนั้นสามารถใช้เพื่อบอกเมืองและประเทศของบุคคลนั้น ลองมาดูที่ตัวอย่าง:

ในประเทศของผม มีไอเอสพีรายใหญ่สามราย:

ISP Name                               Network Address Allotted
ISP I                                          203.94.47.xxISP II                                         202.92.12.xxISP III                                        203.91.35.xx

ถึงตอนนี้ ถ้าผมรู้จักเพื่อนทางอินเตอร์เน็ต และรู้ไอพีว่าไอพีของเขาคือ: 203.91.35.12 ผมสามารถค้นหาได้อย่างง่ายดายว่าเขาใช้ ไอเอสพี III เพื่อเชื่อมต่อกับอินเตอร์เน็ต ถูกไหม ? คุณอาจพูดว่าใคร ๆ ก็ทำอย่างนี้ ได้ เอาละ คำตอบคือใช่และไม่ใช่ คุณจะเห็นได้ว่าวิธีการข้างต้นนี้หาไอเอสพีได้สำเร็จ เพราะว่าเรามีรายการของ ไอเอสพีและ Network Address แล้วเท่านั้น ดังนั้นตามความเห็นของผมวิธีการข้างต้นทำสำเร็จก็ต่อเมื่อ ได้ค้นคว้าและทดลองอย่างหนักแล้วเท่านั้น อย่างไรก็ตามการค้นคว้าอย่างนี้ก็มีประโยชน์ในบางครั้งเช่นกัน

คุณใช้วิธีข้างต้นไม่ได้แน่นอน ถ้ามีไอพีแอดเดรสและรายการของไอเอสพีจำนวนมาก ถ้าไอพีนั้นเป็นของใครบาง คนที่อยู่ในกระท่อมของชาวเอสกิโมที่ขั้วโลกเหนือล่ะ ? คงเป็นไปไม่ได้ที่คุณจะมีรายการของ Network Address ของไอเอสพีทุกรายทั่วโลกเป็นแน่ ใช่มั้ย ?

ข้อสังเกต: ในกรณีข้างต้น คุณสามารถรู้เมืองที่ระบบคอมพิวเตอร์นั้นตั้งอยู่ได้ด้วยโดยใช้ไอพี เพราะว่าไอเอสพี ส่วนใหญ่จะใช้ Network Address ที่แตกต่างกันในเมืองต่าง ๆ ด้วย นอกจากนี้ไอเอสพีบางรายก็ดำเนินงาน อยู่ในเพียงเมือง ๆ เดียว

ดังนั้น มีวิธีที่ดีกว่าในการหาสถานที่ตั้งของไอพีนั้นมั้ย ? แน่นอน โดยการใช้วิธี DNS lookup

            DNS lookup เปลี่ยนจาก hostname เป็นไอพีแอดเดรส ส่วน Reverse DNS Lookup ก็เปลี่ยนจาก ไอพีแอดเดรสมาเป็น hostname ซึ่งจะบอกชื่อของระบบที่อยู่ห่างไกลเป็นตัวอักษรและตัวเลขและจุด เช่น mail2.nol.net.in เป็นชื่อ hostname โดย 203.45.67.98 ไม่ใช่ hostname

            โปรแกรมยูทิลิตี้สำหรับยูนิกซ์ซึ่งทำงานได้ดีมาก และนิยมใช้กันคือ 'nslookup' สามารถใช้เพื่อ Reverse DNS lookup ดังนั้นถ้าคุณมีเครื่องคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการยูนิกซ์ หรือคุณสามารถใช้งานมันได้ ขั้นแรกคุณต้องหาว่าคำสั่ง nslookup อยู่ตรงไหนโดยการใช้คำสั่งต่อไปนี้:

' whereis nslookup '
เมื่อคุณรู้ว่ายูทิลิตี้นี้อยู่ที่ไหนในระบบ แล้วคุณก็สามารถใช้เพื่อแปลงไอพีให้เป็น hostname และในทางกลับกันได้แล้ว ดังตัวอย่างต่อไปนี้

$>nslookup IP Address
เราพิมพ์ไอพีแอดเดรสลงไป ในที่นี้เราพิมพ์ 203.94.12.01 (ซึ่งเป็นไอพีที่ผมต้องการหา)

$>nslookup 203.94.12.01
คุณจะเห็นผลลัพธ์ออกมาเป็น: mail2.nol.net.in ในตอนนี้ถ้าคุณดูที่ชื่อ hostname ที่เปลี่ยนมาจากไอพีแอดเดรสอย่างตั้งใจ จะเห็นได้ว่าส่วนหลังสุดจะบอกถึง ประเทศที่ระบบนั้นตั้งอยู่ จากตัวอย่างคุณเห็น '.in' ซึ่งบอกว่าระบบนี้อยู่ในประเทศอินเดีย ทุกประเทศมีรหัสประเทศของตัวเองซึ่งจะเห็นได้บ่อยมากกว่าชื่อท้ายสุดที่ไม่ ใช่รหัสประเทศ วิธีนี้สามารถใช้เพื่อค้นหาว่าคน ๆ นั้น อยู่ในประเทศใหนถ้าคุณรู้อีเมลของเขา เช่น ถ้าคนนั้นมีที่อยู่อีเมลลงท้ายด้วย .ph แสดงว่าเขาอาจจะอาศัยอยู่ใน ประเทศฟิลิปปินส์และถ้าลงท้ายด้วย .il เขาอยู่ในประเทศอิสราเอล ประเทศอื่น ๆ ก็ทำนองเดียวกันนี้ รหัสประเทศ โดยทั่ว ๆ ไปเช่น:

ประเทศ                                รหัสประเทศ

ออสเตรเลีย                            .au

อินโดนีเซีย                             .id

อินเดีย                                   .in

ญี่ปุ่น                                     .jp

อิสราเอล                                 .il

สหราชอาณาจักร                    .uk

รายการรหัสประเทศที่ครบสมบูรณ์ดูได้ที่:

http://www.alldomains.com/

http://www.iana.org/domain-names.html

รายการรหัสรัฐต่าง ๆ ของสหรัฐ ฯ ดูที่:

http://www.usps.gov/ncsc/lookups/abbr_state.txt

ผู้ที่ใช้วินโดวส์สามารถแปลงไอพีให้เป็น hostname ได้โดยการดาวน์โหลดยูทิลิตี้ที่ชื่อ Samspade จาก http://www.samspade.com/

อีกวิธีการหนึ่งที่ใช้หาที่อยู่ทางภูมิศาสตร์ของระบบคอมพิวเตอร์ที่ตรงจุด จริง ๆ คือการใช้ ฐานข้อมูล WHOIS เป็นฐานข้อมูลหลักที่ประกอบด้วยข้อมูลหลากหลายเช่นข้อมูลสำหรับการติดต่อ ชื่อ ผู้ที่เป็นเจ้าของโดเมนนั้น หาข้อมูลโดยการใส่ hostname ลงไป แล้วบริการนี้จะบอกข้อมูลที่อยู่ในฐานข้อมูลออกมา

วิธีนี้สามารถใช้เพื่อหาข้อมูลที่ถูกต้องเกี่ยวกับไอพี หรือ hostname ที่ต้องการ อย่างไรก็ตามมันอาจจะไม่มี ประโยชน์ถ้าคุณพยายามหาสถานที่ตั้งที่แท้จริงของผู้ใช้ไอพีแบบ dynamic IP แต่อย่างน้อยวิธีนี้สามารถใช้ เพื่อหาเมืองที่ไอเอสพีนั้นอยู่ได้

คุณสามารถใช้บริการ WHOIS ที่ http://www.alldomains.com/ นอกจากนี้คุณสามารถป้อนชื่อ hostname เข้าไปในบราวเซอร์ของคุณเพื่อใช้บริการ WHOIS โดยใช้ URL นี้: http://205.177.25.9/cgi-bin/whois?abc.com โดยเปลี่ยนชื่อ abc.com เป็นชื่อโดเมนที่คุณต้องการถามข้อมูลโดยใช้ WHOIS

วิธีนี้ไม่สามารถใช้เพื่อหาที่อยู่ที่สามารถติดต่อได้ ของบุคคลที่ต้องการค้นหา ถ้าไอพีที่คุณใช้เพื่อหาเขาเป็นของไอเอสพีของเขา ดังนั้นคุณจำเป็นต้องรู้ชื่อโดเมน (ซึ่งลงทะเบียนโดยใช้ชื่อของเขา) หรือไม่ก็รู้ได้เพียงแต่เมือง (และไอเอสพี) ที่ใช้โดยบุคคลนั้น

ถ้าบุคคลนั้นลงทะเบียนชื่อโดเมน และคุณต้องการใช้มันเพื่อค้นหาว่าเขาอยู่ในเมืองไหน สิ่งที่ควรสังเกตในกรณีนี้ คือถ้าบุคคลนั้นลงทะเบียนชื่อโดเมนที่ใช้บริการฟรี เช่น Namezero.com ดังนั้นชื่อโดเมนอาจจะลงทะเบียน โดยใช้ชื่อของบริษัทนั้นและไม่ใช่ชื่อของบุคคลที่เราต้องการค้นหา ฉะนั้นการใช้บริการ WHOIS จะให้ข้อมูล เกี่ยวกับไอเอสพีไม่ใช่บุคคลที่เราต้องการค้นหา

ข้อสังเกต: บริการ WHOIS โดยค่าเริ่มต้นจะรันอยู่ที่พอร์ต 43 ของระบบนั้น ลองใช้บริการโดยการ telnet ไปที่พอร์ต 43 และลองพิมพ์ค้นหา ผมไม่เคยลอง แต่มันต้องสนุกแน่ ๆ

วิธีที่สองที่เป็นวิธีทีมีประสิทธิภาพมาก (หลังจากการถาม Reverse DNS แล้ว)ของการย้อนรอยไอพีไปสู่ สถานที่ทางภูมิศาสตร์จริง ๆ ด้วยการใช้ 'traceroute' คำสั่ง 'tracert' หรือ 'traceroute' จะให้ชื่อหรือไอพี ของเส้นทางที่ผ่านก่อนถึงเป้าหมาย ผู้ใช้วินโดวส์สามารถตามรอยของไอพีโดยการพิมพ์คำสั่งต่อไปนี้ที่ดอสพรอมพ์:

C:\windows>tracert IP หรือ Hostname
สำหรับวิธีใช้คำสั่งนี้ พิมพ์ว่า: 'tracert' ที่ดอสพรอมพ์ ต่อมาเรามาดูที่ผลที่ได้เมื่อผมตามรอยไอพีของผมเอง โปรดสังเกตว่าผมอยู่ที่เมืองนิวเดลลีในอินเดีย ให้ดูชื่อของ hostname อย่างละเอียด แล้วคุณจะพบว่ามันได้ เปิดเผยถึงเมืองต่าง ๆ ที่แพ็คเกตผ่าน

C:\windows>tracert 203.94.12.54


Tracing route to 203.94.12.54 over a maximum of 30 hops

1 abc.netzero.com (232.61.41.251) 2 ms 1 ms 1 ms
2 xyz.Netzero.com (232.61.41.0) 5 ms 5 ms 5 ms
3 232.61.41.10 (232.61.41.251) 9 ms 11 ms 13 ms
4 we21.spectranet.com (196.01.83.12) 535 ms 549 ms 513 ms
5 isp.net.ny (196.23.0.0) 562 ms 596 ms 600 ms
6 196.23.0.25 (196.23.0.25) 1195 ms1204 ms
7 backbone.isp.ny (198.87.12.11) 1208 ms1216 ms1233 ms
8 asianet.com (202.12.32.10) 1210 ms1239 ms1211 ms
9 south.asinet.com (202.10.10.10) 1069 ms1087 ms1122 ms
10 backbone.vsnl.net.in (203.98.46.01) 1064 ms1109 ms1061 ms
11 newdelhi-01.backbone.vsnl.net.in (203.102.46.01) 1185 ms1146 ms1203 ms
12 newdelhi-00.backbone.vsnl.net.in (203.102.46.02) ms1159 ms1073 ms
13 mtnl.net.in (203.194.56.00) 1052 ms 642 ms 658 ms
ผลลัพธ์ข้างบนแสดงให้เราเห็นถึงเส้นทางที่ข้อมูลได้เดินทางผ่านไปดังนี้:

Netzero (ไอเอสพีที่ส่งข้อมูลออกไป) ---> Spectranet (A Backbone Provider) ----->New York ISP --->New York Backbone -> Asia --> South Asia -> India Backbone --> New Delhi Backbone--> Another router in New Delhi Backbone ---> New Delhi ISP         
แสดงให้เห็นถึงสถานที่อยู่ของผมจริง ๆ ที่เป็น: นิวเดลลี, อินเดีย, เอเชียใต้

บางครั้งการใช้คำสั่ง 'tracert' โดยใช้ไอพี ไม่ได้ให้ข้อมูลที่เป็นประโยชน์เลย คุณเห็นจากตัวอย่างข้างบนว่า hostname ได้บอกถึงชื่อเมืองหรือประเทศที่ระบบนั้นตั้งอยู่ อย่างไรก็ตาม ในบางครั้งชื่อ hostname แทบจะไม่ได้บอกอะไรที่เป็นประโยชน์เลย

สมมติว่าการตามรอยจบลงที่ hostname abc.com จะทำให้ไม่ชัดเจน และไม่ให้ร่องรอยที่ให้ค้นหาได้เลยว่า ระบบนั้นอยู่ที่ไหน อย่างไรก็ตามคุณสามารถเปิดบราวเซอร์ของคุณขึ้นมา และเปิดไปที่ http://www.abc.com บางที abc.com อาจจะเป็นไอเอสพี และอาจให้ข้อมูลเกี่ยวกับสถานที่ตั้งและเมืองที่ไอเอสพีนั้นให้บริการอยู่ คุณก็ยังมีโอกาสที่ดีในการค้นหาเมือง ของบุคคลที่เราต้องการ

มียูทิลิตี้ที่น่าสนใจมากอยู่โปรแกรมหนึ่งคือ VisualRoute (http://www.visualroute.com/) ที่สามารถ ตามรอย hostname หรือไอพีและแสดงเส้นทางที่แพ็กเกตนั้นเดินทางไปยังเป้าหมายในรูปแผนที่โลก มันมี ประโยชน์มาก และบอกถึงข้อมูลบางอย่างที่ดีเยี่ยม แต่บางครั้งมันก็ดูเหมือนไม่ค่อยจะแม่นยำ
            
Comments