ใน 20 ปีที่ผ่านมา เวิลด์ไวด์เว็บ (World Wide Web) ได้พัฒนาอย่างมาก เทคโนโลยีเว็บที่ดีขึ้นทั้งหมดต้องการโซลูชันและโปรโตคอลการสื่อสารและโอนไฟล์ที่ดีกว่าและเร็วกว่าโปรโตคอลปัจจุบัน (HTTP) ซึ่งกำลังเข้าใกล้ขีดจำกัดทางเทคโนโลยี

HTTP/2 คืออะไร?
HTTP/2 เป็นเวอร์ชันล่าสุดของ Hypertext Transport Protocol (HTTP) — โปรโตคอลพื้นฐานที่เวิลด์ไวด์เว็บใช้ ได้รับการอนุมัติครั้งแรกในเดือนกุมภาพันธ์ 2015 นั่นคือเกือบ 20 ปีหลัง HTTP ต้นฉบับ HTTP/2 ลดเวลาโหลดและนำเสนอการปรับปรุงมากมายในการสื่อสารระหว่างเซิร์ฟเวอร์และเบราว์เซอร์ เบราว์เซอร์ส่วนใหญ่รองรับ HTTP/2 แล้ว และมุมมองผู้ใช้ไม่ค่อยเปลี่ยนแปลง นั่นเป็นเหตุผลหลักที่หลายคนยังไม่เคยอ่านหรือได้ยินมาก่อน
HTTP/2 ทำอะไรได้บ้าง?
ในฐานะผู้สืบทอด HTTP HTTP/2 เน้นปรับปรุงลักษณะเฉพาะทั้งหมดของ HTTP เพื่อรักษาความเข้ากันได้กับโปรโตคอลเก่า จึงรักษาความสามารถส่วนใหญ่ของ HTTP แต่มีการปรับปรุงรุนแรงบางอย่าง
HTTP และ HTTP/2 กำหนดทั้งคู่ว่า:
- เบราว์เซอร์และเซิร์ฟเวอร์ต้องดำเนินการอย่างไรตอบสนองคำสั่งต่างๆ
- ข้อมูลทุกบิตถูกโอนจากคอมพิวเตอร์หนึ่งไปอีกคอมพิวเตอร์ผ่านเว็บอย่างไร
- ข้อความถูกสร้าง จัดรูปแบบ และส่งอย่างไร
กล่าวคือ HTTP และ HTTP/2 ตั้งมาตรฐานการส่งมอบเนื้อหาเว็บไปยังคอมพิวเตอร์ของคุณ แตกต่างกันที่ HTTP/2 ทำทุกอย่างเร็วกว่าต้นแบบ นี่คือรายละเอียดสิ่งที่ HTTP/2 ทำได้
Multiplexed Streams (สตรีมแบบมัลติเพล็กซ์)
ชุดข้อมูลรูปแบบข้อความแบบสองทิศทาง (bi-directional) ที่ส่งผ่านโปรโตคอล HTTP/2 ระหว่างเซิร์ฟเวอร์และไคลเอนต์ เรียกว่า "สตรีม" HTTP สามารถส่ง "สตรีม" ได้ทีละอัน בלבד หลังส่งสตรีมหนึ่งแล้วจะมีหน่วงเวลาก่อนส่งสตรีมถัดไป
HTTP/2 สร้างเลเยอร์เฟรมมิงแบบไบนารี (binary framing layer) ใหม่ที่แก้ปัญหาการส่ง "สตรีม" ทีละอันโดยตรง อนุญาตให้ไคลเอนต์และเซิร์ฟเวอร์แยกเพย์โหลด HTTP/2 เป็นเฟรมลำดับเล็กๆ อิสระ จัดการง่าย แบบ interleaved ข้อมูลทั้งหมดจะถูกประกอบรวมใหม่เมื่อถึงปลายทาง โปรโตคอลนี้เปิดให้แลกเปลี่ยนลำดับสองทิศทาง หลายอัน เปิดพร้อมกัน อิสระ ไม่มีเลย์เทนซี่ระหว่างสตรีมต่อเนื่อง
ประโยชน์:
- คำขอและตอบกลับแบบมัลติเพล็กซ์ขนานกันไม่บล็อกกัน
- การเชื่อมต่อ TCP เดียวรับประกันการใช้ทรัพยากรเครือข่ายได้อย่างมีประสิทธิภาพแม้ส่งสตรีมข้อมูลหลายสตรีม
- ประสิทธิภาพเว็บเร็วขึ้น ลดเลย์เทนซี่ และผลลัพธ์เครื่องมือค้นหาดีขึ้น
- ลด CapEx และ OpEx ในการดำเนินเครือข่ายและทรัพยากร IT

