สำรวจเครื่องมือ Mediastreamer2 VoIP ส่วนที่ 8

เนื้อหาของบทความนำมาจากของฉัน ช่องเซน.

สำรวจเครื่องมือ Mediastreamer2 VoIP ส่วนที่ 8

โครงสร้างแพ็คเก็ต RTP

ในที่สุด статье เรากำลังใช้ ฉลาม ทำการจับภาพแพ็กเก็ต RTP ที่แลกเปลี่ยนระหว่างเครื่องรับและเครื่องส่งของเรา ในอันนี้เราจะวาดองค์ประกอบของแพ็คเกจด้วยสีที่ต่างกันและพูดคุยเกี่ยวกับจุดประสงค์ของพวกเขา

มาดูแพ็คเกจเดียวกัน แต่มีขอบสีและป้ายกำกับอธิบาย:
สำรวจเครื่องมือ Mediastreamer2 VoIP ส่วนที่ 8

ที่ด้านล่างของรายการ ไบต์ที่ประกอบเป็นแพ็กเก็ต RTP จะถูกแต้มสี และนี่คือเพย์โหลดของแพ็กเก็ต UDP (ส่วนหัวจะอยู่ในวงกลมสีดำ) พื้นหลังสีระบุไบต์ของส่วนหัว RTP และบล็อกข้อมูลที่มีเพย์โหลดของแพ็กเก็ต RTP จะถูกเน้นด้วยสีเขียว ข้อมูลจะแสดงในรูปแบบเลขฐานสิบหก ในกรณีของเรา นี่คือสัญญาณเสียงที่บีบอัดตามกฎหมาย u (mu-law) เช่น ตัวอย่างหนึ่งมีขนาด 1 ไบต์ เนื่องจากเราใช้อัตราการสุ่มตัวอย่างเริ่มต้น (8000 Hz) ที่อัตราแพ็กเก็ต 50 Hz แต่ละแพ็กเก็ต RTP ควรมีเพย์โหลด 160 ไบต์ เราจะเห็นสิ่งนี้โดยการนับจำนวนไบต์ในพื้นที่สีเขียว ควรมี 10 บรรทัด

ตามมาตรฐาน จำนวนข้อมูลในเพย์โหลดจะต้องเป็นทวีคูณของสี่ หรืออีกนัยหนึ่งคือต้องมีจำนวนคำสี่ไบต์เป็นจำนวนเต็ม ถ้าเกิดว่าเพย์โหลดของคุณไม่ตรงกับกฎนี้ คุณต้องเพิ่มไบต์ที่มีค่าเป็นศูนย์ต่อท้ายเพย์โหลดและตั้งค่าบิตการเติม บิตนี้อยู่ในไบต์แรกของส่วนหัว RTP และเป็นสีเทอร์ควอยซ์ โปรดทราบว่าเพย์โหลดไบต์ทั้งหมดคือ 0xFF ซึ่งเป็นลักษณะของความเงียบของกฎหมาย u

ส่วนหัวของแพ็กเก็ต RTP ประกอบด้วย 12 ไบต์บังคับ แต่ในสองกรณีอาจยาวกว่านี้ได้:

  • เมื่อแพ็กเก็ตนำสัญญาณเสียงที่ได้จากการผสมสัญญาณจากหลายแหล่ง (สตรีม RTP) จากนั้นหลังจาก 12 ไบต์แรกของส่วนหัวจะมีตารางที่มีรายการตัวระบุแหล่งที่มาที่ใช้เพย์โหลดเพื่อสร้างเพย์โหลดของแพ็กเก็ตนี้ ในกรณีนี้ ในสี่บิตล่างของไบต์แรกของส่วนหัว (field ตัวระบุแหล่งที่มาที่สนับสนุนจะนับ) ระบุจำนวนแหล่งที่มา ขนาดฟิลด์คือ 4 บิต ดังนั้นตารางจึงสามารถมีตัวระบุแหล่งที่มาได้สูงสุด 15 ตัว แต่ละอันใช้พื้นที่ 4 ไบต์ ตารางนี้ใช้เมื่อตั้งค่าการประชุมทางโทรศัพท์

  • เมื่อชื่อเรื่องมีนามสกุล . ในกรณีนี้ บิตถูกตั้งค่าเป็นไบต์แรกของส่วนหัว X. ในส่วนหัวที่ขยาย หลังจากตารางผู้เข้าร่วม (ถ้ามี) จะมีส่วนหัวส่วนขยายหนึ่งคำ ตามด้วยคำที่ขยาย ส่วนขยายคือชุดของไบต์ที่คุณสามารถใช้เพื่อถ่ายโอนข้อมูลเพิ่มเติม มาตรฐานไม่ได้กำหนดรูปแบบของข้อมูลนี้ - สามารถเป็นอะไรก็ได้ ตัวอย่างเช่น อาจเป็นการตั้งค่าเพิ่มเติมสำหรับอุปกรณ์ที่รับแพ็กเก็ต RTP อย่างไรก็ตาม สำหรับบางแอปพลิเคชัน มาตรฐานส่วนหัวเพิ่มเติมได้รับการพัฒนาขึ้น ตัวอย่างเช่นสำหรับการสื่อสารในมาตรฐาน ED-137 (มาตรฐานการทำงานร่วมกันสำหรับส่วนประกอบ VoIP ATM).

