HTTP/2 และ HTTP/3 ผ่านพร็อกซี: อะไรไปถึงเซิร์ฟเวอร์จริงๆ และทำไม QUIC ถึงไม่ผ่าน
ลองนึกภาพสถานการณ์ที่ทำให้แม้แต่วิศวกรมากประสบการณ์ยังถึงกับงง คุณเปิดเว็บไซต์โดยตรงในเบราว์เซอร์ และเห็นในแผงนักพัฒนา h2 อย่างภาคภูมิใจ - การเชื่อมต่อเป็น HTTP/2 จากนั้นคุณส่งคำขอเดียวกันผ่านพร็อกซี แล้วพบกับความประหลาดใจว่าเซิร์ฟเวอร์ตอบกลับด้วย HTTP/1.1 แบบเก่าที่แสนจะคุ้นเคย โปรโตคอลเวอร์ชันสองหายไปไหน? ทำไมพร็อกซีถึงราวกับกรอเวลากลับไปในอดีต? และที่ชวนให้ติดตามมากที่สุด: ทำไม HTTP/3 ที่ทำงานบน QUIC ถึงไม่ยอมผ่านพร็อกซีทั่วไป ราวกับชนกำแพงที่มองไม่เห็น?
บทความนี้คือการเจาะลึกเลเยอร์การขนส่งอย่างละเอียดเมื่อทำงานผ่านพร็อกซี เราจะไม่พูดถึงเรื่องลายนิ้วมือของการเชื่อมต่อหรือการตรวจจับอัตโนมัติ โฟกัสของเราคือกลไกบริสุทธิ์: อะไรที่ไปถึงเซิร์ฟเวอร์จริงๆ การเจรจาเวอร์ชันโปรโตคอลเกิดขึ้นที่ไหน ทำไม UDP transport ถึงเข้ากันไม่ได้กับพร็อกซีคลาสสิก และจะตัดสินใจเลือกเวอร์ชันอย่างมีสติได้อย่างไร เมื่ออ่านจบ คุณจะเข้าใจหัวข้อนี้ในระดับที่สามารถดีบักสถานการณ์เครือข่ายที่ซับซ้อนที่สุดได้