บทนำสู่ HTTP / 2

บทนำ

HTTP / 2 เป็นการแก้ไขล่าสุดของ โปรโตคอลการโอน HyperText หรือ HTTP [01]ซึ่งเบราว์เซอร์ใช้เพื่อสื่อสารกับเว็บเซิร์ฟเวอร์ มาจาก SPDY รุ่นเก่า [02] โพรโทคอล HTTP / 2 เป็นเวอร์ชันใหม่ของ HTTP รุ่นแรกตั้งแต่มาตรฐาน HTTP / 1.1 ใน RFC 2068 ในปี 1997

ได้รับการพัฒนาโดยคณะทำงาน HTTP ของ Internet Engineering Task Force (IETF) httpbis (โดยที่“ ทวิ” หมายถึง“ สองครั้ง”) และเผยแพร่เป็น RFC 7540 [03] ในเดือนพฤษภาคม 2015

การใช้ HTTP / 2

HTTP / 2 ได้ถูกนำมาใช้มากขึ้นโดยเว็บไซต์ที่ใช้งานนับตั้งแต่มีการเผยแพร่อย่างเป็นทางการ บริการสำรวจออนไลน์ W3Techs [04] โปรดทราบว่าตั้งแต่เดือนกันยายน 2017 ถึงกันยายน 2018 การสนับสนุน HTTP / 2 เพิ่มขึ้นจาก 16% เป็น 30% ของเว็บไซต์ที่ได้รับการตรวจสอบทั้งหมด

นอกจากนี้เบราว์เซอร์หลัก (เช่น Chrome, Firefox, Edge และอื่น ๆ ) ให้การสนับสนุน HTTP / 2 อย่างสมบูรณ์แล้ว [05]. (บางคนถึงกับใช้งานการทดลองก่อนที่จะยอมรับ HTTP / 2 เป็นมาตรฐาน)

การยอมรับอย่างกว้างขวางนี้หมายความว่า HTTP / 2 มีศักยภาพที่จะเป็นโปรโตคอลการสื่อสารโดยพฤตินัยของเว็บ

แรงจูงใจเบื้องหลัง HTTP / 2

Httpbis'กฎบัตร [06] กล่าวถึงส่วนประกอบหลายอย่างของ HTTP / 1.1 ที่สามารถปรับปรุงเป็นแรงจูงใจสำหรับ HTTP / 2 อย่างไรก็ตามเป้าหมายหลักของกลุ่มคือการลดเวลาในการตอบสนองที่ผู้ใช้ปลายทางรับรู้

เพื่อทำสิ่งนี้, httpbis พิจารณาการลดค่าใช้จ่ายแบนด์วิดท์ผ่านการบีบอัดส่วนหัวและเทคนิคการดึงข้อมูลล่วงหน้าอย่างก้าวร้าว (เช่นการพุชเซิร์ฟเวอร์) ในขณะเดียวกันก็พยายามแก้ไขปัญหาประสิทธิภาพที่ทราบอย่างเป็นระบบเช่นปัญหาการเชื่อมต่อและปัญหาการบล็อก Head-of-Line (HoL) [07].

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

เพื่อรักษาความเข้ากันได้นี้คณะทำงานได้พัฒนากลไกการเจรจาโปรโตคอลซึ่งจะช่วยให้ลูกค้าและเซิร์ฟเวอร์เลือกระหว่าง HTTP / 1.1, HTTP / 2 หรือแม้แต่โปรโตคอลที่ไม่ใช่ HTTP

มีอะไรใหม่ใน HTTP / 2?

HTTP / 2 ยังคงใช้โครงร่าง URI และหมายเลขพอร์ตที่ใช้ใน HTTP / 1.1 (เช่นพอร์ต 80 สำหรับ http URI และพอร์ต 443 สำหรับ https URI) แต่มีหลายสิ่งที่แตกต่างกันภายใต้ประทุน

การเปลี่ยนแปลงพื้นฐานที่สุดคือการแนะนำของ เฟรม เป็นหน่วยข้อมูลพื้นฐานของ HTTP / 2

HTTP / 1.1 ใช้แบบดั้งเดิม แพ็คเก็ต เพื่อแสดงข้อมูลเครือข่าย ลูกค้าสร้างแพ็กเก็ตคำขอด้วยกริยาวิธี (เช่น GET or POST) ต่อท้ายรายการส่วนหัวที่อธิบายการเชื่อมต่อและเนื้อหาที่มีข้อมูลแอปพลิเคชัน

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

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

ดูเหมือนว่าจะเป็นการเปลี่ยนแปลงเล็กน้อย แต่ก็มีนัยยะสำคัญ

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

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

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

สตรีมและมัลติเพล็กซ์

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

