ตอนนี้จะเป็นการอธิบายการทำงานของ HTTP เมื่อเราเปิดบราวเซอร์เพื่อเรียกดูข้อมูลเท่านั้น

โปรโตคอลสำคัญในการเรียกดูข้อมูลต่างๆบนอินเตอร์เน็ตคือ โปรโตคอล HTTP ซึ่งใช้ในการ request และ response ทรัพยากรที่ถูกโฮสต์อยู่บน server ต่างๆ

ทรัพยากรในที่นี้ คือ ไฟล์ต่างๆของเว็บเพจนั้น เช่น ไฟล์ HTML, รูปภาพ, วิดีโอ และ script

HTTP คืออะไร?

HTTP ย่อมาจาก Hypertext Transfer Protocol ถูกใช้เป็นโครงสร้างของการ request และ response บนอินเตอร์เน็ต ข้อมูลที่ถูกถ่ายโอนจากที่หนึ่งไปยังอีกที่หนึ่งต้องถูกถ่ายโอนบนเครือข่าย

การถ่ายโอนทรัพยากรใดๆจะต้องใช้ TCP โดย TCP จะจัดการช่องทางระหว่างอุปกรณ์ฝั่ง client และ server

HTTP คือพื้นฐานการสื่อสารข้อมูลสำหรับ World Wide Web เป็นเสมือนภาษาที่อุปกรณ์ทั้งสองฝั่งใช้สื่อสาร

การทำงานของ HTTP และ TCP

เมื่อพิมพ์ลิ้งค์ใดๆ เช่น http://www.devjourneys.com ในบราวเซอร์ นั่นหมายความว่าเรากำลังสั่งให้คอมพิวเตอร์เปิดช่องทาง TCP ไปที่ sever ที่มี URL (Uniform Resource Locator) นี้อยู่

ในกรณีนี้ หมายความว่าคอมพิวเตอร์ของเราเป็นผู้ส่ง request คอมพิวเตอร์ของเราจึงทำหน้าที่เป็น client

เมื่อ TCP เชื่อมต่อสำเร็จแล้ว เครื่อง client จะส่ง HTTP GET request ไปที่ server เพื่อดึงเอาเว็บเพจที่เรียกออกมาแสดง และเครื่อง server ส่ง response กลับมาที่เครื่อง client หลังจากนั้นการเชื่อมต่อ TCP จะถูกปิดลง

GET request เป็น หนึ่งในหลาย method ที่เครื่อง client สามารถเรียกได้

ทุกคนสามารถอ่าน request หรือคำร้องขอ HTTP ของเราได้ที่จุดเชื่อมต่อเครือข่าย ดังนั้นจึงไม่ควรส่งข้อมูลจำพวกบัตรเครดิตหรือรหัสผ่านทางโปรโตคอลนี้

HTTPS คืออะไร?

หรือ HTTP Secure (Hypertext Transfer Protocol Secure) เป็นการผสมผสานการทำงานระหว่าง HTTP และโปรโคตอลอื่นเพื่อให้โปรโตคอลการสื่อสารถูกเข้ารหัสโดยใช้ TLS (Transport Layer Security) หรือ SSL (Secure Sockets Layer) การสื่อสารจึงมีความปลอดภัยในการส่งข้อมูลที่มีความอ่อนไหวมากหรือข้อมูลส่วนตัว

HTTPS ถูกนำมาใช้เพื่อความปลอดภัยในการสื่อสารระหว่างเครือข่ายคอมพิวเตอร์ และถูกใช้อย่างแพร่หลายบนอินเตอร์เน็ต

การที่เว็บไซต์ใดๆจะรองรับ HTTPS ได้ เว็บไซต์นั้นต้องลงทะเบียนใบรับรองดิจิตอลจาก Certificate Authority

ดูข้อมูลเน็ตเวิร์กบน Chrome

  1. เปิด Google Chrome -> กด View -> Developer -> Developer Tools

