บีบอัดชื่อโดเมน


21

ผมอยากรู้ว่าวิธีหนึ่งอาจมากดานบีบอัดโดเมนของพลIDNชื่อโฮสต์ (ตามที่กำหนดโดยRFC5890 ) และสงสัยว่านี้อาจจะกลายเป็นความท้าทายที่น่าสนใจ โฮสต์ Unicode หรือชื่อโดเมน (U-label) ประกอบด้วยสตริงของอักขระ Unicode โดยทั่วไปจะถูก จำกัด ให้เป็นหนึ่งภาษาขึ้นอยู่กับโดเมนระดับบนสุด (เช่นตัวอักษรกรีกภายใต้.gr) ซึ่งเข้ารหัสเป็นสตริง ASCII ที่ขึ้นต้นด้วยxn--(ที่สอดคล้องกัน A-ฉลาก)

หนึ่งสามารถสร้างแบบจำลองข้อมูลไม่เพียง แต่จากข้อกำหนดอย่างเป็นทางการที่

  • แต่ละป้ายที่ไม่ใช่ Unicode จะจับคู่สตริง^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$;

  • แต่ละ A-label เป็นการจับคู่สตริง^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$; และ

  • ความยาวรวมของโดเมนทั้งหมด (ป้ายกำกับ A และป้ายกำกับที่ไม่ใช่ IDN ตัดแบ่งด้วย '.' ตัวคั่น) ไม่เกิน 255 อักขระ

แต่จากการวิเคราะห์พฤติกรรมต่าง ๆ รวมไปถึง:

  • ลดการสั่งซื้อ U-ฉลากมักจะ lexically, ไวยากรณ์และความหมายวลีที่ถูกต้องในภาษาธรรมชาติบางอย่างรวมทั้งคำนามที่เหมาะสมและตัวเลข (unpunctuated ยกเว้นยัติภังค์ปลดออกจากช่องว่างและพับต่อNameprep ) มีการตั้งค่าสำหรับวลีสั้น; และ

  • เลเบลที่มีลำดับสูงกว่านั้นถูกดึงมาจากพจนานุกรมของ SLD และ TLD และให้บริบทสำหรับการทำนายว่าภาษาธรรมชาติใดที่ใช้ในเลเบลลำดับที่ต่ำกว่า

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

การอ่านการบีบอัดข้อมูลหนังสือของแมตต์มาฮอนี่ย์อธิบายว่าเป็นที่ชัดเจนว่ามีการใช้เทคนิคที่มีอยู่จำนวนหนึ่งเพื่อใช้ประโยชน์จากข้อสมมติฐานการสร้างแบบจำลอง (และ / หรืออื่น ๆ ) ข้างต้นซึ่งควรส่งผลให้

โดยวิธีการของบริบทคำถามนี้เป็นหน่อจากก่อนหน้านี้หนึ่งในดังนั้น


ความคิดเริ่มต้น