จุดปลายสามารถแทรกเฟรมจากสตรีมต่างๆผ่านการเชื่อมต่อ HTTP / 2 เดียวกันช่วยให้การเชื่อมต่อเครือข่ายเดียวรองรับหลายสตรีมที่เปิดพร้อมกันกระบวนการนี้เรียกว่า มัลติ [08].

การใช้การเชื่อมต่อเดียวกันซ้ำช่วยลดปัญหาเช่นความแออัดในการเชื่อมต่อและปัญหาของ HoL ที่กล่าวถึงก่อนหน้านี้และมอบประสิทธิภาพที่ดีขึ้นและประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้นกว่า HTTP รุ่นก่อนหน้า

สตรีมการพึ่งพาและการจัดลำดับความสำคัญ

การจัดการสตรีมพร้อมกันหลายสตรีมหมายความว่าสตรีมบางรายการจะถูกประมวลผลก่อนสตรีมอื่น HTTP / 2 ช่วยให้นักพัฒนา (หรือผู้ดูแลระบบ) ปรับพฤติกรรมนี้ด้วยคุณสมบัติที่เรียกว่า กระแสการพึ่งพา.

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

HTTP / 2 ยังรองรับ การจัดลำดับความสำคัญกระแส. นั่นคือแต่ละสตรีมสามารถกำหนดลำดับความสำคัญเพื่อแนะนำว่าจุดสิ้นสุดควรจัดสรรทรัพยากรอย่างเร่งด่วนเพื่อจัดการกับเฟรมของสตรีมอย่างไร

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

กดเซิร์ฟเวอร์

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

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

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

ความปลอดภัย HTTP / 2

หากคุณอ่านมาถึงจุดนี้เป็นที่ชัดเจนว่านักพัฒนาของ HTTP / 2 พยายามอย่างมากในการปรับปรุงประสิทธิภาพ อย่างไรก็ตามควรสังเกตว่า HTTP / 2 สามารถช่วยปรับปรุงความปลอดภัยโดยรวมของผู้ใช้เบราว์เซอร์ได้เช่นกัน

โดยเฉพาะอย่างยิ่ง HTTP / 2 ถูกกำหนดไว้สำหรับ HTTP URIs (เช่นไม่มีการเข้ารหัส) และ HTTPS URIs (มากกว่า TLS ช่องทางเข้ารหัส) แม้ว่ามาตรฐานนั้นไม่จำเป็นต้องใช้การเข้ารหัส แต่การใช้งานเบราว์เซอร์ที่สำคัญทั้งหมด (เช่น Firefox [09], Chrome, Safari, Opera, IE, Edge) ได้ตัดสินใจว่าพวกเขาจะ เพียง สนับสนุน HTTP / 2 มากกว่า TLS.

ในความเป็นจริงเบราว์เซอร์แยกแยะระหว่างข้อความ HTTP / 2 และ HTTP / 2 ที่ชัดเจนผ่านการเข้ารหัส TLS เป็นสองโปรโตคอลที่แตกต่างกัน HTTP / 2 ที่เข้ารหัสถูกเรียก h2 และข้อความที่ชัดเจน h2c. จากการเขียนนี้เบราว์เซอร์หลักไม่สนับสนุน h2c ซึ่งหมายความว่า TLS การเข้ารหัสเป็นสิ่งจำเป็นสำหรับเว็บไซต์เพื่อใช้ประโยชน์จากข้อได้เปรียบอื่น ๆ ของ HTTP / 2 ดังนั้นเมื่อ HTTP / 2 กลายเป็นโปรโตคอลเครือข่ายเว็บเริ่มต้นเจ้าของเว็บไซต์เดิมที่ยังไม่ได้อัปเกรดเป็น SSL /TLSจะได้รับแรงบันดาลใจอย่างมากที่จะทำเช่นนั้นในที่สุด

สรุป

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

รับใบรับรองวันนี้และเข้าร่วมกับเราในอนาคต

อ้างอิง

  1. โปรโตคอล HTTP
  2. โปรโตคอล SPDY
  3. ข้อมูลจำเพาะ HTTP / 2
  4. แบบสำรวจการยอมรับ W3Techs HTTP / 2
  5. การใช้ HTTP / 2 ในเบราว์เซอร์
  6. httpbis กฎบัตร
  7. การปิดกั้น HOL
  8. Multiplexing
  9. Firefox บน HTTP / 2

สมัครสมาชิกจดหมายข่าวของ SSL.com

อย่าพลาดบทความและการปรับปรุงใหม่จาก SSL.com

รับทราบข้อมูลและปลอดภัย

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

เราชอบความคิดเห็นของคุณ

ทำแบบสำรวจของเราและแจ้งให้เราทราบความคิดเห็นของคุณเกี่ยวกับการซื้อครั้งล่าสุดของคุณ