HTTP / 2 คืออะไรและทำอะไร



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

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





HTTP / 2 คืออะไร?

HTTP / 2 คือ Hypertext เวอร์ชันใหม่ล่าสุด Transport Protocol (HTTP) - โปรโตคอลพื้นฐานที่ใช้โดย World Wide Web . ได้รับการอนุมัติครั้งแรกในเดือนกุมภาพันธ์ 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

เฟรมรูปแบบข้อความแบบสองทิศทางที่ส่งผ่านโปรโตคอล HTTP / 2 ระหว่างเซิร์ฟเวอร์และไคลเอนต์หนึ่งเรียกว่า 'สตรีม' HTTP สามารถส่ง 'สตรีม' เหล่านี้ได้ครั้งละหนึ่งรายการเท่านั้น หลังจากส่งสตรีมแล้วจะมีการหน่วงเวลาระหว่างการส่งสตรีมถัดไป

HTTP / 2 สร้างเลเยอร์เฟรมไบนารีใหม่ที่ช่วยแก้ปัญหาโดยตรงด้วยการส่ง 'สตรีม' ทีละรายการ ช่วยให้ไคลเอนต์และเซิร์ฟเวอร์แยกส่วนเพย์โหลด HTTP / 2 ออกเป็นลำดับเฟรมแบบสอดแทรกเล็ก ๆ อิสระและจัดการได้ง่าย ข้อมูลทั้งหมดนี้ประกอบขึ้นใหม่เมื่อได้รับจากอีกด้านหนึ่ง โปรโตคอลนี้ช่วยให้สามารถแลกเปลี่ยนลำดับสองทิศทางแบบเปิดพร้อมกันและอิสระโดยไม่มีเวลาแฝงระหว่างสตรีมที่ต่อเนื่องกัน

สิทธิประโยชน์:

  • คำขอและการตอบสนองแบบมัลติเพล็กซ์แบบขนานจะไม่ปิดกั้นซึ่งกันและกัน
  • การเชื่อมต่อ TCP เดียวสามารถรับประกันการใช้ทรัพยากรเครือข่ายอย่างมีประสิทธิภาพแม้ว่าจะส่งข้อมูลหลายสตรีม
  • ประสิทธิภาพของเว็บที่เร็วขึ้นเวลาในการตอบสนองลดลงและผลลัพธ์ของเครื่องมือค้นหาที่ดีขึ้น
  • CapEx และ OpEx ที่ลดลงในการรันทรัพยากรเครือข่ายและไอที

HTTP / 2 Server Push และ Cache Push

นี้ เป็นความสามารถที่อนุญาตให้เซิร์ฟเวอร์ส่งข้อมูลเพิ่มเติมที่สามารถแคชไปยังไคลเอนต์ได้ . ไม่มีการร้องขอข้อมูลดังกล่าว แต่คาดว่าจะเป็นคำขอในอนาคต หากไคลเอ็นต์ร้องขอทรัพยากร 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 เดียวอาจทำให้เกิดการร้องขอเซิร์ฟเวอร์ที่มีลำดับความสำคัญต่างกันพร้อมกัน

สิทธิประโยชน์:

  • ลดผลกระทบเชิงลบของความกังวลเกี่ยวกับเวลาแฝงของเครือข่าย
  • ปรับปรุงประสบการณ์ผู้ใช้และความเร็วในการโหลดเพจ
  • การเพิ่มประสิทธิภาพในการสื่อสารข้อมูลระหว่างเซิร์ฟเวอร์และไคลเอนต์
  • การใช้ทรัพยากรเครือข่ายที่มีประสิทธิภาพสูง
  • ลดเวลาในการจัดส่งสำหรับคำขอเนื้อหาหลัก

การบีบอัดส่วนหัวแบบ Stateful

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

HTTP / 2 มีความสามารถในการบีบอัดเฟรมส่วนหัวที่ซ้ำซ้อนจำนวนมาก ใช้ข้อมูลจำเพาะของ HPACK เป็นวิธีการบีบอัดส่วนหัวที่ปลอดภัยและเรียบง่าย . ไคลเอนต์และเซิร์ฟเวอร์เก็บรักษารายการส่วนหัวที่ใช้ในคำขอไคลเอ็นต์เซิร์ฟเวอร์ก่อนหน้านี้ สิ่งนี้ช่วยแก้ปัญหาโดยตรงเกี่ยวกับกรอบส่วนหัวที่ซ้ำซ้อน

สิทธิประโยชน์:

  • เข้ารหัสส่วนหัวที่ใช้กันทั่วไปและส่วนหัวขนาดใหญ่ ซึ่งทำให้ไม่จำเป็นต้องส่งเฟรมส่วนหัวทั้งหมด ขนาดแต่ละสตรีมหดลงอย่างมาก
  • การป้องกันการโจมตีด้านความปลอดภัยเช่น CRIME สำรวจสตรีมข้อมูลด้วยส่วนหัวที่บีบอัด
  • การใช้กลไกมัลติเพล็กซ์อย่างมีประสิทธิภาพ
  • การจัดลำดับความสำคัญของสตรีมที่มีประสิทธิภาพ
  • ค่าใช้จ่ายด้านทรัพยากรลดลง

ประโยชน์ในโลกแห่งความเป็นจริงของ 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 สำหรับ Android) เว็บเซิร์ฟเวอร์จำนวนมากมีการรองรับ HTTP / 2 เนทีฟ (Apache HTTP Server, Tomcat, NGINX) ไม่ต้องสงสัยเลยว่า HTTP / 2 คือโปรโตคอล WWW แห่งอนาคต

อ่าน 5 นาที