ping เครื่องมือธรรมดาที่ไม่ธรรมดา ! ตอนที่ 1

Posted by

รูปภาพ

ถ้าคุณคือใครซักคนที่ทำงานเกี่ยวกับระบบ computer network
คุณจะต้องรู้จัก

PING !!

อย่างแน่นอน ….
network engineer ที่ใช้ ping ไม่ได้ ก็เหมือนกุ้กที่ไม่มีมีด
เหมือนจิตกรที่ไร้ผ้าใบ เหมือนนักว่ายน้ำที่ไม่มีมือ !!

ping มันสำคัญขนาดนั้นเลยเหรอ ? แล้วมันคืออะไร?

ชื่อ ping จริงๆแล้วมาจากเสียง sonar ที่ใช้ในพวกเรือดำน้ำ …. ถูกคิดค้นขึ้นโดยนาย Mike Muuss
แต่ตอนนี้ก็กลายเป็นเครื่องมือมาตรฐาน
ที่เรียกได้ว่ามีอยู่ในแทบทุกอุปกรณ์ที่สามารถต่อ network ได้
ที่นี่อย่างที่ผมกล่าวไว้ในบทแรกๆว่าเราจะ scope ให้อยู่ในเรื่องของ computer network
ฉะนั้นผมจะพูดให้เจาะจงถึง ping ที่อยู่ใน computer ของเรานั้นเอง

ซึ่งปรกติแล้วถ้าเราจะเรียกใช้ ping ใน windows เราก็ไปที่ run แล้วพิมพ์ cmd
เพื่อเรียกหน้าต่าง DOS ดำๆออกมา แล้วก็พิมพ์ลงไปว่า ping
แล้วตามด้วย IP address เท่านี้ก็ใช้ได้แล้ว

แล้ว ping มันทำอะไรได้ ??

การ ping ก็เหมือนกับเป็นการตะโกนถามว่า “เฮ้ย เอ็งอ่ะยังมีชีวิตอยู่อ่ะป่าว?”
ถ้าคนที่ถูกถามมีอารมณ์ตอบก็จะตอบกลับมาว่า “เออ…ยังอยู่”
แต่ถ้าคนที่ถูกถามตายไปแล้วหรือไม่มีอารมณ์ตอบก็จะเงียบๆ
และถ้าเงียบอยู่พักนึงคนถามก็จะเข้าใจได้ว่าปลายทาง ตายไปแล้ว …

ทีนี้บังเอิญว่าจริงๆแล้วลึกๆ ping ซับซ้อนกว่านั้นพอสมควร
เราเลยจะมาคุยถึง ping ในแบบ advance ขึ้นอีกนิด

เบื้องหลังของ ping…. 

ping ทำงานใน layer 7  ตัวมันเองเป็น application อย่างหนึ่ง
แต่มันดันไปเอา protocol ใน layer 4 ที่ชื่อว่า ICMP มาใช้งาน
ฉะนั้นการทำงานหลักๆของมันก็อยู่ที่ ICMP นี่แหละ
โดย ICMP จะทำหน้าที่ในการส่งข้อมูลการถามไปยังปลายทาง
ซึ่งข้อมูลการ ถาม/ตอบ นั้นก็มีหลากหลายให้เราใช้งาน
(ถึงแม้ว่าจริงๆแล้วเราจะใช้อยู่แค่ไม่กี่แบบก็เถอะ)

ในบทความนี้คงจะไม่ไปไล่เอา message ของ ICMP มาไล่ให้ดูทั้งหมด เพราะขี้เกียจ  (อยากดูทั้งหมด คลิก)
เพราะเอาไปใช้ประโยชน์ได้ยาก ….
แต่จะเลือกเอา list ของผลลัพธ์ที่เราเจอบ่อยๆ แต่ไม่ค่อยสนใจมันมาบอกเล่า

เพื่อที่ว่าในอนาคตเมื่อเรา “ping” ….
..ผลลัพธ์จะไม่ได้บอกเราแค่ว่า “เจอ” หรือ “ไม่เจอ” เท่านั้น อีกต่อไป
มันอาจจะบอกได้ถึงลักษณะอาการ หรือแม้แต่จุดที่เกิดปัญหาด้วยซ้ำ !

ผลลัพธ์ที่เจอหลังจาก ping 

รูปภาพ

สิ่งที่เรารู้จาก output ในรูปด้านบนคืออะไรบ้าง?
1. เรากำลังส่ง ICMP ไปที่ http://www.google.com และเรารู้ว่า …
http://www.google.com นั้นอยู่ที่ IP 74.125.235.49

2. ข้อมูลที่เราส่งไปหา http://www.google.com นั้นมีขนาด 32 bytes (32 ตัวอักษร)
ซึ่งเอาจริงๆข้อมูล 32 ตัวอักษรที่ว่านั้นเป็นข้อมูลขยะคือเป็น ABCDEF ไปเรื่อยๆ

3. บรรทัดถัดมาเราจะพบว่า 74.125.235.49 นั้น reply หรือตอบเรากลับมา
ด้วยข้อมูลขนาด 32 ตัวอักษรเหมือนกัน
ซึ่งถ้า ถ้าตอบกลับมาได้แบบนี้แสดงว่าปลายทางมีชีวิตอยู่นั้นเอง !

