กลับไปหน้าบทความ

อ่าน 2 นาที

ประเภท-ความยาว-ค่า

ใน โปรโตคอลการสื่อสาร TLV ( type-length-value หรือ tag-length-value ) เป็นรูปแบบการเข้ารหัสที่ใช้สำหรับองค์ประกอบข้อมูล สตรีมข้อมูลที่เข้ารหัสด้วย TLV...

ประเภท-ความยาว-ค่า

ในโปรโตคอลการสื่อสาร TLV ( type-length-valueหรือtag-length-value ) เป็นรูปแบบการเข้ารหัสที่ใช้สำหรับองค์ประกอบข้อมูล สตรีมข้อมูลที่เข้ารหัสด้วย TLV ประกอบด้วยรหัสที่เกี่ยวข้องกับประเภท ของเรคอร์ด ความยาวของค่าเรคอร์ด และสุดท้ายคือค่าของเรคอร์ดนั้นเอง

รายละเอียด

ชนิดและความยาวมีขนาดคงที่ (โดยทั่วไป 1–4 ไบต์) หรือสามารถแยกวิเคราะห์ได้โดยไม่ต้องทราบขนาด (ดู: LEB128 ปริมาณความยาวแปรผัน ) และฟิลด์ค่ามีขนาดแปรผันได้ ฟิลด์เหล่านี้ใช้ดังต่อไปนี้:

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

ข้อดีบางประการของการใช้รูปแบบ TLV มีดังนี้:

  • ลำดับ TLV สามารถค้นหาได้ง่ายโดยใช้ฟังก์ชันการแยกวิเคราะห์ทั่วไป
  • องค์ประกอบข้อความใหม่ที่ได้รับในโหนดเก่าสามารถข้ามได้อย่างปลอดภัย และส่วนที่เหลือของข้อความสามารถแยกวิเคราะห์ได้ ซึ่งคล้ายกับวิธีที่ แท็ก XML ที่ไม่รู้จัก สามารถข้ามได้อย่างปลอดภัย
  • องค์ประกอบของ TLV สามารถจัดเรียงในลำดับใดก็ได้ภายในเนื้อหาข้อความ
  • โดยทั่วไปแล้ว องค์ประกอบของ TLV จะถูกใช้ในรูปแบบไบนารีและโปรโตคอลไบนารีซึ่งทำให้การแยกวิเคราะห์เร็วขึ้นและข้อมูลมีขนาดเล็กกว่าเมื่อเทียบกับโปรโตคอลแบบข้อความที่เทียบเคียงกันได้

ตัวอย่างประกอบ

ลองนึกภาพข้อความสำหรับโทรศัพท์ ระบบเวอร์ชันแรกกำหนดโครงสร้างดังต่อไปนี้:

struct message { uint16_t tag ; uint16_t length ; char value [ length ]; } /* แท็ก */ #define T_COMMAND 0x00 #define T_PHONE_NUMBER_TO_CALL 0x10 /* ค่าคำสั่ง */ #define C_MAKE_CALL 0x20

เมื่อทำการโทรออก ระบบจะส่งข้อมูลต่อไปนี้:

00 00 T_COMMAND 00 04 ความยาว = 4 00 00 00 20 C_MAKE_CALL 00 10 หมายเลขโทรศัพท์ที่จะโทร 00 08 ความยาว = 8 37 32 32 2D ASCII สำหรับ "722-" 34 32 34 36 ASCII สำหรับ "4246"

ระบบรับสัญญาณจะเข้าใจว่าข้อความนั้นสั่งให้โทรไปที่หมายเลข "722-4246"

ต่อมา (ในเวอร์ชัน 2) สามารถเพิ่มช่องข้อมูลใหม่สำหรับหมายเลขผู้โทรได้:

#define T_CALLER_NUMBER 0x11

มันจะส่งข้อความประมาณนี้:

00 00 T_COMMAND 00 04 ความยาว = 4 00 00 00 20 C_MAKE_CALL 00 11 T_CALLER_NUMBER ความยาว 00 0c = 12 36 31 33 2D ASCII สำหรับ "613-" 37 31 35 2D ASCII สำหรับ "715-" 39 37 31 39 รหัส ASCII สำหรับ "9719" 00 10 หมายเลขโทรศัพท์ที่จะโทร 00 08 ความยาว = 8 37 32 32 2D ASCII สำหรับ "722-" 34 32 34 36 ASCII สำหรับ "4246"