HTTP/2 Server Push และ Cache Push
นี่คือความสามารถที่อนุญาตให้เซิร์ฟเวอร์ส่งข้อมูลแคชได้เพิ่มเติมไปยังไคลเอนต์ ข้อมูลนั้นไม่ได้ถูกขอ แต่คาดการณ์ว่าจะถูกขอในอนาคต หากไคลเอนต์ขอทรัพยากร A และทราบว่าทรัพยากร B ถูกอ้างอิงกับ A ที่ขอ เซิร์ฟเวอร์สามารถ Push B ไปพร้อม A แทนที่จะรอคำขอครั้งต่อไป จากนั้นไคลเอนต์บันทึกทรัพยากร B ที่ถูก Push ไว้ในแคชเพื่อใช้ในอนาคต ฟีเจอร์นี้ประหยัดกระบวนการ request-response ทั้งรอบและลดเลย์เทนซี่เครือข่าย Google นำเสนอ Server Push ในโปรโตคอล SPDY ต้นฉบับ
การปรับปรุงอีกอย่างใน HTTP/2 คือ Cache Push ซึ่งอัปเดตหรือทำลายแคชของไคลเอนต์ล่วงหน้า (proactively) ให้เซิร์ฟเวอร์สามารถระบุทรัพยากรที่ Push ได้ซึ่งไคลเอนต์จริงๆ ไม่ต้องการ
ประโยชน์:
- ไคลเอนต์สามารถปฏิเสธทรัพยากรที่ถูก Push เพื่อรักษา repository แคชที่มีประสิทธิภาพ (หรือปิด Server Push ทั้งหมด)
- ไคลเอนต์สามารถจำกัดจำนวน pushed streams ที่ multiplexed พร้อมกัน
- เซิร์ฟเวอร์สามารถจัดลำดับความสำคัญทรัพยากรที่ Push — นี่คือกุญแจสำคัญของความแตกต่างประสิทธิภาพระหว่าง HTTP/2 และ HTTP
- เซิร์ฟเวอร์สามารถ multiplex ทรัพยากรที่ Push พร้อมข้อมูลที่ไคลเอนต์ขอ ภายในการเชื่อมต่อ TCP เดียวกัน
- ไคลเอนต์สามารถใช้ทรัพยากรแคชข้ามหน้าต่างๆ
- ไคลเอนต์บันทึกทรัพยากรที่ Push ไว้ในหน่วยความจำแคช
โปรโตคอลแบบไบนารี (Binary Protocols)
HTTP/2 มีความสามารถที่ดีขึ้นอย่างมากในการแปลงโปรโตคอลข้อความเป็นโปรโตคอลแบบไบนารี ในขณะที่ HTTP ใช้คำสั่งข้อความประมวลผลรอบ request-response HTTP/2 ใช้คำสั่งแบบไบนารี ลดเวลา (เป็น 0 และ 1) ในการทำงานเดียวกัน
เบราว์เซอร์ที่รองรับ HTTP/2 จะแปลงคำสั่งข้อความเป็นโค้ดไบนารีก่อนส่งผ่านเครือข่าย แต่ binary framing layer ไม่เข้ากันได้กับเซิร์ฟเวอร์และไคลเอนต์ HTTP แบบเก่า
ประโยชน์:
- ป้องกันปัญหาความปลอดภัยที่เกี่ยวข้องกับลักษณะข้อความของ HTTP (เช่น Response splitting attacks)
- เปิดใช้งานความสามารถ HTTP/2 เช่น การบีบอัด การจัดลำดับความสำคัญ multiplexing การจัดการ TLS ที่มีประสิทธิภาพ และการควบคุมโฟลว์
- การแสดงคำสั่งแบบกระชับ ทำให้การนำไปใช้และประมวลผลง่ายขึ้น
- การประมวลผลข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่แข็งแกร่งและมีประสิทธิภาพ
- ปริมาณงานผ่าน (throughput) ดีขึ้น และเลย์เทนซี่เครือข่ายลดลง
- โอกาสผิดพลาดน้อยกว่า HTTP
- การใช้ทรัพยากรเครือข่ายอย่างมีประสิทธิภาพสูง
- โอเวอร์เฮดต่ำในการ parse ข้อมูล
- Footprint เครือข่ายเบากว่า