4.ที่เห็นผลลัพธ์เป็น time=XX ms นั้นคือเวลาที่ใช้ในการตอบกลับมาได้ แบบนี้

รูปภาพ

ในรูปก็จะเห็นว่าส่งข้อมูล 32 ตัวอักษรไปกลับจะใช้เวลาราวๆ 70 – 80 ms
เราเรียกตัวเลขตรงนี้ว่า…. delay time
รู้ไปทำไม?
การสังเกตุเลขตรงนี้ช่วยให้เราสามารถคาดเดาสถานภาพของระบบ network เราได้
ถ้าในกรณีที่เราอยากรู้ว่าตอนนี้ internet ที่เราใช้ช้าหรือเปล่า ก็ลองสังเกตุ delay time ตรงนี้ดู
โดยสภาพปรกติ คำว่าปรกติคือ internet 3G ธรรมดาหรือ internet บ้านไม่ควรจะเกิน 300 ms
ถ้าเกินก็แสดงว่าอาจจะมี delay time internet โดยรวมจะดูช้าๆทันที

5. TTL ….. TTL มาจากคำว่า Time to Live ค่านี้จริงๆจะอยู่ใน IP header ใช้เพื่อจำกัด hop limit
จริงๆเค้าสร้างเอาไว้ป้องกันการเกิด loop (loop คือการที่ IP packet วิ่งวนไปเรื่อยๆไม่จบสิ้นอาจจะเกิดเพราะปัญหาด้านการสร้างเส้นทางในระบบ network )

โดยจะมีค่ามากสุดคือ 255 และทุกๆครั้งที่ IP packet วิ่งผ่านอุปกรณ์ที่ทำงานใน L3 ขึ้นไป
ค่า TTL จะลดลง 1 ทุกๆครั้งและเมื่อไหร่ที่ค่า TTL เหลือ 0 อุปกรณ์ที่  drop packet นั้นทิ้ง
เพราะฉะนั้นต่อให้เกิด loop ขึ้นในระบบ IP ถึงจุดหนึ่งมันก็จะถูก drop อยู่ดี

ทีนี้เราได้ประโยชน์อะไรจากการสังเกตุค่านี้?

อย่างแรก เราสามารถเดาได้ว่า packet ของเรามันผ่านอุปกรณ์พวก router มากี่ตัวแล้ว
โดยดูจาก TTL ที่หายไป

อย่างที่สอง เราสามารถคาดเดาระบบปฏิบัติการ(OS) ของอุปกรณ์ปลายทางที่เรา ping ไปได้
โดย ถ้าปลายทางตอบกลับมาแล้ว TTL น้อยกว่า 64
เราพอเดาได้ว่า ระบบปฏิบัติการ(OS) ปลายทางเป็น Linux

หรือถ้าปลายทางตอบกลับมาแล้ว TTL น้อยกว่า 128 แต่มากกว่า 64
ก็พอเดาได้ว่า OS ปลายทางเป็น Windows หรือ Windows server

แต่ถ้าปลายทางตอบกลับมาแล้ว TTL มากกว่า 128 แต่ไม่เกิน 255
ก็พอเดาได้ว่าปลายทางใช้ OS ของอุปกรณ์ network เช่น Cisco, Sun, Solaris เป็นต้น

ซึ่งถ้าจะให้วิเคราะห์ให้ละเอียดกว่านี้เราต้องดูอย่างอื่นประกอบด้วย (อยากดูเต็มๆ คลิก)

6. ในส่วนท้ายสุดของการ ping จะมีการสรุปให้ว่าเรา ping ไปกี่ครั้ง
สำเร็จกี่ครั้ง ไม่สำเร็จกี่ครั้ง แล้ว delay time เฉลี่ยเท่าไหร่ มากสุดเท่าไหร่

จากข้อมูลข้างบนจะเห็นได้ว่าแค่เรา ping ธรรมดาๆ เรากลับได้ข้อมูลมามากกว่าที่คิด
เรารู้ทั้ง สภาพของ network, ระยะห่างไปยังอุปกรณ์ปลายทาง, ระบบปฏิบัติการ, IP ปลายทาง ฯลฯ

แต่จากทั้งหมดที่ผมเขียนมานั้นคือแค่ถ้าเรา “ping เจอ” เท่านั้นนะครับ
หลายๆคนที่เคยใช้คำสั่ง ping มาก่อนแล้วจะพบว่านอกจากที่ปลายทางจะ reply กลับมาได้
ยังมีผลลัพธ์อีกหลายแบบเช่น

destination host unreachable
request timeout
destination net unreachable
TTL expired in transit
Fragment reassembly time exceeded
และอื่นๆ

โดยทั่วไปแล้วเราก็จะเหมารวมว่าทั้งหมด ข้างบนนั้นคือ “ping ไม่เจอ
แต่จริงๆแล้วมันมีความหมายมากกว่านั้น
ซึ่งความหมายทั้งหลายนั้น ผมจะเอาไว้มาเขียนต่อในตอนที่ 2 นั้นเอง

อ่านต่อตอนที่ 2 คลิก

1 ความเห็น

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s