HTTP ทำงานยังไง
เข้าใจว่าตั้งแต่พิมพ์ URL จนหน้าเว็บขึ้น เบราว์เซอร์กับ server คุยอะไรกันบ้าง
- HTTP คือ "ภาษา" ที่เบราว์เซอร์ใช้ขอข้อมูลจาก server แบบ ถาม 1 ครั้ง ตอบ 1 ครั้ง (Request → Response)
- ทุก Response มี Status Code บอกผล เช่น
200สำเร็จ,404ไม่พบ,500server พัง - HTTPS = HTTP ที่เข้ารหัสด้วย TLS คนกลางทางจึงแอบอ่านหรือแก้ข้อมูลไม่ได้
ทำไมต้องรู้เรื่องนี้
ทุกอย่างบนเว็บ ทั้งเปิดหน้าเว็บ, เรียก API, โหลดรูป ไปจนถึงเกมที่คุยกับ backend ล้วนวิ่งบน HTTP ถ้าเข้าใจกลไกนี้ เวลาเว็บช้า, ขึ้น error หรือ API ไม่ตอบ คุณจะรู้ทันทีว่าควรเริ่มหาปัญหาจากตรงไหน
เกิดอะไรขึ้นเมื่อพิมพ์ URL
- DNS ทำหน้าที่เหมือนสมุดโทรศัพท์ของอินเทอร์เน็ต แปลงชื่อ
learn.exztech.comเป็น IP เช่น168.144.108.204 - เบราว์เซอร์ เปิดการเชื่อมต่อ ไปที่ IP นั้น ถ้าเป็น HTTPS จะ "จับมือ" ตกลงกุญแจเข้ารหัสกันก่อน
- ส่ง Request ไปบอกว่าต้องการอะไร
- Server ส่ง Response กลับมา และถ้า HTML ที่ได้อ้างถึงไฟล์อื่น เบราว์เซอร์ก็จะส่ง Request ต่อไปอีกหลายรอบ
หน้าตาของ Request และ Response
HTTP เป็นข้อความธรรมดาที่คนอ่านออก ประกอบด้วย บรรทัดแรก + Header + Body
GET /web/how-http-works/ HTTP/1.1
Host: learn.exztech.com
Accept: text/html
User-Agent: Mozilla/5.0HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
<!doctype html>
<html>...</html>- Method: อยากทำอะไร (
GET,POST…) - Path: ขออะไร (
/web/…) - Headers: ข้อมูลประกอบ เช่น ภาษา, cookie
- Body: ข้อมูลที่ส่งไป (มักมากับ
POST)
- Status Code: ผลลัพธ์ (
200,404…) - Headers: ชนิดไฟล์, การ cache
- Body: เนื้อหาจริง เช่น HTML, JSON, รูป
Method ที่ใช้บ่อย
| Method | ความหมาย | ตัวอย่าง |
|---|---|---|
GET |
ขอดูข้อมูล (ไม่ควรเปลี่ยนอะไรบน server) | เปิดหน้าเว็บ, ดึงรายการสินค้า |
POST |
ส่งข้อมูลใหม่ไปให้ server | สมัครสมาชิก, ส่งฟอร์ม |
PUT / PATCH |
แก้ไขข้อมูลที่มีอยู่ | แก้โปรไฟล์ |
DELETE |
ลบข้อมูล | ลบโพสต์ |
Status Code อ่านยังไง
ดูแค่ ตัวเลขหลักแรก ก็รู้แล้วว่าปัญหาอยู่ฝั่งไหน
HTTP กับ HTTPS ต่างกันยังไง
HTTP เดิมส่งข้อความแบบเปิดเผย ใครที่อยู่กลางทาง เช่นคนใน Wi-Fi สาธารณะเดียวกัน ก็อ่านได้หมด HTTPS ห่อ HTTP ไว้ด้วย TLS ทำให้ได้ 2 อย่าง
- เข้ารหัส: คนกลางทางอ่านไม่ออก
- ยืนยันตัวตน: ใบรับรอง (certificate) พิสูจน์ว่าเรากำลังคุยกับ server ตัวจริง
ลองดูของจริง
เปิดหน้าเว็บไหนก็ได้แล้วกด F12 → แท็บ Network แล้วรีเฟรช จะเห็นทุก Request ที่เบราว์เซอร์ส่งออกไป พร้อม Status Code และเวลาที่ใช้ หรือใช้ curl ใน terminal
curl -I https://learn.exztech.com-I บอก curl ให้ขอแค่ Header กลับมา จึงเห็น Status Code กับ Header ได้ชัดๆ
ข้อผิดพลาดที่เจอบ่อย
ทบทวน
รหัส 5xx หมายถึงปัญหาฝั่ง server ส่วน 502 โดยเฉพาะมักแปลว่า proxy (เช่น Caddy, Nginx) ส่งต่อไปหา app ด้านหลังแล้วไม่ได้คำตอบที่ถูกต้อง ถ้า URL ผิดจะได้ 404 ซึ่งเป็น 4xx
TLS ให้ทั้ง การเข้ารหัส และ การยืนยันตัวตน แต่ไม่ได้ช่วยเรื่อง server ล่ม และไม่ได้ทำให้เร็วขึ้นโดยตรง