ในช่วง 20 ปีที่ผ่านมา เวิลด์ไวด์เว็บได้พัฒนาขึ้นอย่างมาก เทคโนโลยีเว็บที่ปรับปรุงแล้วทั้งหมดต้องการโซลูชันและโปรโตคอลที่ดีกว่าและเร็วกว่าสำหรับการสื่อสารและการถ่ายโอนไฟล์มากกว่าเทคโนโลยีปัจจุบัน (HTTP) ซึ่งถึงขีดจำกัดทางเทคโนโลยีแล้ว
HTTP/2 คืออะไร
HTTP/2 เป็นไฮเปอร์เท็กซ์เวอร์ชันใหม่ล่าสุด Transport Protocol (HTTP) – โปรโตคอลพื้นฐานที่ใช้โดยเวิลด์ไวด์เว็บ . ได้รับการอนุมัติครั้งแรกในเดือนกุมภาพันธ์ 2558 ซึ่งเป็นเวลาเกือบ 20 ปีหลังจาก HTTP ดั้งเดิม HTTP/2 ลดเวลาในการโหลดและปรับปรุงการสื่อสารระหว่างเซิร์ฟเวอร์และเบราว์เซอร์อย่างมาก เบราว์เซอร์ส่วนใหญ่เพิ่ม HTTP/2 แล้ว และไม่ได้เปลี่ยนแปลงอะไรมากมายจากมุมมองของผู้ใช้ นั่นคือเหตุผลหลักที่พวกเราหลายคนยังไม่เคยอ่านหรือเคยได้ยินเรื่องนี้มาก่อน
HTTP/2 ทำอะไรได้บ้าง
ในฐานะผู้สืบทอดของ HTTP HTTP/2 มุ่งเน้นไปที่การปรับปรุงคุณลักษณะทั้งหมดของ HTTP . เพื่อรักษาความเข้ากันได้แบบย้อนหลังกับโปรโตคอลที่เก่ากว่า จะคงฟังก์ชันส่วนใหญ่ของ HTTP ไว้ อย่างไรก็ตาม มีการปรับปรุงอย่างมาก
ทั้ง HTTP หรือ HTTP/2 กำหนด:
- การดำเนินการใดที่เว็บเบราว์เซอร์และเซิร์ฟเวอร์ต้องตอบสนองต่อคำสั่งต่างๆ
- วิธีการถ่ายโอนข้อมูลทุกบิตจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งผ่านทางเว็บ
- วิธีสร้าง จัดรูปแบบ และส่งข้อความ
กล่าวอีกนัยหนึ่ง HTTP และ HTTP/2 กำหนดมาตรฐานสำหรับการส่งเนื้อหาเว็บไปยังคอมพิวเตอร์ของคุณ โดยมีความแตกต่างที่ HTTP/2 ทำให้ทุกอย่างเร็วกว่ารุ่นก่อน คุณสามารถดูรายละเอียดว่า HTTP/2 ทำอะไรได้บ้าง
สตรีมแบบมัลติเพล็กซ์
ชุดเฟรมรูปแบบข้อความแบบสองทิศทางที่ส่งผ่านโปรโตคอล HTTP/2 ระหว่างเซิร์ฟเวอร์และไคลเอ็นต์หนึ่งเครื่องเรียกว่า "สตรีม" HTTP สามารถส่ง "สตรีม" เหล่านี้ได้ครั้งละหนึ่งรายการเท่านั้น หลังจากส่งสตรีมแล้ว จะเกิดความล่าช้าระหว่างการส่งสตรีมครั้งต่อไป
HTTP/2 สร้างเลเยอร์เฟรมไบนารีใหม่ที่แก้ปัญหาโดยตรงด้วยการส่ง "สตรีม" ทีละรายการ ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์แยกส่วนข้อมูล HTTP/2 ออกเป็นลำดับเฟรม interleaved ขนาดเล็กที่เป็นอิสระและจัดการได้ง่าย ข้อมูลทั้งหมดนี้ประกอบขึ้นใหม่เมื่อได้รับจากอีกด้านหนึ่ง โปรโตคอลนี้ช่วยให้สามารถแลกเปลี่ยนลำดับแบบสองทิศทางแบบเปิดพร้อมกันหลายรายการและเป็นอิสระได้โดยไม่มีเวลาแฝงระหว่างสตรีมที่ต่อเนื่องกัน
ประโยชน์:
- คำขอและการตอบกลับแบบมัลติเพล็กซ์คู่ขนานกันไม่ได้ปิดกั้นซึ่งกันและกัน
- การเชื่อมต่อ TCP เดียวช่วยให้มั่นใจถึงการใช้ทรัพยากรเครือข่ายอย่างมีประสิทธิภาพ แม้จะส่งสตรีมข้อมูลหลายรายการ
- ประสิทธิภาพเว็บเร็วขึ้น เวลาแฝงที่ลดลง และผลลัพธ์ของเครื่องมือค้นหาที่ดีขึ้น
- ลด CapEx และ OpEx ในทรัพยากรเครือข่ายและไอทีที่ทำงานอยู่
พุชเซิร์ฟเวอร์ HTTP/2 และพุชแคช
สิ่งนี้ เป็นความสามารถที่ช่วยให้เซิร์ฟเวอร์ส่งข้อมูลแคชเพิ่มเติมไปยังไคลเอ็นต์ได้ . ข้อมูลดังกล่าวไม่ได้ร้องขอแต่คาดว่าจะได้รับการร้องขอในอนาคต หากไคลเอนต์ร้องขอทรัพยากร A หนึ่งรายการ และทราบว่ามีการอ้างอิงทรัพยากร B อื่นกับทรัพยากรที่ร้องขอ เซิร์ฟเวอร์สามารถกด B พร้อมกับ A แทนการรอคำขออื่นของไคลเอ็นต์ จากนั้นไคลเอ็นต์จะบันทึกทรัพยากรที่พุช B ลงในแคชเพื่อใช้ในอนาคต คุณลักษณะนี้ช่วยบันทึกกระบวนการรับส่งไปกลับทั้งหมดและลดเวลาแฝงของเครือข่าย Google เปิดตัว Server Push ในโปรโตคอล SPDY เป็นครั้งแรก
การปรับปรุงอีกประการใน HTTP/2 คือ Cache Push การดำเนินการนี้จะอัปเดตหรือทำให้แคชของไคลเอ็นต์ใช้งานไม่ได้ ซึ่งจะทำให้เซิร์ฟเวอร์สามารถระบุทรัพยากรที่สามารถผลักดันได้ซึ่งลูกค้าไม่ต้องการจริง ๆ
ประโยชน์:
- ลูกค้าสามารถปฏิเสธทรัพยากรที่พุชเพื่อรักษาพื้นที่เก็บข้อมูลของทรัพยากรที่แคชอย่างมีประสิทธิภาพ (หรือแม้แต่ปิดการใช้งานเซิร์ฟเวอร์พุชทั้งหมด)
- ลูกค้าสามารถจำกัดจำนวนของสตรีมที่พุชแบบมัลติเพล็กซ์ได้พร้อมกัน
- เซิร์ฟเวอร์สามารถจัดลำดับความสำคัญของทรัพยากรที่พุช นี่คือกุญแจสำคัญในความแตกต่างด้านประสิทธิภาพระหว่าง HTTP/2 และ HTTP
- เซิร์ฟเวอร์สามารถมัลติเพล็กซ์พุชทรัพยากรพร้อมกับข้อมูลที่ร้องขอของลูกค้าภายในการเชื่อมต่อ TCP เดียวกัน
- ลูกค้าสามารถใช้ทรัพยากรที่แคชไว้ในหน้าต่างๆ ได้
- ไคลเอนต์บันทึกทรัพยากรที่พุชในหน่วยความจำแคช
โปรโตคอลไบนารี
HTTP/2 ได้ปรับปรุงความสามารถอย่างมากเมื่อแปลงโปรโตคอลข้อความเป็นโปรโตคอลไบนารี . ในขณะที่ HTTP ใช้ในการประมวลผลคำสั่งข้อความเพื่อดำเนินการตามรอบการตอบสนองต่อคำขอ HTTP/2 ก็อาศัยคำสั่งไบนารี ที่ย่นเวลา (เป็น 1 วินาทีและ 0 วินาที) สำหรับการดำเนินงานเดียวกัน
เบราว์เซอร์ที่รองรับ HTTP/2 จะแปลงคำสั่งข้อความเป็นรหัสไบนารีก่อนส่งผ่านเครือข่าย อย่างไรก็ตาม เลเยอร์เฟรมไบนารีนั้นเข้ากันไม่ได้กับเซิร์ฟเวอร์ HTTP และไคลเอนต์แบบย้อนหลัง
ประโยชน์:
- การป้องกันข้อกังวลด้านความปลอดภัยที่เกี่ยวข้องกับลักษณะข้อความของ HTTP (เช่น การโจมตีแบบแยกการตอบสนอง)
- เปิดใช้งานความสามารถ HTTP/2 เช่น การบีบอัด การจัดลำดับความสำคัญ มัลติเพล็กซ์ การจัดการ TLS อย่างมีประสิทธิภาพ และการควบคุมโฟลว์
- การแสดงคำสั่งแบบกะทัดรัดช่วยให้ใช้งานและประมวลผลได้ง่ายขึ้น
- การประมวลผลข้อมูลที่แข็งแกร่งและมีประสิทธิภาพระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
- ปรับปรุงปริมาณงานและลดเวลาในการตอบสนองของเครือข่าย
- มีโอกาสเกิดข้อผิดพลาดน้อยกว่าเมื่อเปรียบเทียบกับ HTTP
- การใช้ทรัพยากรเครือข่ายที่มีประสิทธิภาพสูง
- โอเวอร์เฮดในการแยกวิเคราะห์ข้อมูลต่ำ
- รอยเท้าเครือข่ายที่เบากว่า
การจัดลำดับความสำคัญของสตรีม
HTTP/2 ช่วยให้ไคลเอนต์สามารถกำหนดการตั้งค่าให้กับสตรีมข้อมูลเฉพาะได้ เซิร์ฟเวอร์ไม่ได้ถูกผูกมัดให้ปฏิบัติตามคำแนะนำของไคลเอ็นต์เหล่านี้ แต่กลไกนี้ช่วยให้เซิร์ฟเวอร์เพิ่มประสิทธิภาพการจัดสรรทรัพยากรเครือข่ายตามความต้องการของผู้ใช้ .
การจัดลำดับความสำคัญของสตรีมทำงานร่วมกับน้ำหนักและการพึ่งพาที่กำหนดให้กับแต่ละสตรีม แม้ว่ากระแสข้อมูลทั้งหมดจะพึ่งพาอาศัยกันโดยเนื้อแท้ ยกเว้น มีน้ำหนักที่กำหนดระหว่าง 1 ถึง 256 กลไกการจัดลำดับความสำคัญของสตรีมยังคงเป็นหัวข้อของการโต้วาที อย่างไรก็ตาม เมื่อการรวมลำดับความสำคัญของสตรีมเข้ากับความสามารถ HTTP/2 ในการประมวลผลสตรีมข้อมูลหลายรายการในการเชื่อมต่อ TCP เดียว อาจนำไปสู่การมาถึงของคำขอเซิร์ฟเวอร์ที่มีลำดับความสำคัญต่างกันได้
ประโยชน์:
- ลดผลกระทบด้านลบของปัญหาเวลาแฝงของเครือข่าย
- ปรับปรุงประสบการณ์ของผู้ใช้และความเร็วในการโหลดหน้าเว็บ
- เพิ่มประสิทธิภาพในการสื่อสารข้อมูลระหว่างเซิร์ฟเวอร์และไคลเอ็นต์
- การใช้ทรัพยากรเครือข่ายที่มีประสิทธิภาพสูง
- ลดเวลาในการส่งคำขอเนื้อหาหลัก
การบีบอัดส่วนหัวแบบมีสถานะ
เมื่อผู้ใช้เรียกดูเว็บไซต์ที่มีสื่อหลากหลาย โดยใช้ HTTP ไคลเอ็นต์จะพุชเฟรมส่วนหัวที่เหมือนกันหลายเฟรม ในกรณีนี้เนื่องจากคำขอของไคลเอ็นต์แต่ละรายการต้องมีข้อมูลมากที่สุดเท่าที่เซิร์ฟเวอร์ต้องการเพื่อดำเนินการตามที่ร้องขอ กระบวนการนี้นำไปสู่เวลาแฝงและการใช้ทรัพยากรที่ไม่จำเป็น
HTTP/2 รวมถึงความสามารถในการบีบอัดเฟรมส่วนหัวที่ซ้ำซ้อนจำนวนมาก อิงตามข้อกำหนดของ HPACK เป็นวิธีที่ปลอดภัยและเรียบง่ายในการบีบอัดส่วนหัว . ไคลเอนต์และเซิร์ฟเวอร์รักษารายการส่วนหัวที่ใช้ในคำขอไคลเอนต์ - เซิร์ฟเวอร์ก่อนหน้า การดำเนินการนี้ช่วยแก้ปัญหาเกี่ยวกับเฟรมส่วนหัวที่ซ้ำซ้อนได้โดยตรง
ประโยชน์:
- เข้ารหัสส่วนหัวที่ใช้กันทั่วไปและส่วนหัวขนาดใหญ่ ที่ช่วยลดความจำเป็นในการส่งเฟรมส่วนหัวทั้งหมด ขนาดแต่ละสตรีมแต่ละสตรีมจะหดตัวลงอย่างมาก
- การป้องกันการโจมตีด้านความปลอดภัย เช่น CRIME ที่สำรวจสตรีมข้อมูลด้วยส่วนหัวที่บีบอัด
- การใช้ประโยชน์จากกลไกมัลติเพล็กซ์อย่างมีประสิทธิภาพ
- จัดลำดับความสำคัญของสตรีมอย่างมีประสิทธิภาพ
- ลดค่าใช้จ่ายทรัพยากร
ประโยชน์ของ HTTP/2 ในโลกแห่งความเป็นจริง
HTTP/2 มุ่งเน้นที่การเพิ่มศักยภาพของเทคโนโลยีให้สูงสุด เพื่อตอบสนองความต้องการและความคาดหวังในอนาคต นี่คือประโยชน์ของการใช้ HTTP/2 ในโลกแห่งความเป็นจริง
ประสิทธิภาพของเว็บและประสิทธิภาพของเว็บบนมือถือ – HTTP/2 มีความสามารถในการส่งและรับข้อมูลเพิ่มเติมในวงจรการสื่อสารไคลเอนต์ - เซิร์ฟเวอร์เดียว วิธีนี้ใช้ได้ผลดีในการลดเวลาในการตอบสนองในการเข้าถึงบริการอินเทอร์เน็ตบนเครือข่ายข้อมูลมือถือและเครือข่ายที่มีแบนด์วิดท์ที่จำกัดต่อผู้ใช้
อินเทอร์เน็ตความเร็วสูงราคาถูก – HTTP/2 เพิ่มประสิทธิภาพในการสื่อสารข้อมูล ที่ช่วยให้ผู้ให้บริการอินเทอร์เน็ตลดค่าใช้จ่ายโดยรวมในขณะที่ยังคงมาตรฐานอินเทอร์เน็ตความเร็วสูงไว้ได้
ความปลอดภัย – HTTP/2 ไม่เสี่ยงต่อภัยคุกคามที่กำหนดเป้าหมายโปรโตคอลเลเยอร์แอปพลิเคชันแบบข้อความ นอกจากนี้ยังใช้แนวทาง “ความปลอดภัยโดยคลุมเครือ” เพื่อป้องกันการรับส่งข้อมูลที่มีความละเอียดอ่อนระหว่างไคลเอนต์และเซิร์ฟเวอร์
การเข้าถึงที่กว้างขวาง – ข้อดี HTTP/2 ลดผลลัพธ์ทางอินเทอร์เน็ตสำหรับผู้ให้บริการ ซึ่งจะนำไปสู่ความครอบคลุมทางอินเทอร์เน็ตในวงกว้างในระดับโลก
ประสบการณ์เว็บที่มีสื่อสมบูรณ์ – คุณลักษณะและข้อดีของเทคโนโลยีที่ HTTP/2 นำมาใช้ในเวิลด์ไวด์เว็บทำให้มีโครงสร้างพื้นฐานที่สามารถนำเสนอเนื้อหาที่มีสื่อหลากหลายด้วยความเร็วในการโหลดหน้าเว็บที่เร็วขึ้น
สรุป
HTTP/2 เป็นโปรโตคอลที่ค่อนข้างใหม่ แต่การรองรับนั้นเพิ่มขึ้นอย่างต่อเนื่อง ทุกวันนี้ อินเทอร์เน็ตเบราว์เซอร์ส่วนใหญ่รองรับ HTTP/2 (Microsoft Edge, Google Chrome, Safari, Firefox, Chrome สำหรับ Android) เว็บเซิร์ฟเวอร์จำนวนมากรวมถึงการสนับสนุนเนทีฟ HTTP/2 (เซิร์ฟเวอร์ Apache HTTP, Tomcat, NGINX) ไม่ต้องสงสัยเลยว่า HTTP/2 เป็นโปรโตคอล WWW แห่งอนาคต