04. การเบี่ยงเบนของโปรโตคอล — เมื่อสองฝ่ายมีความเห็นไม่ตรงกันเรื่องสัญญา
ต้นกำเนิดของการยอมรับแบบยืดหยุ่น
ในปี 1989 J. Postel และคณะเขียนหลักการที่ภายหลังจะทำให้สัญญาระหว่างระบบเลือนหายไป ลงในเอกสารที่รู้จักกันในชื่อทางการว่า RFC 1122 หลักการนั้นว่าไว้สั้นๆ ทำในสิ่งที่ตนทำอย่างอนุรักษ์นิยม ยอมรับสิ่งที่ได้รับอย่างยืดหยุ่น เป้าหมายคือให้ระบบที่ต่างกันทำงานร่วมกันได้มากที่สุด สถาปนิกของ IETF เชื่อว่าถ้ายอมรับอินพุตที่ผิดรูปแบบไปบ้าง บริการต่างๆ จะรอดจากข้อผิดพลาดเล็กน้อยได้โดยไม่ล่ม และเครือข่ายจะยังทำงานได้และทนทาน ทางเลือกนี้กลับผลักภาระบำรุงรักษาจริงไปไว้ที่ฝ่ายที่พยายามทำให้ถูกต้องตามข้อกำหนดดั้งเดิมอย่างเคร่งครัด โดยไม่มีใครรู้ตัว ผู้รับกลบเกลื่อนข้อผิดพลาดไปเงียบๆ ผู้ส่งจึงไม่เคยรู้ว่าเอาต์พุตของตนเบี่ยงเบนไปจากมาตรฐานของโปรโตคอลที่ตกลงกันไว้ เมื่อเวลาผ่านไป สัญญาดั้งเดิมระหว่างระบบทั้งสองก็หายไปในทางปฏิบัติ เหลือไว้เพียงความเป็นจริงที่เปราะบาง ไม่มีเอกสารกำกับ และไม่มีฝ่ายใดเป็นเจ้าของหรือเข้าใจอย่างถ่องแท้
ต้นทุนของการยอมรับอย่างเงียบเชียบ
ภายในปี 2023 การเบี่ยงเบนนี้ถูกจัดการอย่างเป็นทางการ Internet Architecture Board นำโดยผู้เขียนที่รวมถึง Martin Thomson และ T. Pauly เผยแพร่ RFC 9413 เพื่อรับมือกับผลของมันโดยตรง คณะกรรมการสังเกตว่านิสัยยอมรับอินพุตที่ไม่ตรงมาตรฐานซึ่งมีมานาน ให้รางวัลแก่ผู้ส่งที่ไม่ทำตามข้อกำหนดโปรโตคอลที่เข้มงวดและชัดเจน โดยไม่มีใครตั้งใจ การยอมรับเงียบๆ นี้ฝังความคลุมเครือลงลึก และสร้างข้อบกพร่องด้านความปลอดภัยที่สำคัญ เพราะระบบเริ่มพึ่งพาพฤติกรรมที่คาดเดาไม่ได้ แทนสัญญาจุดเชื่อมต่อที่ชัดเจนและเป็นทางการ ผู้ส่งที่อนุรักษ์นิยมและยังทำตามกฎ ต้องจ่ายต้นทุนบำรุงรักษาไปไม่มีกำหนด เพื่อรองรับพฤติกรรมที่เอาแน่เอานอนไม่ได้ของคู่สนทนาที่ยืดหยุ่นเกินไป IAB สรุปว่าการบำรุงรักษาโปรโตคอลเชิงรุกเหนือกว่าการรับอินพุตผิดรูปแบบโดยไม่โต้ตอบอยู่มาก เพราะมันบังคับให้ทั้งสองฝ่ายรักษาแนวทางให้ตรงกันอยู่เสมอ การทดสอบสัญญา เช่น สัญญาที่ขับเคลื่อนโดยผู้ใช้งาน (consumer-driven contracts) อย่าง Pact คือกลไกบังคับใช้สมัยใหม่ มันแทนที่ข้อสมมติฐานที่คลุมเครือด้วยความคาดหวังต่อจุดเชื่อมต่อที่รันได้และตรวจสอบได้จริง
การเปลี่ยนแปลงของมาตรฐาน
ข้อพิพาทเรื่องความถูกต้องของการยอมรับแบบยืดหยุ่นจบแล้ว ไม่ใช่ยังถกเถียงกันอยู่ เพราะ Internet Architecture Board รับคำวิจารณ์นั้นไว้อย่างเป็นทางการ อุตสาหกรรมย้ายจากปรัชญาปี 1989 ของ RFC 1122 ไปสู่ข้อบังคับปี 2023 ของ RFC 9413 เพื่อรักษาโปรโตคอลเครือข่ายให้ทนทานและคาดการณ์ได้ IETF กลับจุดยืนโดยพื้นฐาน มันให้น้ำหนักกับการบังคับใช้ที่ชัดเจนและการทำตามสัญญาที่ชัดแจ้ง มากกว่าช่องทางสื่อสารที่หละหลวมและให้อภัยความผิดพลาดอย่างที่เคยเลือกในอดีต
ตัวอย่าง: จับมือโดยละเลยนิ้วที่หัก สุดท้ายมือนั้นจะจับอะไรไม่อยู่ รับน้ำหนักไม่ได้เลย
คำตัดสิน. ระบบล้มเหลวเมื่อสัญญาจุดเชื่อมต่อถูกปล่อยให้เสื่อมถอย ผ่านอินพุตที่เบี่ยงเบนจากข้อกำหนดที่ตกลงกันไว้ แล้วถูกรับเข้ามาเงียบเชียบโดยไม่มีการตรวจสอบ
จะพลิกคำตัดสินได้เมื่อ: มีการศึกษาเชิงประจักษ์ขนาดใหญ่แสดงว่าโปรโตคอลที่บังคับตรวจสอบอินพุตอย่างเข้มงวด ล้มเหลวร้ายแรงในอัตราที่สูงกว่าโปรโตคอลที่ใช้นโยบายยอมรับแบบยืดหยุ่น
แหล่งอ้างอิง. 1989 · J. Postel et al., "Requirements for Internet Hosts — Communication Layers" — IETF Datatracker · 2023 · Internet Architecture Board / M. Thomson, T. Pauly, "Maintaining Robust Protocols" — RFC Editor
บทถัดไป · 5 / 1205. การหมดเวลาและการลองใหม่ — ยาที่กลายเป็นต้นเหตุของโรค