เว็บถูกเชื่อมเข้าด้วยกันโดยข้อตกลงที่ชัดเจน ฟิลด์ Content-Length จะต้องมีความหมายเหมือนกันในทุกจุดที่ผ่านไป แคชจะต้องไม่ใช้ซ้ำการตอบสนองที่ต้องการการตรวจสอบ ฟิลด์ส่วน HTTP/3 ที่ผิดรูปจะต้องล้มเหลวในขอบเขตที่ถูกต้อง วิธีที่ปลอดภัยจะต้องยังคงปลอดภัยหลังจากผ่านพร็อกซี่ย้อนกลับ
Webship 1.3.1 ถูกสร้างขึ้นโดยมีหลักการเพียงข้อเดียว: ความเร็วมีค่าเฉพาะเมื่อไบต์ยังคงความหมายของมัน
นั่นคือเหตุผลที่เราบรรยาย Webship ว่าเป็นเว็บเซิร์ฟเวอร์ทั่วไปที่เข้ากันได้กับ RFC มากที่สุดในโลก นี่คือข้อกล่าวทางวิศวกรรมที่มีขอบเขตชัดเจน ไม่ใช่ข้อกล่าวที่ว่าทุกฟีเจอร์ตัวเลือกใน RFC ทุกฉบับมีอยู่ แผนที่ด้านล่างระบุชื่อ RFC 52 ฉบับที่มีผลต่อพฤติกรรมเซิร์ฟเวอร์ที่ใช้งานจริงของ Webship หรือรากฐานโปรโตคอลที่เป็นของมัน มาตรฐานปัจจุบันจะอยู่ก่อน ส่วนเอกสารที่ถูกแทนที่จะระบุเป็นสายการเข้ากันได้ ข้อกำหนดร่างจะไม่ถูกเปลี่ยนชื่อเป็น RFC
ความเข้ากันได้คือพฤติกรรม ไม่ใช่เครื่องหมาย
Webship ใช้มาตรฐานในสถานที่ที่เซิร์ฟเวอร์การผลิตมักจะเกิดความกำกวมบ่อยที่สุด:
- การจัดกรอบ HTTP/1.1 ปฏิเสธความยาวที่ขัดแย้ง รหัสการถ่ายโอนที่ไม่ถูกต้อง เป้าหมายคำขอที่ใหญ่เกินไป ชิ้นส่วนที่บิดเบือน และรูปแบบการลักลอบคำขอ
- HTTP/2 และ HTTP/3 ปฏิเสธฟิลด์การเชื่อมต่อที่ถูกห้าม ตรวจสอบความถูกต้องของ pseudo-fields จำกัดส่วนฟิลด์ที่บีบอัด และแยกความผิดพลาดของสตรีมออกจากความผิดพลาดของการเชื่อมต่อ
- ไฟล์แบบคงที่รักษาความหมายของ HEAD ตัวตรวจสอบ เงื่อนไขลำดับช่วงไบต์ การเปลี่ยนเส้นทาง และประเภทของเนื้อหา
- พร็อกซีแบบย้อนกลับรักษาการจัดกรอบ การยกเลิก ท้ายข้อความ การอัปเกรด การลองใหม่อย่างปลอดภัย และการส่งต่อเอกลักษณ์ ในขณะที่ลบฟิลด์แบบ hop-by-hop ออก
- แคชคำนวณอายุ ความสดใหม่ การตรวจสอบใหม่ Vary การทำให้ไม่ถูกต้อง และกฎการใช้งานแบบเก่า แทนที่จะมองว่าการแคชเป็นเพียงทางลัดแบบกุญแจ-ค่า
- TLS, QUIC, ACME, ข้อมูลเริ่มต้น และ WebTransport ใช้สถานะที่จำกัดและนโยบายความล้มเหลวที่ชัดเจน
กฎเดียวกันนี้ใช้กับเส้นทางด่วน Webship ไม่ได้กำหนดเส้นทางที่ “ถูกต้อง” หนึ่งเส้นทางและเส้นทางมาตรฐานที่แตกต่างออกไป
การทำงานเชิงความหมายของ HTTP, การจัดกรอบข้อมูล, การเก็บแคช, และการใช้พร็อกซี่
- RFC 3986 — ตัวระบุทรัพยากรแบบสากล (URI): ไวยากรณ์ทั่วไป. Webship ทำการปรับมาตรฐานการอ้างอิงที่อยู่ Location และ Content-Location แบบสัมพัทธ์ รวมถึงส่วนที่เป็น dot segments ก่อนตัดสินใจยกเลิกแคช.
- RFC 6455 — โปรโตคอล WebSocket. การอัปเกรดแบบรีเวิร์สพร็อกซีจะตรวจสอบคีย์ WebSocket ค่าการยอมรับ ซับโพรโทคอล ส่วนขยาย และการเปลี่ยนผ่านท่อ.
- RFC 6585 — รหัสสถานะ HTTP เพิ่มเติม. ฟิลด์คำขอที่มีขนาดเกินกำหนดจะใช้รหัสตอบสนอง 431 ที่กำหนดไว้ในกรณีที่ยังสามารถตอบสนอง HTTP ได้
- RFC 6797 — HTTP Strict Transport Security. Strict-Transport-Security จะถูกส่งออกเฉพาะผ่านการขนส่งที่ปลอดภัยและจะไม่รั่วไหลจากรายการแคชที่เป็นกลางต่อการขนส่งไปยัง HTTP แบบข้อความชัดเจน
- RFC 7235 — การตรวจสอบสิทธิ์ HTTP/1.1. โทเค็นของแผนการตรวจสอบสิทธิ์จะถูกวิเคราะห์แบบไม่คำนึงถึงตัวพิมพ์ ซึ่งรวมถึงพื้นผิวการควบคุม MCP ที่ได้รับการป้องกันด้วย ขณะนี้ความหมายทั่วไปของ HTTP อยู่ใน RFC 9110
- RFC 7239 — ส่วนขยาย HTTP แบบ Forwarded. ผู้ปฏิบัติการสามารถเลือกใช้ฟิลด์ Forwarded ตามมาตรฐาน, ฟิลด์ X-Forwarded แบบเก่า, ทั้งสองแบบ หรือไม่ใช้ก็ได้; ฟิลด์ระบุตัวตนที่ไม่เชื่อถือได้จากการรับเข้าจะถูกลบออกก่อน
- RFC 7540 — HTTP/2. สิ่งนี้ถูกเก็บไว้เพื่อเป็นสายความเข้ากันได้กับ HTTP/2; สัญญา HTTP/2 ที่ใช้งานอยู่คือภาคต่อของมัน, RFC 9113.
- RFC 7541 — HPACK: การบีบอัด Header สำหรับ HTTP/2. HTTP/2 stack ของ Webship ควบคุมสถานะตัวถอดรหัสและตารางตัวเข้ารหัสในขณะที่ยังคงรูปแบบสาย HPACK และการเข้ารหัส Huffman ไว้
- RFC 7838 — บริการทางเลือกของ HTTP. Alt-Svc โฆษณาจุดเชื่อมต่อ HTTP/3 โดยไม่เปลี่ยนต้นกำเนิดที่แสดงโดย URL
- RFC 8441 — การบูตสแตรป WebSockets ด้วย HTTP/2. Webship รองรับฐานรากการเจรจาขยาย-CONNECT สำหรับ downstream ซึ่งไม่ได้แสร้งทำว่า upstream HTTP/1.1 จะใช้งาน HTTP/2 extended CONNECT; การรวมกันของ upstream ที่ไม่รองรับจะล้มเหลวอย่างชัดเจน
- RFC 8470 — การใช้ Early Data ใน HTTP. คำขอเริ่มต้นที่ Webship จะไม่ประมวลผล จะได้รับ 425 Too Early แทนการถูกจัดการโดยสมมติการเล่นซ้ำที่ไม่ปลอดภัย
- RFC 8941 — ค่าฟิลด์โครงสร้างสำหรับ HTTP. ค่าความสำคัญของ HTTP ใช้การวิเคราะห์พจนานุกรมฟิลด์โครงสร้าง; ฟิลด์เสริมที่ไม่ถูกต้องจะถูกละเว้นทั้งหมด
- RFC 9110 — ความหมายของ HTTP. เมธอด รหัสสถานะ ฟิลด์ ตัวตรวจสอบ เงื่อนไขเบื้องต้น การเปลี่ยนเส้นทาง ข้อมูลเมตาของเนื้อหา HEAD, CONNECT, OPTIONS และความหมายของช่วงแชร์สัญญาปัจจุบันเดียวกันข้ามเวอร์ชันโปรโตคอล
- RFC 9111 — การแคช HTTP. Webship ใช้อายุที่แก้ไขแล้ว ความสดชัดเจนโดยชัดแจ้ง Vary, only-if-cached, must-revalidate, proxy-revalidate, การใช้ข้อมูลเก่าอย่างปลอดภัย และการทำให้ URI ที่มีผลและที่เกี่ยวข้องไม่ถูกต้อง
- RFC 9112 — HTTP/1.1. กฎของ request-line, field, body-length, transfer-coding, chunk, trailer, persistence, และ close-delimited จะถูกบังคับใช้ก่อนการส่งต่อไปยังแอปพลิเคชัน
- RFC 9113 — HTTP/2. ฟิลด์จำลอง order, authority, ฟิลด์การเชื่อมต่อที่ห้าม, ข้อจำกัดของ TE, วงจรชีวิตของสตรีม, การควบคุมการไหล, GOAWAY, และขอบเขตข้อผิดพลาด ถูกจัดการโดยเส้นทาง H2 ที่เป็นเจ้าของโดย Webship.
- RFC 9114 — HTTP/3. Webship เป็นเจ้าของเส้นทางข้อผิดพลาด request, control-stream, SETTINGS, critical-stream, cancellation และ stream-versus-connection ที่ใช้โดยเซิร์ฟเวอร์ HTTP/3 ของมัน
- RFC 9204 — QPACK: การบีบอัดฟิลด์สำหรับ HTTP/3. ความจุของตารางไดนามิกถูกจำกัดโดยขีดจำกัดที่ประกาศไว้ สตรีมคำสั่งยังคงสามารถวิเคราะห์ได้แม้ที่ความจุศูนย์ และสถานะที่ไม่ถูกต้องจะกลายเป็นข้อผิดพลาด QPACK ที่จำเป็น
- RFC 9218 — โครงสร้างการจัดลำดับความสำคัญที่สามารถขยายได้สำหรับ HTTP. ความเร่งด่วนและการส่งมอบแบบเพิ่มขึ้นเป็นแนวทางในการจัดตาราง HTTP/3 ในขณะที่พารามิเตอร์ลำดับความสำคัญที่ไม่ทราบยังคงสามารถขยายได้
- RFC 9220 — การเริ่มต้นใช้งาน WebSockets ด้วย HTTP/3. Webship ใช้พื้นฐาน SETTINGS ของ HTTP/3 extended-CONNECT ที่โปรโตคอลท่อลอดสมัยใหม่ใช้; แต่ไม่ได้หมายความว่าทุกโปรโตคอล CONNECT ที่เป็นไปได้จะได้รับการยอมรับ
- RFC 9297 — HTTP Datagrams and the Capsule Protocol. เซสชัน WebTransport ใช้การถอดรหัสแคปซูลแบบจำกัดและการเชื่อมโยง HTTP Datagram โดยแคปซูลที่ไม่ทราบจะถูกจัดการเป็นจุดขยายแทนที่จะเป็นความล้มเหลวของตัวแยกวิเคราะห์
- RFC 9421 — ลายเซ็นข้อความ HTTP. การระบุที่มาของการตอบสนอง Ed25519 เป็นทางเลือกสามารถครอบคลุมการเปิดตัว Webship และตัวตนการกำหนดค่าได้โดยไม่ต้องแทนที่ TLS หรือการยืนยันตัวตนของแอปพลิเคชัน
- RFC 10008 — วิธีการ HTTP QUERY. Webship ถือว่า QUERY ปลอดภัยและทำซ้ำได้ รักษาตัวเนื้อหาของมันระหว่างการผ่านพร็อกซี รวมทั้งรวมข้อมูลเมตาเกี่ยวกับเนื้อหาและการแทนค่าในเอกลักษณ์ของแคช ห้ามใช้การประเมินความสดด้วยวิธีเชิงอัตวิสัย รองรับพฤติกรรมตามเงื่อนไขและช่วงข้อมูล และไม่เคยทำให้แคชหมดอายุเพียงเพราะใช้ QUERY
การขนส่งและการควบคุมความแออัดของ QUIC
- RFC 3465 — การควบคุมความแออัดของ TCP ด้วยการนับไบต์อย่างเหมาะสม. ตรรกะการนับไบต์อย่างเหมาะสมเป็นส่วนหนึ่งของตระกูลการควบคุมความแออัด NewReno ที่ใช้โดยการใช้งาน QUIC ของ Webship.
- RFC 4303 — IP Encapsulating Security Payload. Webship ไม่ได้ใช้งาน IPsec ESP; ตัวลดการทำซ้ำของแพ็กเก็ต QUIC ของมันใช้เทคนิคป้องกันการเล่นซ้ำแบบสไลด์วินโดว์ตาม RFC เพื่อวัตถุประสงค์ในการสืบทอดการใช้งานเท่านั้น
- RFC 5681 — การควบคุมความหนาแน่นของ TCP. เกณฑ์การสูญหายและการสับเปลี่ยนสืบทอดข้อจำกัดของการควบคุมความหนาแน่นที่กำหนดไว้อย่างที่ QUIC สร้างขึ้นบนแนวปฏิบัติของ TCP
- RFC 6298 — การคำนวณตัวจับเวลารีทรานสมิสชันของ TCP. การคำนวณเวลารอบเดินทางเฉลี่ยแบบเรียบและความแปรปรวนมีส่วนช่วยต่อแบบจำลองการกู้คืนของ QUIC.
- RFC 8312 — CUBIC สำหรับเครือข่ายระยะไกลที่รวดเร็ว. นี่คือข้อกำหนด CUBIC รุ่นก่อนที่ยังคงเก็บไว้ในฐานะสายพันธุ์ของอัลกอริทึม; RFC 9438 เป็นมาตรฐานปัจจุบัน.
- RFC 8899 — การค้นหา MTU ของชั้นการแพ็กเก็ตสำหรับการขนส่งแบบ Datagram. DPLPMTUD ที่ปรับได้ค้นหาขนาด datagram ของ QUIC ที่ใช้งานได้โดยไม่ต้องพึ่งพาสัญญาณชั้นเครือข่ายที่เปราะบาง
- RFC 8999 — คุณสมบัติที่ไม่ขึ้นกับเวอร์ชันของ QUIC. ส่วนหัวยาว, รหัสการเชื่อมต่อ, การเจรจาต่อรองเวอร์ชัน และการแยกวิเคราะห์ที่คงที่ ยังคงปลอดภัยก่อนที่ตัวถอดรหัสเฉพาะเวอร์ชันจะทำงาน
- RFC 9000 — QUIC: การขนส่งแบบหลายช่องทางและปลอดภัยบน UDP. รหัสการเชื่อมต่อ, สตรีม, การควบคุมการไหล, การโยกย้าย, การยืนยันที่อยู่, การ Retry, การรีเซ็ตแบบไม่เก็บสถานะ, พารามิเตอร์การขนส่ง, และพฤติกรรมการปิด เป็นองค์ประกอบพื้นฐานของการขนส่ง HTTP/3 ของ Webship
- RFC 9001 — การใช้ TLS เพื่อความปลอดภัยของ QUIC. ความลับเริ่มต้น, การป้องกันแพ็กเก็ต, การป้องกันส่วนหัว, ความสมบูรณ์ของการ Retry, ระยะกุญแจ, และการรวม TLS เป็นไปตามกฎของ QUIC-TLS.
- RFC 9002 — การตรวจจับการสูญหายและการควบคุมความแออัดของ QUIC. พื้นที่หมายเลขแพ็กเก็ต, การยืนยัน, PTO, การตรวจจับการสูญหาย, การกู้คืน, และการคำนวณความแออัดเป็นปัจจัยที่ขับเคลื่อนความเชื่อถือได้ของการรับส่งข้อมูล
- RFC 9221 — ส่วนขยาย Datagram ที่ไม่เชื่อถือได้สำหรับ QUIC. เฟรม QUIC DATAGRAM ที่เจรจาตกลงแล้วจะส่งทราฟฟิก WebTransport ที่ไม่เชื่อถือได้โดยไม่เปลี่ยนมันให้กลายเป็นเนื้อหาแบบสตรีม
- RFC 9287 — การหล่อลื่นบิต QUIC. การหล่อลื่นบิต QUIC ลดการแข็งตัวของโพรโทคอลในขณะที่ยังคงรักษาความปลอดภัยในการเจรจาต่อรอง
- RFC 9308 — ความเหมาะสมของโปรโตคอลการขนส่ง QUIC. การตั้งค่าดีฟอลต์ในการปฏิบัติงาน เช่น เวลาไอดิลที่จำกัดและคำแนะนำในการปรับใช้ เป็นข้อมูลสำหรับนโยบายการขนส่งในกระบวนการผลิตของ Webship.
- RFC 9369 — QUIC เวอร์ชัน 2. ประเภทแพ็กเก็ตเวอร์ชัน 2, กุญแจเริ่มต้น, ความสมบูรณ์ของการ Retry, การอัปเดตกุญแจ และการเจรจาเวอร์ชัน ถูกนำไปใช้งานควบคู่กับ QUIC v1.
- RFC 9438 — CUBIC สำหรับเครือข่ายที่เร็วและมีระยะทางไกล. มาตรฐาน CUBIC ปัจจุบันควบคุมตัวควบคุมความแออัด CUBIC ของ Webship; BBR และ NewReno ยังคงสามารถเลือกใช้ได้เมื่อเวิร์กโหลดต้องการ
TLS ใบรับรอง และการจัดการใบรับรองอัตโนมัติ
- RFC 3339 — วันที่และเวลาในอินเทอร์เน็ต: เครื่องหมายเวลา. หน้าต่างการต่ออายุของ ACME ใช้เครื่องหมายเวลาอินเทอร์เน็ตที่สามารถทำงานร่วมกันได้
- RFC 4648 — การเข้ารหัสข้อมูล Base16, Base32 และ Base64. ค่าของ ACME JOSE และวัสดุการจับมือ WebSocket ใช้อักษร Base64 และ Base64url ที่จำเป็น รวมถึงกฎการเติมเต็ม
- RFC 5280 — โปรไฟล์ใบรับรองและ CRL ของ Internet X.509 PKI. การวิเคราะห์ใบรับรองและการสร้างใบรับรองท้าทายใช้ฟอร์ม DNS และ IP แบบไบนารีใน subjectAltName ที่ถูกต้อง
- RFC 5869 — ฟังก์ชันสกัดและขยายคีย์แบบ HMAC. การสร้างคีย์ HKDF-SHA-256 และ HKDF-SHA-384 รวมถึงขอบเขตเอาต์พุต ถือเป็นพื้นฐานของคีย์ TLS และ QUIC.
- RFC 6066 — TLS Extensions. SNI เลือก DNS identities ในขณะที่ที่อยู่ IP แบบตัวอักษรถูกยกเว้นอย่างถูกต้องจากรูปแบบ HostName ปกติ
- RFC 7301 — การเจรจาโปรโตคอลชั้นแอปพลิเคชัน TLS. ALPN เลือก HTTP/1.1, HTTP/2, HTTP/3 และโปรโตคอลท้าทาย ACME แยกต่างหากที่ขอบเขต TLS
- RFC 7638 — รอยพิมพ์นิ้วของ JSON Web Key. รอยพิมพ์นิ้วของคีย์บัญชี ACME ถูกสร้างขึ้นในรูปแบบ JWK แบบมาตรฐาน
- RFC 7807 — รายละเอียดปัญหาสำหรับ HTTP APIs. Webship ใช้รูปแบบเอกสารปัญหาที่เป็นข้อกำหนดโดยเซิร์ฟเวอร์ RFC 8555 ACME ข้อกำหนด Problem Details ที่ใหม่กว่าจะมาแทนที่สำหรับ API ทั่วไปใหม่ แต่การขึ้นต่อแบบมาตรฐานของ ACME ยังคงชัดเจน
- RFC 8446 — TLS 1.3. Webship ใช้ TLS 1.3 สำหรับ TLS สาธารณะ รวมถึงตั๋วเซสชัน การอัปเดตคีย์ การแจ้งเตือน นโยบายข้อมูลล่วงหน้า และการสกัดคีย์ QUIC
- RFC 8555 — สภาพแวดล้อมการจัดการใบรับรองอัตโนมัติ. การดำเนินการบัญชี, การสั่งซื้อ, การอนุญาต, การท้าทาย, การสรุปผล, การดาวน์โหลดใบรับรอง และกระบวนการต่ออายุถูกทำให้อัตโนมัติพร้อมการจัดการข้อมูลที่มีขอบเขต
- RFC 8737 — ความท้าทาย ACME TLS-ALPN-01. เส้นทาง TLS สำหรับการท้าทายเท่านั้นเจรจาเฉพาะ acme-tls/1 และให้บริการส่วนขยายใบรับรอง acmeIdentifier ที่สำคัญตามที่กำหนด.
- RFC 8738 — การขยายการตรวจสอบตัวระบุ IP ของ ACME. Webship รองรับการสั่งซื้อใบรับรอง IPv4 และ IPv6, SANs IP แบบไบนารี, และ SNI แบบที่อยู่ย้อนกลับสำหรับการตรวจสอบ IP TLS-ALPN-01.
- RFC 9525 — ตัวตนของบริการใน TLS. ชื่อ DNS และตัวตน IP จะถูกจับคู่ตามกฎการระบุตัวตนของบริการปัจจุบัน โดยไม่ใช้ทางลัด wildcard หรือ common-name สำหรับที่อยู่ IP
- RFC 9773 — ส่วนขยายข้อมูลการต่ออายุ ACME. หน้าต่างการต่ออายุสามารถมาจาก CA ซึ่งช่วยให้ Webship สามารถกระจายการต่ออายุได้อย่างปลอดภัย แทนที่จะใช้ตารางเวลาท้องถิ่นที่ตายตัวเพียงอย่างเดียว
WebTransport: ชัดเจนเกี่ยวกับสิ่งที่ถูกมาตรฐาน
WebTransport บน HTTP/3 ไม่ถูกนับเป็น RFC ที่ห้าสิบสาม ตาม Webship 1.3.1 การแมปแบบสายของมันยังคงเป็น draft-ietf-webtrans-http3-16 Webship นำร่างนั้นไปใช้งานบน HTTP/3 ที่มาตรฐาน ขยาย CONNECT, QUIC DATAGRAM, HTTP Datagram และชั้น Capsule ที่กล่าวถึงข้างต้น นอกจากนี้ยังใช้งานส่วนขยาย RESET_STREAM_AT ที่เจรจาตกลงกัน ซึ่งจำเป็นเพื่อรักษาคำนำตัวระบุเซสชันที่เชื่อถือได้เมื่อสตรีม WebTransport ถูกรีเซ็ต
ความแตกต่างนั้นสำคัญ ความเข้ากันได้กับมาตรฐานไม่ได้ดีขึ้นเพียงแค่เรียกเอกสารร่างว่า RFC แต่จะดีขึ้นโดยการติดตามเอกสารร่างอย่างชัดเจน แยกมันออกจากเส้นทาง HTTP ปกติ ต่อรองทุกส่วนขยาย กำหนดขอบเขตทรัพยากรของแต่ละเซสชัน และทดสอบพฤติกรรมการยกเลิกและความล้มเหลว
ทำไมความกว้างนี้ถึงสำคัญในการผลิต
ข้อบกพร่องด้านมาตรฐานมักไม่เกิดขึ้นเพียงลำพัง การจัดการ HSTS ที่ไม่ถูกต้องสามารถข้ามขอบเขตของแคชได้ คำสั่ง QPACK ที่มีรูปแบบไม่ถูกต้องสามารถยุติคำขอที่ไม่เกี่ยวข้องได้ สมมติฐานข้อมูลล่วงหน้าอย่างไม่ปลอดภัยสามารถเล่นซ้ำการดำเนินการได้ คีย์แคช QUERY ที่ละเว้นร่างคำขอสามารถส่งกลับผลลัพธ์ของคำถามอื่นได้ ตัวกลางที่ลบ trailer หรือจัดการการยกเลิกไม่ถูกต้องสามารถเปลี่ยนโปรโตคอลแอปพลิเคชันโดยไม่แจ้งได้
สถาปัตยกรรมของ Webship จัดการเรื่องเหล่านี้เป็นความกังวลที่เชื่อมโยงกัน ขอบเขตของตัววิเคราะห์ (Parser limits), การตรวจสอบความปลอดภัย, การแคช, การทำ reverse proxy, สถานะการรับส่งข้อมูล, และการติดตั้งเครื่องมือร่วมกันโดยมีสัญญาอย่างชัดเจน ผลลัพธ์คือเซิร์ฟเวอร์หนึ่งที่สามารถสลับระหว่าง HTTP/1.1, HTTP/2, HTTP/3, การส่งมอบแบบสแตติก, การทำ reverse proxy, การสตรีม, และ WebTransport โดยไม่ต้องให้แต่ละโหมดมีคำนิยามของความถูกต้องที่แตกต่างกัน
ตรวจสอบข้ออ้าง
อย่าเชื่อคำชมเชยโดยไม่ตรวจสอบ อ่านเอกสาร [Webship 1.3.1](/docs/1.3.1) ตรวจสอบการตั้งค่าและขอบเขตของโปรโตคอล และทำซ้ำพฤติกรรมที่เผยแพร่ จากนั้น [ดาวน์โหลด Webship](/downloads) และทดสอบกรณีขอบเขตที่สำคัญต่อระบบของคุณ