Stream Prioritization (การจัดลำดับความสำคัญสตรีม)
HTTP/2 อนุญาตให้ไคลเอนต์ระบุความชอบเฉพาะสตรีมข้อมูล เซิร์ฟเวอร์ไม่ผูกมัดต้องปฏิบัติตามคำแนะนำของไคลเอนต์ แตกลไกนี้ช่วยให้เซิร์ฟเวอร์จัดสรรทรัพยากรเครือข่ายให้เหมาะสมตามความต้องการผู้ใช้
Stream Prioritization ทำงานกับ Weight (น้ำหนัก) และ Dependencies (การพึ่งพา) ที่กำหนดให้แต่ละสตรีม แม้สตรีมทั้งหมดจะพึ่งพากันโดยธรรมชาติ ยกเว้นมีน้ำหนักระหว่าง 1-256 กลไกการจัดลำดับสตรีมยังเป็นหัวข้ออภิปราย แต่เมื่อรวมกับความสามารถ HTTP/2 ในการประมวลผลสตรีมข้อมูลหลายสตรีมในการเชื่อมต่อ TCP เดียว อาจนำไปสู่การมาถึงพร้อมกันของคำขอเซิร์ฟเวอร์ที่มีความสำคัญต่างกัน
ประโยชน์:
- ลดผลกระทบเชิงลบของปัญหาเลย์เทนซี่เครือข่าย
- ปรับปรุงประสบการณ์ผู้ใช้และความเร็วโหลดหน้า
- เพิ่มประสิทธิภาพการสื่อสารข้อมูลระหว่างเซิร์ฟเวอร์และไคลเอนต์
- การใช้ทรัพยากรเครือข่ายอย่างมีประสิทธิภาพสูง
- ลดเวลาส่งมอบคำขอเนื้อหาหลัก
Stateful Header Compression (การบีบอัดเฮดเดอร์แบบมีสถานะ)
เมื่อผู้ใช้เรียกดูเว็บไซต์ที่มีเนื้อหามัลติมีเดียมาก โดยใช้ HTTP ไคลเอนต์จะส่งเฟรมเฮดเดอร์ที่เกือบเหมือนกันหลายๆ ตัว สาเหตุคือแต่ละคำขอของไคลเอนต์ต้องรวมข้อมูลเท่าที่เซิร์ฟเวอร์ต้องการเพื่อดำเนินการ กระบวนการนี้นำไปสู่เลย์เทนซี่และการใช้ทรัพยากรที่ไม่จำเป็น
HTTP/2 รวมความสามารถในการบีบอัดเฟรมเฮดเดอร์ซ้ำซ้อนจำนวนมาก ใช้ข้อกำหนด HPACK เป็นวิธีการบีบอัดเฮดเดอร์ที่ปลอดภัยและเรียบง่าย ไคลเอนต์และเซิร์ฟเวอร์เก็บรายการเฮดเดอร์ที่ใช้ในคำขอไคลเอนต์-เซิร์ฟเวอร์ก่อนหน้า ซึ่งแก้ปัญหาเฟรมเฮดเดอร์ซ้ำโดยตรง
ประโยชน์:
- เข้ารหัสเฮดเดอร์ที่ใช้บ่อยและเฮดเดอร์ขนาดใหญ่ กำจัดความจำเป็นในการส่งเฟรมเฮดเดอร์ทั้งหมด ขนาดแต่ละสตรีมเล็กลงอย่างมีนัยสำคัญ
- ป้องกันการโจมตีความปลอดภัย เช่น CRIME สำรวจสตรีมข้อมูลที่มีเฮดเดอร์บีบอัด
- การใช้กลไก multiplexing อย่างมีประสิทธิภาพ
- การจัดลำดับความสำคัญสตรีมอย่างมีประสิทธิภาพ
- ลดโอเวอร์เฮดทรัพยากร

