Notes & software courses · Free to learn
Aph's Blog
On this page

อินเทอร์เน็ตทำงานอย่างไร

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

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ความหมายเจอเมื่อ
200OK สำเร็จโหลดหน้าได้ปกติ
404Not Found ไม่พบพิมพ์ URL ผิด/หน้าถูกลบ
403Forbidden ห้ามเข้าไม่มีสิทธิ์
500Server Errorโค้ดฝั่ง server พัง

HTTPS — ทำไมต้องมีกุญแจ 🔒

HTTP ธรรมดาส่งข้อมูลเป็นข้อความเปล่า ใครดักกลางทางก็อ่านได้ (เช่นรหัสผ่าน) HTTPS คือ HTTP ที่เข้ารหัส (encryption) ทำให้ข้อมูลระหว่างทางอ่านไม่ออก — เว็บที่รับข้อมูลสำคัญต้องใช้ HTTPS เสมอ (สังเกตรูปกุญแจหน้า URL)

Port — ประตูของบริการ

เครื่องเดียวให้บริการได้หลายอย่างพร้อมกันผ่าน "port" (เลขประตู) เช่น เว็บ HTTP ใช้ port 80, HTTPS ใช้ 443 ตอนเขียนเว็บเองจะเจอ localhost:8000 — 8000 คือ port ที่โปรแกรมเราเปิดรออยู่

เกิดอะไรขึ้นเมื่อเปิดเว็บ (สรุปทั้งกระบวนการ)

  1. พิมพ์ชื่อเว็บแล้วกด Enter
  2. เครื่องถาม DNS เพื่อแปลงชื่อเว็บเป็น IP address
  3. เบราว์เซอร์ (client) ส่ง HTTP request ไปยัง server ที่ IP นั้น
  4. ข้อมูลเดินทางเป็น packet ผ่าน router หลายตัว
  5. server ประมวลผลแล้วส่ง HTTP response กลับ (HTML, รูป, ข้อมูล)
  6. เบราว์เซอร์ประกอบและแสดงผลหน้าเว็บให้เราเห็น

สรุปหัวข้อนี้ & จบบทที่ 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 แทนที่จะส่งทีเดียว?

จบบทที่ 1 — เข้าใจคอมพิวเตอร์แล้ว!

ตอนนี้คุณรู้ว่าคอมพิวเตอร์ทำงานอย่างไร เก็บข้อมูลเป็น 0/1 อย่างไร โปรแกรมรันอย่างไร OS กับไฟล์ทำงานอย่างไร และอินเทอร์เน็ตเชื่อมต่ออย่างไร ถึงเวลาลงมือเขียนโปรแกรมจริงในบทที่ 2!