Horizon

Thursday, October 1, 2015

[Networking] เมื่อคำถามเรื่อง การกด F5 ทำให้เว็บล่มได้บังเกิด

เมื่อคำถามเรื่อง การกด F5 ทำให้เว็บล่มได้บังเกิด

จากกระทู้ Pantip.com


ทำไมเว็บไซต์ถึงได้ล่มได้นะ
อ่านดูเหมือนมันไม่มีอะไร ก็แค่การกดปุ่ม F5 ปุ่มเดียวบน Keyboard แต่จริง ๆ แล้ว มันมีกระบวนการที่มากกว่านั้น

มันคืออะไร ????


เริ่มแรกเลย จะขออ้างอิงจาก ทฤษฎีของ TCP (ย่อมาจาก Transmission Control Protocol) ซึ่งแปลกันตรง ๆ คือ การควบคุมการส่งข้อมูลในระบบเครือข่ายนั่นเอง (ทั้ง LAN และ WAN Internet ก็เหมือนกัน)

โดยจะมีหลักการง่าย ๆ คือ การตรวจเช็คว่าจะรับส่งข้อมูลกันแล้วนะ ซึ่งทางคำศัพท์เรียกว่า Three-way handshake นั่นเอง

มันทำงานอย่างไร ?

จะมีฝั่งที่เป็นผู้ขอใช้งาน (ต่อไปขอเรียกว่า Source) และผู้ให้บริการปลายทาง (ต่อไปขอเรียกว่า Destination)
หรือถ้าเทียบง่าย ๆ Source คือ ผู้ใช้งานตามบ้านนี่แหละ ส่วนผู้ให้บริการ ก็คือ Web Server ที่เราเรียกให้งานนี่แหละ 

โดยจะมีการทำงาน ดังนี้
1. SYN: เป็นการเริ่มเปิดประเด็นว่า Source จะเรียกใช้งานแล้วนะ แล้วก็ส่ง SYN ไปหา Destination

2. SYN-ACK: เมื่อ Destination ได้รับ SYN มา ก็จะทำการตอบกลับ เรียกการตอบกลับนี้ว่า SYN-ACK 

3. ACK: สุดท้าย ก่อนจะเริ่มการรับส่ง Source ก็จะส่ง ACK กลับไป  



รูปภาพจาก http://www.networkuptime.com/nmap/images/TCP_SYN_ping_open.gif

นี่คือขั้นตอนกระบวนการก่อนการรับส่งข้อมูลนะ

แล้วไอ้การกด F5 ระรัว นี่มันส่งผลอะไร

ก็คือการสร้าง Three-way Handshake รัว ๆ นั่นเอง โดยฝั่ง Source จะทำการส่ง SYN ออกไป 1 ครั้ง ต่อการกด F5 1 ที แต่ ก่อนที่ Source จะรับ SYN-ACK และส่ง ACK กลับไป ก็กด F5 กระหน่ำลงไปอีก ก็เท่ากับส่ง SYN ไปอีก ให้ Destination ตอบ SYN-ACK มาเรื่อย ๆ 
แต่ไม่ใช่แค่เท่านั้น เหตุการณ์วันที่ 30-Sep-2015 กับเว็บหลาย ๆ เว็บที่ถูกไทยสามัคคี (อยากเห็นคนไทยสามัคคีกันแบบนี้ทุก ๆ เรื่องที่สร้างสรรนะ) ร่วมมือกันเปิด Browser แล้วมุ่งไปยังเป้าหมายเดียวกันจากคนนับล้าน กระบวนการนี้ มันไปกินทรัพยากรบนเครื่อง Destination เช่น CPU, Memory, Cache, ฯลฯ อีกมากมาย แล้วถ้าทรัพยากรหมดไม่สามารถใช้งานได้ ก็จะเกิดเหตุการณ์ เว็บล่มขึ้นนั่นเอง

เอวังด้วยประการ ฉีนี้แล....