On this page
อินเทอร์เน็ตทำงานอย่างไร
Client/Server, IP, DNS, packet และ HTTP — เกิดอะไรขึ้นจริง ๆ เมื่อคุณพิมพ์ชื่อเว็บแล้วกด Enter
ทุกวันนี้แทบทุกโปรแกรมเชื่อมต่ออินเทอร์เน็ต บทย่อยปิดท้ายบทที่ 1 จะอธิบายภาพรวมว่าเครื่องคอมพิวเตอร์คุยกันผ่านเครือข่ายอย่างไร เป็นพื้นฐานที่ต่อยอดสู่บทเว็บ/API/ฐานข้อมูลในบทที่ 6
Client และ Server
เมื่อเปิดเว็บ เครื่องของเรา (client) ส่งคำขอ (request) ไปยังเครื่องเซิร์ฟเวอร์ (server) ที่เก็บเว็บนั้น เซิร์ฟเวอร์ประมวลผลแล้วส่งข้อมูลกลับมา (response) เบราว์เซอร์จึงแสดงผลให้เราเห็น
- Client — เครื่องที่ร้องขอ เช่นเบราว์เซอร์หรือมือถือ
- Server — เครื่องที่ให้บริการข้อมูล (เปิดทำงานตลอดเวลา)
- Request — คำขอที่ client ส่งไป
- Response — คำตอบที่ server ส่งกลับ
IP Address และ DNS
ทุกเครื่องบนเครือข่ายมีเลขที่อยู่เรียกว่า IP address (เช่น 142.250.x.x) แต่คนจำเลขยาก เราจึงใช้ชื่อเว็บ (เช่น google.com) แล้วมีระบบ DNS ทำหน้าที่เหมือน "สมุดโทรศัพท์" แปลงชื่อเว็บเป็น IP ให้
พิมพ์ google.com
│
▼ ถาม DNS ว่า google.com มี IP อะไร
DNS ตอบ 142.250.x.x
│
▼ เชื่อมต่อไปที่ IP นั้นข้อมูลเดินทางเป็น Packet
ข้อมูลที่ส่งผ่านอินเทอร์เน็ตไม่ได้ไปทีเดียวเป็นก้อนใหญ่ แต่ถูกหั่นเป็นชิ้นเล็ก ๆ เรียกว่า packet แต่ละ packet เดินทางผ่านอุปกรณ์เครือข่าย (router) หลายต่อจนถึงปลายทาง แล้วประกอบกลับเป็นข้อมูลเดิม วิธีนี้ทำให้เครือข่ายยืดหยุ่นและเชื่อถือได้
HTTP — ภาษากลางของเว็บ
client กับ server เว็บคุยกันด้วยกติกาชื่อ HTTP (HyperText Transfer Protocol) request บอกว่าต้องการอะไร response ส่งข้อมูลกลับพร้อมรหัสสถานะ (status code) เรื่องนี้จะลงลึกในบทที่ 6
| Status | ความหมาย | เจอเมื่อ |
|---|---|---|
| 200 | OK สำเร็จ | โหลดหน้าได้ปกติ |
| 404 | Not Found ไม่พบ | พิมพ์ URL ผิด/หน้าถูกลบ |
| 403 | Forbidden ห้ามเข้า | ไม่มีสิทธิ์ |
| 500 | Server Error | โค้ดฝั่ง server พัง |
HTTPS — ทำไมต้องมีกุญแจ 🔒
HTTP ธรรมดาส่งข้อมูลเป็นข้อความเปล่า ใครดักกลางทางก็อ่านได้ (เช่นรหัสผ่าน) HTTPS คือ HTTP ที่เข้ารหัส (encryption) ทำให้ข้อมูลระหว่างทางอ่านไม่ออก — เว็บที่รับข้อมูลสำคัญต้องใช้ HTTPS เสมอ (สังเกตรูปกุญแจหน้า URL)
Port — ประตูของบริการ
เครื่องเดียวให้บริการได้หลายอย่างพร้อมกันผ่าน "port" (เลขประตู) เช่น เว็บ HTTP ใช้ port 80, HTTPS ใช้ 443 ตอนเขียนเว็บเองจะเจอ localhost:8000 — 8000 คือ port ที่โปรแกรมเราเปิดรออยู่
เกิดอะไรขึ้นเมื่อเปิดเว็บ (สรุปทั้งกระบวนการ)
- พิมพ์ชื่อเว็บแล้วกด Enter
- เครื่องถาม DNS เพื่อแปลงชื่อเว็บเป็น IP address
- เบราว์เซอร์ (client) ส่ง HTTP request ไปยัง server ที่ IP นั้น
- ข้อมูลเดินทางเป็น packet ผ่าน router หลายตัว
- server ประมวลผลแล้วส่ง HTTP response กลับ (HTML, รูป, ข้อมูล)
- เบราว์เซอร์ประกอบและแสดงผลหน้าเว็บให้เราเห็น
สรุปหัวข้อนี้ & จบบทที่ 1
- Client ร้องขอ (request), Server ตอบ (response)
- ทุกเครื่องมี IP address; DNS แปลงชื่อเว็บเป็น IP
- ข้อมูลถูกหั่นเป็น packet เดินทางผ่าน router แล้วประกอบกลับ
- เว็บคุยกันด้วย HTTP — request/response พร้อม status code (200/404/500)
- HTTPS = HTTP เข้ารหัส (ปลอดภัย); port = เลขประตูของบริการ (เว็บ 80/443)
1) เปิด terminal พิมพ์ ping google.com ดูว่าตอบกลับมาจาก IP อะไร 2) เปิด DevTools (F12) แท็บ Network แล้วโหลดเว็บ ดู request/response 3) อธิบายด้วยคำพูดตัวเองว่า DNS ทำหน้าที่อะไร 4) ทำไมข้อมูลต้องหั่นเป็น packet แทนที่จะส่งทีเดียว?
ตอนนี้คุณรู้ว่าคอมพิวเตอร์ทำงานอย่างไร เก็บข้อมูลเป็น 0/1 อย่างไร โปรแกรมรันอย่างไร OS กับไฟล์ทำงานอย่างไร และอินเทอร์เน็ตเชื่อมต่ออย่างไร ถึงเวลาลงมือเขียนโปรแกรมจริงในบทที่ 2!