2. กด network บางทีข้อมูลมันขึ้นช้า ต้องกด refresh URL ในบราวเซอร์ก่อน

3. กดที่ URL เว็บไซต์ในช่อง Name และกด Header ช่องขวามือ

เมื่อเราพิมพ์ URL ลงในบราวเซอร์ บราวเซอร์จะแยก HTTP ออกมา HTTP จะทำให้บราวเซอร์เข้าใจว่าอันนี้เป็นโปรโตคอลเน็ตเวิร์ก จากนั้นบราวเซอร์จะดู Domain Name ใน URL และส่งคำขอไปที่ internet Domain Name Server ให้ส่งที่อยู่ IP ของ Domain Name นี้มาให้

เมื่อเครื่อง client รู้ที่อยู่ IP ของเว็บเพจแล้ว ก็จะเปิดการเชื่อมต่อไปที่ sever ของที่อยู่ IP น้ันโดยใช้โปรโตคอล HTTP ที่กำหนด และส่งร้องขอ GET หรือ GET request ไปที่ server นั้น ซึ่งประกอบไปด้วยที่อยู่ IP ของโฮสต์และ data payload (ส่วนเนื้อหาของเว็บเพจนั้น)

ข้อมูลทั่วไปใน headers เช่น

Request URL

ที่อยู่ URL ของทรัพยากรที่เรียก

Request Method

ส่วนที่ระบุ method ที่ใช้ ในการเรียกดูข้อมูลนี้จะใช้ method GET แต่ HTTP request ยังมีอีกหลาย method

Status Code

คือรหัสของสถานะการร้องขอ จะมีหลายรหัส แต่ละรหัสจะมีความหมายต่างกัน

รหัสสถานะจะแยกออกเป็น 5 กลุ่ม หรือ 5 classes

  1. class 1XX – Informational
    • เป็นการส่งข่าว/แจ้งข้อมูลแก่เครื่อง client ขณะที่เครื่อง server กำลังดำเนินการตาม request อยู่ รหัสนี้ไม่ค่อยได้ใช้
  2. class 2XX – Success
    • แสดงเมื่อการดำเนินการสำเร็จอย่างที่ควรจะเป็น
  3. class 3XX – Redirect
    • แจ้งแก่เครื่อง client ว่าเครื่อง server ได้รับคำร้องขอ หรือ request แล้ว แต่ทรัพยากรที่ต้องการนั้นอยู่บน URL อื่น กรณีนี้เกิดขึ้นเมื่อทรัพยากรนั้นถูกย้ายไปอยู่ URL ใหม่, เพจที่เรียกถูกลบออกแล้ว, การเปลี่ยนชื่อ Domain Name หรือการรวมเข้าด้วยกันของเว็บไซต์
  4. class 4XX – Client Error
    • เครื่อง server ได้รับคำร้องขอ และไม่สามารถดำเนินการให้ได้เนื่องจากมีความผิดพลาดที่เกิดจากเครื่อง client
  5. class 5XX – Server Error
    • เกิดความผิดพลาดที่เครื่อง server ทำให้ไม่สามารถดำเนินการตามคำร้องขอได้

