ในบทความนี้ ผมจะแนะนำวิธีการทำงานของเวิลด์ไวด์เว็บในระดับพื้นฐาน
เทคโนโลยีหลักคือ HTTP - Hypertext Transfer Protocol เป็นโปรโตคอลการสื่อสารที่คุณใช้เมื่อคุณท่องเว็บ
ในระดับพื้นฐาน เมื่อคุณเยี่ยมชมเว็บไซต์ เบราว์เซอร์ของคุณจะส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์นั้นจะตอบกลับด้วยทรัพยากร (รูปภาพ วิดีโอ หรือ HTML ของหน้าเว็บ) ซึ่งเบราว์เซอร์ของคุณจะแสดงให้คุณเห็น
นี่คือรูปแบบข้อความของ HTTP การโต้ตอบ HTTP ทุกครั้งรวมถึงคำขอและการตอบกลับ
โดยธรรมชาติแล้ว HTTP นั้นไร้สัญชาติ
ไร้สัญชาติ หมายความว่าคำขอทั้งหมดแยกออกจากกัน ดังนั้นแต่ละคำขอจากเบราว์เซอร์ของคุณจะต้องมีข้อมูลเพียงพอสำหรับเซิร์ฟเวอร์ในการดำเนินการตามคำขอ นอกจากนี้ยังหมายความว่าแต่ละธุรกรรมของรูปแบบข้อความของ HTTP จะได้รับการประมวลผลแยกจากกัน
URL
URL (Uniform Resource Locator) น่าจะเป็นแนวคิดที่เป็นที่รู้จักมากที่สุดของเว็บ นอกจากนี้ยังเป็นหนึ่งในแนวคิดที่สำคัญและมีประโยชน์มากที่สุด URL คือที่อยู่เว็บที่ใช้ระบุแหล่งข้อมูลบนเว็บ
แนวคิดของเว็บมีโครงสร้างมาจากทรัพยากร ตั้งแต่เริ่มต้น เว็บเป็นแพลตฟอร์มสำหรับการแชร์ไฟล์ข้อความ/HTML เอกสาร รูปภาพ ฯลฯ ดังนั้นจึงถือได้ว่าเป็นแหล่งรวบรวมทรัพยากร
โปรโตคอล — ส่วนใหญ่มักจะเป็น HTTP (หรือ HTTPS สำหรับ HTTP เวอร์ชันที่ปลอดภัย)
โปรโตคอลเด่นอื่นๆ ได้แก่:
- File Transfer Protocol (FTP) — เป็นโปรโตคอลมาตรฐานที่ใช้สำหรับถ่ายโอนไฟล์ระหว่างไคลเอนต์และเซิร์ฟเวอร์ผ่านเครือข่าย
- Simple Mail Transfer Protocol (SMTP) เป็นมาตรฐานสำหรับการส่งอีเมล
โดเมน — ชื่อที่ใช้ระบุที่อยู่ IP อย่างน้อยหนึ่งที่อยู่ของทรัพยากร
เส้นทาง —ระบุตำแหน่งทรัพยากรบนเซิร์ฟเวอร์ ใช้ตรรกะเดียวกับตำแหน่งทรัพยากรที่ใช้บนอุปกรณ์ที่คุณอ่านบทความนี้ (เช่น /search/cars/VWBeetle.pdf หรือ C:/my cars/VWBeetle.pdf)
พารามิเตอร์ — ข้อมูลเพิ่มเติมที่ใช้ระบุหรือกรองทรัพยากรบนเซิร์ฟเวอร์
หมายเหตุ :เมื่อค้นหาบทความและข้อมูลเพิ่มเติมเกี่ยวกับ HTTP คุณอาจพบคำว่า URI (หรือตัวระบุทรัพยากรแบบเดียวกัน) บางครั้งมีการใช้ URI แทน URL แต่ส่วนใหญ่อยู่ในข้อกำหนดที่เป็นทางการและโดยผู้ที่ต้องการอวด :)
คำขอ HTTP
ใน HTTP ทุกคำขอต้องมีที่อยู่ URL นอกจากนี้ คำขอต้องมีวิธีการ วิธี HTTP หลักสี่วิธีคือ:
- GET
- ใส่
- โพสต์
- ลบ
ฉันจะอธิบายวิธีการเหล่านี้และอื่น ๆ ในส่วนวิธีการ HTTP ของบทความนี้
และวิธีการเหล่านี้สอดคล้องกับการกระทำโดยตรง:
- อ่าน
- อัพเดท
- สร้าง
- ลบ
ข้อความ HTTP ทั้งหมดมีส่วนหัวอย่างน้อยหนึ่งรายการ ตามด้วยเนื้อหาข้อความทางเลือก เนื้อหาประกอบด้วยข้อมูลที่จะส่งพร้อมกับคำขอหรือข้อมูลที่ได้รับพร้อมกับการตอบกลับ
ส่วนแรกของทุกคำขอ HTTP มีสามรายการ:
ตัวอย่าง:
- GET /adds/search-result?item=vw+beetle HTTP/1.1
เมื่อ URL มี “?” หมายความว่ามีแบบสอบถาม นั่นหมายความว่าจะส่งพารามิเตอร์ของทรัพยากรที่ร้องขอ
- ส่วนแรกคือวิธีการที่บอกวิธี HTTP ที่ใช้ ที่ใช้กันมากที่สุดคือวิธี GET เมธอด GET ดึงทรัพยากรจากเว็บเซิร์ฟเวอร์ และเนื่องจาก GET ไม่มีเนื้อหาข้อความใดๆ หลังจากจำเป็นต้องใช้ส่วนหัว
- ส่วนที่สองคือ URL ที่ร้องขอ
- ส่วนที่สามคือเวอร์ชัน HTTP ที่กำลังใช้งานอยู่ เวอร์ชัน 1.1. เป็นเวอร์ชันที่ใช้บ่อยที่สุดสำหรับเบราว์เซอร์ส่วนใหญ่ อย่างไรก็ตาม เวอร์ชัน 2.0 กำลังเข้ามาแทนที่
นอกจากนี้ยังมีสิ่งที่น่าสนใจอื่นๆ ในคำขอ HTTP:
ส่วนหัวอ้างอิง — บอก URL ที่มาของคำขอ
ส่วนหัว User-Agent — ข้อมูลเพิ่มเติมเกี่ยวกับเบราว์เซอร์ที่ใช้สร้างคำขอ
ส่วนหัวของโฮสต์ — ระบุชื่อโฮสต์โดยเฉพาะ จำเป็นเมื่อมีการโฮสต์หน้าเว็บหลายหน้าบนเซิร์ฟเวอร์เดียวกัน
ส่วนหัวของคุกกี้ — ส่งพารามิเตอร์เพิ่มเติมให้กับลูกค้า
การตอบกลับ HTTP
เช่นเดียวกับคำขอ HTTP การตอบสนอง HTTP ยังประกอบด้วยสามรายการ:
ตัวอย่าง:
HTTP/1.1 200 ตกลง
- ส่วนแรกคือเวอร์ชัน HTTP ที่กำลังใช้งาน
- ส่วนที่สองคือรหัสตัวเลขของผลลัพธ์สำหรับคำขอ
- ส่วนที่สามเป็นคำอธิบายที่เป็นข้อความของส่วนที่สอง
มีสิ่งที่น่าสนใจอื่นๆ ในการตอบกลับ HTTP:
ส่วนหัวของเซิร์ฟเวอร์ — ข้อมูลเกี่ยวกับซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่กำลังใช้งาน
ส่วนหัว Set-Cookie — ออกคุกกี้ไปยังเบราว์เซอร์
เนื้อความ — การตอบกลับ HTTP ถือเนื้อหาข้อความเป็นเรื่องปกติ
ส่วนหัวของความยาวเนื้อหา — บอกขนาดของเนื้อหาข้อความเป็นไบต์
วิธี HTTP
วิธีการทั่วไปคือ GET และ POST แต่ก็มีอีกสองสามคนเช่นกัน
GET — คุณใช้วิธีนี้เพื่อขอข้อมูลจากทรัพยากรที่ระบุซึ่งข้อมูลไม่ได้ถูกแก้ไขไม่ว่าในทางใด คำขอ GET ไม่เปลี่ยนสถานะของทรัพยากร
โพสต์ — คุณใช้วิธีนี้ในการส่งข้อมูลไปยังเซิร์ฟเวอร์เพื่อสร้างทรัพยากร
ใส่ — คุณใช้วิธีนี้เพื่อปรับปรุงทรัพยากรที่มีอยู่บนเซิร์ฟเวอร์โดยใช้เนื้อหาในเนื้อหาของคำขอ คิดว่านี่เป็นวิธีการ "แก้ไข" บางอย่าง
หัว — คุณใช้เมธอดนี้แบบเดียวกับที่คุณใช้ GET แต่มีความแตกต่างว่าการส่งคืนเมธอด HEAD ไม่ควรมีเนื้อหาในการตอบสนอง แต่การส่งคืนจะมีส่วนหัวเหมือนกับว่ามีการใช้ GET คุณใช้เมธอด HEAD เพื่อตรวจสอบว่ามีทรัพยากรอยู่ก่อนทำการร้องขอ GET หรือไม่
TRACE — คุณใช้วิธีนี้เพื่อวัตถุประสงค์ในการวินิจฉัย คำตอบจะมีเนื้อหาที่แน่นอนของข้อความร้องขอในตัวของมันเอง
ตัวเลือก — คุณใช้วิธีนี้เพื่ออธิบายตัวเลือกการสื่อสาร (วิธี HTTP) ที่พร้อมใช้งานสำหรับทรัพยากรเป้าหมาย
PATCH — คุณใช้วิธีนี้เพื่อใช้การแก้ไขบางส่วนกับทรัพยากร
ลบ — คุณใช้วิธีนี้เพื่อลบทรัพยากรที่ระบุ
พักผ่อน
การถ่ายโอนสถานะตัวแทน (REST) คือรูปแบบสถาปัตยกรรมที่คำขอและการตอบสนองประกอบด้วยการแสดงสถานะปัจจุบันของทรัพยากรระบบ
วิธี “ปกติ”:
- https://carapp.com/search?make=wv&model=beetle
REST สไตล์:
- https://carapp.com/search/vw/beetle
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ REST ได้ที่นี่ หากคุณสงสัย
ส่วนหัว HTTP
มีสามองค์ประกอบหลักที่ประกอบขึ้นเป็นโครงสร้างคำขอ/การตอบสนอง ซึ่งรวมถึง:
- บรรทัดแรก
- ส่วนหัว
- เนื้อหา/เนื้อหา
เราได้พูดถึงบรรทัดแรกในคำขอและการตอบกลับ HTTP และมีการกล่าวถึงฟังก์ชันของร่างกายด้วย ตอนนี้เราจะพูดถึงส่วนหัว HTTP
ส่วนหัว HTTP ถูกเพิ่มหลังบรรทัดแรกและถูกกำหนดเป็นคู่ของชื่อ:ค่าที่คั่นด้วยเครื่องหมายทวิภาค ส่วนหัว HTTP ใช้เพื่อส่งพารามิเตอร์เพิ่มเติมพร้อมกับคำขอหรือการตอบสนอง
ดังที่ได้กล่าวไปแล้ว เนื้อความของข้อความมีข้อมูลที่จะส่งพร้อมกับคำขอหรือข้อมูลที่ได้รับพร้อมกับการตอบกลับ
ส่วนหัวมีหลายประเภทซึ่งจัดกลุ่มตามการใช้งานเป็น 4 หมวดหมู่กว้างๆ:
- ส่วนหัวทั่วไป — ส่วนหัวที่ใช้ได้ทั้งในคำขอและข้อความตอบกลับและไม่ขึ้นกับข้อมูลที่แลกเปลี่ยน
- ขอส่วนหัว — ส่วนหัวเหล่านี้กำหนดพารามิเตอร์สำหรับข้อมูลที่ร้องขอหรือพารามิเตอร์ที่ให้ข้อมูลสำคัญเกี่ยวกับไคลเอนต์ที่ส่งคำขอ
- ส่วนหัวตอบกลับ — ส่วนหัวเหล่านี้มีข้อมูลเกี่ยวกับการตอบสนองที่เข้ามา
- ส่วนหัวของเอนทิตี — ส่วนหัวของเอนทิตีอธิบายเนื้อหาที่ประกอบเป็นเนื้อความของข้อความ
รหัสสถานะ HTTP
เมื่อเรียกดูเว็บ คุณอาจพบหน้า "ข้อผิดพลาด 404:ไม่พบ" หรือหน้า "ข้อผิดพลาด 500 รายการ:เซิร์ฟเวอร์ไม่ตอบสนอง"
นี่คือรหัสสถานะ HTTP
ข้อความตอบกลับ HTTP ทุกข้อความต้องมีรหัสสถานะ HTTP ในบรรทัดแรก ซึ่งจะบอกเราถึงผลลัพธ์ของคำขอ
รหัสสถานะมีห้ากลุ่มซึ่งจัดกลุ่มตามหลักแรก:
- 1xx — ให้ข้อมูล
- 2xx — คำขอสำเร็จแล้ว
- 3xx — ไคลเอ็นต์ถูกเปลี่ยนเส้นทางไปยังแหล่งข้อมูลอื่น
- 4xx — คำขอมีข้อผิดพลาดบางอย่าง
- 5xx — เซิร์ฟเวอร์พบข้อผิดพลาดในการดำเนินการตามคำขอ
นี่คือรายการรหัสตอบกลับสถานะ HTTP ทั้งหมดและคำอธิบาย
HTTPS (Hypertext Transfer Protocol ปลอดภัย)
เวอร์ชันที่ปลอดภัยของโปรโตคอล HTTP คือ HyperText Transfer Protocol Secure (HTTPS) HTTPS ให้การสื่อสารที่เข้ารหัสระหว่างเบราว์เซอร์ (ไคลเอนต์) และเว็บไซต์ (เซิร์ฟเวอร์)
ใน HTTPS โปรโตคอลการสื่อสารจะได้รับการเข้ารหัสโดยใช้ Transport Layer Security (TLS) หรือ Secure Sockets Layer (SSL)
โปรโตคอลนี้จึงมักเรียกว่า HTTP บน TLS หรือ HTTP ผ่าน SSL
ทั้งโปรโตคอล TLS และ SSL ใช้ระบบการเข้ารหัสแบบอสมมาตร ระบบการเข้ารหัสแบบอสมมาตรใช้กุญแจสาธารณะ (คีย์เข้ารหัส) และคีย์ส่วนตัว (คีย์ถอดรหัส) เพื่อเข้ารหัสข้อความ
ทุกคนสามารถใช้กุญแจสาธารณะเพื่อเข้ารหัสข้อความได้ อย่างไรก็ตาม คีย์ส่วนตัวนั้นเป็นความลับ และนั่นหมายความว่ามีเพียงผู้รับที่ต้องการเท่านั้นที่สามารถถอดรหัสข้อความได้
จับมือ SSL/TLS
เมื่อคุณขอการเชื่อมต่อ HTTPS ไปยังเว็บไซต์ เว็บไซต์จะส่งใบรับรอง SSL ไปยังเบราว์เซอร์ของคุณ กระบวนการที่เบราว์เซอร์และเว็บไซต์ของคุณเริ่มต้นการสื่อสารนั้นเรียกว่า “SSL/TLS handshake”
SSL/TLS handshake เกี่ยวข้องกับชุดของขั้นตอนที่เบราว์เซอร์และเว็บไซต์ตรวจสอบซึ่งกันและกัน และเริ่มการสื่อสารผ่านช่องสัญญาณ SSL/TLS
อย่างที่คุณอาจสังเกตเห็น เมื่อใช้อุโมงค์ข้อมูลที่ปลอดภัยที่เชื่อถือได้ระหว่างการเชื่อมต่อ HTTPS ไอคอนแม่กุญแจสีเขียวจะแสดงในแถบที่อยู่ของเบราว์เซอร์
ประโยชน์ของ HTTPS
ประโยชน์หลักของ HTTPS คือ:
- ข้อมูลลูกค้า เช่น หมายเลขบัตรเครดิตและข้อมูลสำคัญอื่นๆ ได้รับการเข้ารหัสและไม่สามารถดักจับได้
- ผู้เข้าชมสามารถยืนยันได้ว่าคุณเป็นธุรกิจที่จดทะเบียนและคุณเป็นเจ้าของโดเมน
- ลูกค้าทราบดีว่าพวกเขาไม่ควรเข้าชมเว็บไซต์ที่ไม่มี HTTPS ดังนั้นจึงมีแนวโน้มที่จะเชื่อถือและทำการซื้อจากเว็บไซต์ที่ใช้ HTTPS ได้สำเร็จ
ขอบคุณสำหรับการอ่าน! ดูบทความเพิ่มเติมเช่นนี้ในโปรไฟล์ freeCodeCamp ของฉัน และดูสิ่งสนุกๆ อื่นๆ ที่ฉันสร้างบนหน้า GitHub