ประโยชน์จริงของ HTTP/2
HTTP/2 เน้นเพิ่มศักยภาพเทคโนโลยีสูงสุด เพื่อตอบสนองความต้องการและความคาดหวังในอนาคต นี่คือประโยชน์จริงของการใช้ HTTP/2
ประสิทธิภาพเว็บและเว็บมือถือ — HTTP/2 สามารถส่งและรับข้อมูลมากขึ้นในหนึ่งรอบการสื่อสารไคลเอนต์-เซิร์ฟเวอร์ ทำงานดีในการลดเลย์เทนซี่การเข้าถึงบริการอินเทอร์เน็ตบนเครือข่ายข้อมูลมือถือและเครือข่ายที่มีแบนด์วิดท์จำกัดต่อผู้ใช้
อินเทอร์เน็ตความเร็วสูงราคาถูกกว่า — HTTP/2 เพิ่มประสิทธิภาพการสื่อสารข้อมูล ทำให้ผู้ให้บริการอินเทอร์เน็ตลดค่าใช้จ่ายรวมได้ พร้อมรักษามาตรฐานอินเทอร์เน็ตความเร็วสูง
ความปลอดภัย — HTTP/2 ไม่เปราะบางต่อภัยคุกคามที่มุ่งเป้าปรอทอคอลชั้นแอปพลิเคชันแบบข้อความ ยิ่งไปกว่านั้น ใช้แนวทาง "Security by Obscurity" ปกป้องการส่งข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์
การเข้าถึงกว้างขวาง — ข้อได้เปรียบของ HTTP/2 ลดผลลัพธ์อินเทอร์เน็ตสำหรับผู้ให้บริการ นำไปสู่การครอบคลุมอินเทอร์เน็ตระดับโลกกว้างขึ้น
ประสบการณ์เว็บมัลติมีเดียสมบูรณ์ — คุณสมบัติและข้อได้เปรียบทางเทคโนโลยีที่ HTTP/2 นำมาสู่เวิลด์ไวด์เว็บ สร้างโครงสร้างพื้นฐานที่สามารถส่งมอบเนื้อหามัลติมีเดียได้ที่ความเร็วโหลดหน้าเร็วขึ้น
สรุป
HTTP/2 เป็นโปรโตคอลที่ใหม่ค่อนข้าง แต่การรองรับเพิ่มขึ้นเรื่อยๆ ปัจจุบัน เบราว์เซอร์ส่วนใหญ่รองรับ HTTP/2 (Microsoft Edge, Google Chrome, Safari, Firefox, Chrome for Android) เซิร์ฟเวอร์เว็บหลายตัวรองรับ HTTP/2 แบบเนทีฟ (Apache HTTP Server, Tomcat, NGINX) ไม่มีข้อสงสัยว่า HTTP/2 เป็นโปรโตคอล WWW ของอนาคต