ตอนนี้เรามาดูรายละเอียดเพิ่มเติมที่ฟิลด์ส่วนหัว ด้านล่างนี้เป็นภาพมาตรฐานที่มีโครงสร้างของส่วนหัว RTP ซึ่งฉันไม่สามารถต้านทานและทาสีด้วยสีเดียวกันได้

สำรวจเครื่องมือ Mediastreamer2 VoIP ส่วนที่ 8
VER — หมายเลขเวอร์ชันโปรโตคอล (เวอร์ชันปัจจุบัน 2);

P - การตั้งค่าสถานะที่ตั้งค่าไว้ในกรณีที่แพ็กเก็ต RTP เสริมด้วยไบต์ว่างในตอนท้าย

X - ตั้งค่าสถานะที่ขยายส่วนหัว;

CC — มีจำนวนตัวระบุ CSRC ตามหลังส่วนหัวคงที่ (หลังคำ 1..3) ตารางจะไม่แสดงในรูป

M — เครื่องหมายของจุดเริ่มต้นของเฟรมหรือการมีอยู่ของคำพูดในช่อง (หากใช้ตัวตรวจจับการหยุดพูดชั่วคราว) หากเครื่องรับไม่มีตัวตรวจจับการหยุดพูด บิตนี้จะถูกตั้งค่าอย่างถาวร

พีไทป์ - ระบุรูปแบบของเพย์โหลด

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

timestamp - ประทับเวลา เวลาถูกวัดในตัวอย่างสัญญาณ เช่น หากการระเบิดมี 160 ตัวอย่าง การประทับเวลาของการระเบิดครั้งต่อไปจะมากกว่า 160 ตัวอย่าง ค่าเริ่มต้นของการประทับเวลาจะต้องสุ่ม

สสค — ตัวระบุแหล่งที่มาของแพ็คเกจจะต้องไม่ซ้ำกัน เป็นการดีกว่าที่จะสร้างแบบสุ่มก่อนที่จะเริ่มสตรีม RTP

หากคุณพัฒนาตัวส่งหรือตัวรับแพ็กเก็ต RTP ของคุณเอง คุณจะต้องดูแพ็กเก็ตของคุณมากกว่าหนึ่งครั้งเพื่อเพิ่มประสิทธิภาพการทำงาน ฉันขอแนะนำให้คุณเรียนรู้วิธีใช้การกรองแพ็กเก็ตใน TShark ซึ่งจะช่วยให้คุณสามารถจับเฉพาะแพ็กเก็ตที่ เป็นที่สนใจของคุณ ในสภาพแวดล้อมที่มีอุปกรณ์ RTP หลายสิบเครื่องทำงานบนเครือข่าย สิ่งนี้มีประโยชน์มาก ในบรรทัดคำสั่ง TShark ตัวเลือกการกรองจะถูกระบุด้วยตัวเลือก "-f" เราใช้ตัวเลือกนี้เมื่อเราต้องการจับแพ็กเก็ตจากพอร์ต 8010:
-f "udp port 8010"
พารามิเตอร์การกรองโดยพื้นฐานแล้วเป็นชุดของเกณฑ์ที่แพ็กเก็ต "จับ" ต้องเป็นไปตาม เงื่อนไขสามารถตรวจสอบที่อยู่ พอร์ต ค่าของบางไบต์ในแพ็กเก็ต เงื่อนไขสามารถใช้ร่วมกับการดำเนินการทางตรรกะ "AND", "OR" เป็นต้น เครื่องมือที่ทรงพลังมาก

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

หากคุณต้องการฟังสัญญาณที่ส่งโดยสตรีม RTP คุณต้องใช้เวอร์ชัน ฉลาม ด้วยอินเตอร์เฟสภาพ Wireshark. ด้วยการบังคับเมาส์อย่างง่าย คุณสามารถฟังและดูรูปคลื่นของสัญญาณได้ แต่มีเงื่อนไขเดียว - หากเข้ารหัสในรูปแบบ u-law หรือ a-low

ต่อไป статье เราจะทำอินเตอร์คอมแบบดูเพล็กซ์กับคุณ ตุนชุดหูฟังและคู่สนทนาหนึ่งคน

ที่มา: will.com

เพิ่มความคิดเห็น