Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ระบบเครือข่าย

HTTP/2 คืออะไร และทำอะไรได้บ้าง?

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

HTTP/2 คืออะไร และทำอะไรได้บ้าง?

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 คืออะไร และทำอะไรได้บ้าง?

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 เครือข่ายเบากว่า

HTTP/2 คืออะไร และทำอะไรได้บ้าง?

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 เพิ่มประสิทธิภาพการสื่อสารข้อมูล ทำให้ผู้ให้บริการอินเทอร์เน็ตลดค่าใช้จ่ายรวมได้ พร้อมรักษามาตรฐานอินเทอร์เน็ตความเร็วสูง

ความปลอดภัย — 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 ของอนาคต