ระบบ เวอร์ชัน 1 ที่ได้รับข้อความจาก ระบบเวอร์ชัน 2 จะอ่านT_COMMANDองค์ประกอบก่อน จากนั้นจึงอ่านองค์ประกอบประเภท ระบบ T_CALLER_NUMBERเวอร์ชัน 1 ไม่เข้าใจT_CALLER_NUMBERดังนั้นจึงอ่านฟิลด์ความยาว (เช่น 12) และระบบจะข้ามไปข้างหน้า 12 ไบต์เพื่ออ่านT_PHONE_NUMBER_TO_CALLซึ่งระบบเข้าใจ และการแยกวิเคราะห์ข้อความจะดำเนินต่อไป

ตัวอย่างในโลกแห่งความเป็นจริง

โปรโตคอลการขนส่ง

รูปแบบการจัดเก็บข้อมูล

อื่น

วิธีการอื่นๆ ในการนำเสนอข้อมูล

โปรโตคอล หลักของ TCP/IP (โดยเฉพาะIP , TCPและUDP ) ใช้ฟิลด์คงที่ที่กำหนดไว้ล่วงหน้า

โปรโตคอลระดับแอปพลิเคชันบางตัว รวมถึง HTTP/1.1 (และรุ่นก่อนหน้าที่ไม่ได้รับการกำหนดมาตรฐาน), FTP , SMTP , POP3และSIPใช้คู่ "ฟิลด์: ค่า" ที่เป็นข้อความซึ่งจัดรูปแบบตามRFC 2822 ( HTTPแสดงความยาวของเพย์โหลดด้วยส่วนหัว Content-Length และแยกส่วนหัวออกจากเพย์โหลดด้วยบรรทัดว่าง และแยกส่วนหัวออกจากกันด้วยบรรทัดใหม่) 

ASN.1กำหนดกฎการเข้ารหัสแบบ TLV หลายแบบ ( BER , DER ) รวมถึงกฎการเข้ารหัสแบบไม่ใช้ TLV ( PER , XER , กฎการเข้ารหัส JSON) กฎแบบ TLV สามารถแยกวิเคราะห์ได้โดยไม่ต้องทราบสมาชิกที่เป็นไปได้ของข้อความ ในขณะที่ PER แบบไม่ใช้ TLV/คงที่นั้นทำไม่ได้ XER ใช้ XML ซึ่งช่วยให้สามารถแยกวิเคราะห์ได้โดยไม่ต้องทราบสมาชิกที่เป็นไปได้ของข้อความเช่นกัน และหลักการเดียวกันนี้ใช้ได้กับกฎการเข้ารหัส JSON ด้วย

CSN.1อธิบายกฎการเข้ารหัสโดยใช้ความหมายที่ไม่ใช่ TLV

เมื่อไม่นานมานี้XML ได้ถูกนำมาใช้ใน การส่งข้อความระหว่างโหนดต่างๆ ในเครือข่าย โดยปกติข้อความเหล่านี้จะมีคำสั่งข้อความแบบบรรทัดต่อบรรทัดนำหน้า เช่นBEEP

ดูเพิ่มเติม

  • KLVคือรูปแบบเฉพาะของการเข้ารหัสแบบความยาว-ค่า (type-length-value encoding)

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ประเภท-ความยาว-ค่า

ใน โปรโตคอลการสื่อสาร TLV ( type-length-value หรือ tag-length-value ) เป็นรูปแบบการเข้ารหัสที่ใช้สำหรับองค์ประกอบข้อมูล สตรีมข้อมูลที่เข้ารหัสด้วย TLV...

รายละเอียด

ชนิดและความยาวมีขนาดคงที่ (โดยทั่วไป 1–4 ไบต์) หรือสามารถแยกวิเคราะห์ได้โดยไม่ต้องทราบขนาด (ดู: LEB128 ปริมาณความยาวแปรผัน ) และฟิลด์ค่ามีขนาดแปรผันได้ ฟิลด์เหล่านี้ใช้ดังต่อไปนี้:

ตัวอย่างประกอบ

ลองนึกภาพข้อความสำหรับโทรศัพท์ ระบบเวอร์ชันแรกกำหนดโครงสร้างดังต่อไปนี้:

โปรโตคอลการขนส่ง

TLS (และ SSL ซึ่งเป็นรุ่นก่อนหน้า) ใช้ข้อความที่เข้ารหัสแบบ TLV เอสเอช ตำรวจ ไอเอส-ไอเอส รัศมี โปรโตคอล Link Layer Discovery (LLDP) อนุญาตให้ส่งข้อมูลเฉพาะขององค์กรในรูปแบบองค์ประกอบ TLV ภายในแพ็กเก็ต LLDP โปรโตคอลความซ้ำซ้อนของสื่อ (Media Redundancy...