Status Code ที่พบบ่อย

  • HTTP 200 – OK: หมายถึง คำร้องขอสมบูรณ์ ทรัพยากรที่ร้องขอจากเครื่อง server ถูกส่งให้เครื่อง client แล้ว ปกติผู้ใช้งานอินเตอร์เน็ตจะไม่เห็นรหัสนี้
  • HTTP 301 – Moved Permanently: ไม่พบทรัพยากรจากที่อยู่ URL ที่เครื่อง client ร้องขอ เนื่องจากทรัพยากรถูกลบออกอย่างถาวรและอยู่บน URL อื่น ปกติเครื่อง client จะถูกส่งไปที่ URL ใหม่นั้นทันที URL ในช่องบราวเซอร์จะเปลี่ยนเองโดยที่ผู้ใช้งานอาจไม่ได้สังเกตเห็น
  • HTTP 302 – Found: ใช้รหัสนี้กับ URL ที่รับ POST data (ฟอร์มบนเว็บไซต์) เมื่อเครื่อง server รับข้อมูล(แบบฟอร์ม)จาก URL แรกแล้วมันจะส่งผู้ใช้ต่อไปยังหน้าถัดไป
  • HTTP 307 – Temporary Redirect: หมายถึงทรัพยากรถูกย้ายไปที่อยู่ URL อื่นชั่วคราว ครั้งนี้เครื่อง client จะถูกส่งไปที่อยู่ URL อื่น แต่ในอนาคตคำร้องขอควรยังคงร้องขอจาก URL เดิมอยู่ การทำงานคล้ายกับรหัส 302
  • HTTP 308 – Permanent Redirect: ทรัพยากรถูกย้ายไปอยู่ที่อยู่ URL อื่นถาวร การทำงานคล้ายกันกับรหัส 301
  • HTTP 400 – Bad Request: เกิดความไม่ถูกต้องในการส่งคำร้องขอ ปกติเครื่อง server จะระบุปัญหาขอคำร้องขอให้ทราบ
  • HTTP 401 – Unauthorised: ทรัพยากรบางอย่างจะถูกจำกัดการเข้าถึงให้แก่ผู้ใช้ที่ได้รับอนุญาตเท่านั้น รหัสนี้แสดงเมื่อไม่มีการอนุญาตหรือการขออนุญาตนั้นถูกปฏิเสธ
  • HTTP 403 – Forbidden: คล้ายกับรหัส 401 ต่างกันที่ 403 จะไม่มีการอนุญาต คำร้องขอถูกต้อง แต่ถูกปฏิเสธการเข้าถึง
  • HTTP 404 – Not Found: ไม่พบทรัพยากรที่เรียกบนเครื่อง server อาจหมายความได้ว่าไม่มีที่อยู่ URL นั้น หรือ ที่อยู่ URL นั้นหายไปโดยไม่ทราบที่ไป หากผู้ใช้ได้รับ 404 Error ควรตรวจสอบว่าได้กรอก URL ที่ถูกต้องหรือไม่
  • HTTP 503 – Service Unavailable: ไม่สามารถให้บริการได้ชั่วคราว อาจเป็นเพราะหน้าที่เปิดอยู่นี้ overload หรือกำลังซ่อมบำรุง
  • HTTP 504 – Getaway Timeout: เมื่อ server เองทำหน้าที่เป็น proxy หรือ getaway แต่ไม่ได้รับการตอบกลับจาก server ต้นทางภายในเวลาที่กำหนด

ดูรหัสสถานะ HTTP อื่นๆ

Remote Address

ที่อยู่ IP เครื่อง server

ข้อมูลใน Request Headers เช่น

Accept

ระบุชนิดของเนื้อหาที่เครื่อง client รับได้

Accept-Language

ระบุภาษาที่เครื่อง client สามารถเข้าใจได้ ปกติเครื่องจะแสดงภาษาท้องถิ่น เช่น ภาษาไทย ภาษาอังกฤษ

Connection

ควบคุมการเชื่อมต่อของเน็ตเวิร์กหลังจากถ่ายโอนข้อมูลเรียบร้อยแล้ว หากขึ้นข้อความว่า keep-alive หมายความว่าการเชื่อมต่อยังเปิดอยู่

Host

เป็นส่วนที่ระบุที่อยู่ของ server

ข้อมูลใน Response Headers เช่น

Content-Type

ชนิดเนื้อหาของข้อมูล

Date

วันเวลาที่เรียกข้อมูล (ยึดเวลาจากเครื่อง server)

Expires

ขอบเขตวันเวลาที่สามารถเก็บ cache ได้

Server

software ที่เครื่อง server ต้นทางใช้ในการรับมือกับ request