มันทำให้ฉันเห็นว่าปัญหานี้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการฝึกอบรมแบบออฟไลน์และฉันมองเห็นรูปแบบข้อมูลที่ถูกบีบอัดตามบรรทัดต่อไปนี้:

  • การเข้ารหัส Huffman ของ " ส่วนต่อท้ายสาธารณะ " ด้วยความน่าจะเป็นที่มาจากแหล่งเผยแพร่ของการลงทะเบียนโดเมนหรือปริมาณการใช้งานที่เผยแพร่

  • การเข้ารหัสของ Huffman ซึ่งเป็นแบบจำลอง (ภาษาธรรมชาติ) สำหรับ U-label ที่เหลือโดยมีความน่าจะเป็นที่มาจากแหล่งเผยแพร่ของการลงทะเบียนโดเมนหรือปริมาณการรับส่งข้อมูลที่ได้รับจากบริบทของคำต่อท้ายโดเมน

  • ใช้การแปลงแบบอิงพจนานุกรมจากโมเดลภาษาธรรมชาติที่ระบุ และ

  • การเข้ารหัสเลขคณิตของอักขระแต่ละตัวใน U-label ด้วยความน่าจะเป็นที่มาจากแบบจำลองภาษาธรรมชาติที่ปรับตามบริบทที่ได้จากการฝึกอบรมแบบออฟไลน์ (และอาจออนไลน์ได้เช่นกันแม้ว่าฉันสงสัยว่าข้อมูลอาจสั้นเกินไป


4
บางทีคุณสามารถดาวน์โหลดรายชื่อโดเมนทั้งหมดและกำหนดหมายเลขแต่ละรายการได้ นี่จะกะทัดรัดมาก

@Dietrich Epp: จริง ๆ แล้ว - และที่จริงฉันคิดว่าบางทีนายทะเบียนอาจประกาศหมายเลขประจำตัวของการลงทะเบียนใน WHOIS ซึ่งสิ่งนี้สามารถสร้างได้อย่างน่าเชื่อถือ แต่น่าเสียดายที่พวกเขาไม่ได้ ฉันคิดว่าในทางปฏิบัติแล้วความท้าทายในการบำรุงรักษาฐานข้อมูลทำให้ไม่สามารถทำได้: ไม่ต้องพูดถึงว่าฐานข้อมูลดังกล่าวไม่ได้จัดการโดเมนย่อย
eggyal

... ถ้ามีจำนวนพอเพียงแค่ใช้ขนาด 4/6 ไบต์ของที่อยู่ ipv4 / 6: /

@arnaud: กลับเป็นปัญหา - อาศัยตัวชี้ที่ถูกต้องใน.in-addr.arpa; ยังแบ่งหาก IP เคยเปลี่ยนแปลง
eggyal

1
โดยวิธีการของ Dietrich Epp (ขึ้นอยู่กับโดเมนประมาณ 196m) คุณสามารถจัดเก็บชื่อโดเมนใน 28 บิต (อักขระ unicode สองตัว) และคุณไม่สามารถทำได้ดีกว่านี้ แน่นอนว่าการกระจายความน่าจะเป็นเหนือชื่อโดเมนสามารถให้บิตที่คาดหวังได้ดีกว่ามาก อย่างน้อยคุณสามารถใช้การเข้ารหัสทางคณิตศาสตร์สำหรับโดเมนที่ได้รับความนิยมสูงสุด 1 ล้านโดเมนและใช้รูปแบบ Ad-hoc สำหรับส่วนที่เหลือ
ปีเตอร์

คำตอบ:


0

การเข้ารหัส Huffman เหมาะสมที่สุดสำหรับตัวอักษรและสามารถปรับให้เข้ากับลำดับได้อย่างแน่นอน ตัวอย่างเช่นหากลำดับ "ab" ส่งผลให้บิตน้อยกว่าบิตสำหรับ "a" และ "b" ดังนั้นเพียงเพิ่มลงในทรี ... และอื่น ๆ

... คุณยังสามารถใช้ไลบรารี่แบบง่าย ๆ ซึ่งทำเพื่อคุณด้วยประสิทธิภาพที่ใกล้เคียงที่สุดเพื่อที่คุณจะไม่ได้รับประโยชน์มากนักจากอัลกอริธึมการบีบอัดที่ทำเองสุดพิเศษ


ฉันคิดว่า Huffman นั้นไม่ค่อยดีนัก (มันปัดเศษเป็นบิตที่ใกล้ที่สุด): การเข้ารหัสทางคณิตศาสตร์ควรมีประสิทธิภาพสูงกว่าเสมอ และหากไม่มีใครใช้แบบจำลองที่ถูกต้องของข้อมูลที่ถูกบีบอัดใคร ๆ ก็มักจะได้ผลลัพธ์ที่ไม่ดี ... ดังนั้นหากทุก ๆ บิตมีความสำคัญไลบรารี่ทั่วไปจะไม่เพียงพอ
eggyal

4
การเข้ารหัส Huffman นั้นเหมาะสมที่สุดถ้าคุณไม่สนใจความสัมพันธ์ระหว่างตัวอักษร (เช่นถ้าคุณเห็น a q) ตัวอักษรถัดไปมีแนวโน้มที่จะเป็นuมากกว่าที่จะเป็นอย่างอื่น แต่นั่นไม่ใช่ข้อสมมติฐานที่สมจริง ในทางปฏิบัติความสัมพันธ์เหล่านั้นมีขนาดใหญ่และทำให้ผู้ใช้สามารถทำได้ดีกว่าการเข้ารหัส Huffman ที่ไร้เดียงสาในทางปฏิบัติ
DW

@DW คุณมีคำแนะนำใด ๆ เกี่ยวกับวิธีที่ทำได้ดีกว่านี้หรือไม่ มันอาจช่วยให้สามารถเข้ารหัสคู่หรืออักขระสามตัวที่อยู่ติดกันผ่าน Huffman ได้หรือไม่?
ไรอัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.