1. Nội dung thiết kế tốt nghiệp:
5.2.3 Cấu trúc tiêu đề gói tin RTP
Tiêu đề gói tin RTP bao gồm các trường được thể hiện trong Hình 5.2.
Hình 5.2 Cấu trúc tiêu đề gói tin RTP
12 byte (96 bit) đầu tiên là thành phần cố định trong tiêu đề của mọi gói tin RTP. Tiếp sau đó là phần tiêu đề mở rộng và dữ liệu tải (payload).
Ý nghĩa của các trường trong tiêu đề:
Version (V): 2 bit
Trường này chỉ ra phiên bản RTP đang sử dụng. (Phiên bản RTP đang sử dụng hiện nay là 2 (theo RFC 3550). Đối với phiên bản dự thảo đầu tiên trường Version được thiết lập bằng 1).
Padding (P): 1 bit
Nếu bit P được thiết lập (gán giá trị bằng 1) thì gói tin RTP sẽ chứa một hay nhiều byte bổ sung vào phần cuối của payload. Byte cuối cùng của phần bổ sung này sẽ cho biết số lượng byte dữ liệu được thêm vào. (Đây là phần dữ liệu cần bỏ đi khi xử lý dữ liệu nhận được).
Extension (X) : 1 bit
Nếu bit X được thiết lập, thì tiêu đề của gói tin RTP sẽ phải có thêm phần tiêu đề mở rộng như biểu diễn trong Hình 5.3.
82
Hình 5.3 Tiêu đề mở rộng của gói tin RTP CSRC count (CC): 4 bit
Trường này cho biết số lượng các bộ định danh nguồn đóng góp (Contributing Source Identifier).
Marker (M): 1 bit
Nếu bít này được thiết lập, có nghĩa là các dữ liệu hiện tại có một số liên quan đặc biệt đến ứng dụng.
Ví dụ: khi truyền một file video sử dụng giao thức RTP nếu bit M được thiết lập thì phần dữ liệu tải của gói tin đó là phần dữ liệu cuối cùng của một khung video.
Payload Type (PT): 7 bit
Trường này cho biết định dạng dữ liệu tải của gói tin RTP, đồng thời xác định ứng dụng sẽ dùng để thông dịch dữ liệu này. Một profile có thể chỉ rõ một ánh xạ tĩnh mặc định giữa việc mã hóa kiểu dữ liệu tải sang định dạng dữ liệu tải. Các dạng mã hóa kiểu dữ liệu bổ sung có thể được định nghĩa “động” bởi các giao thức và các cơ chế được thêm vào trong RTP để cung cấp một dịch vụ khả dụng.
Một nguồn RTP có thể thay đổi kiểu dữ liệu trong một phiên làm việc, nhưng trường này không nên được sử dụng cho việc ghép kênh các luồng dữ liệu độc lập. Bên thu phải bỏ qua gói tin có định dạng dữ liệu tải mà nó không thể thông dịch được.
Sequence Number: 16 bit
Khi một gói tin được gửi đi thì số sequence number của gói tin đó được tăng thêm 1. Bên thu có thể sử dụng thông tin của trường này để xác định gói tin bị mất khi truyền và khôi phục lại thứ tự của các gói tin. Giá trị khởi tạo của trường này là một số ngẫu nhiên.
83
Trường này phản ánh việc lấy mẫu tức thì của byte đầu tiên trong gói tin dữ liệu RTP. Việc lấy mẫu này được thực hiện nhờ một clock tăng tuyến tính theo thời gian để cho phép tính toán về độ rung (jitter) và việc đồng bộ hóa. Tần số của clock phụ thuộc vào định dạng của dữ liệu truyền đi như định dạng tải “tĩnh” hoặc định dạng tải “động”. Nếu gói tin RTP được truyền đi theo chu kỳ thì việc lấy mẫu tức thì được xác định bằng tần số lấy mẫu đang dùng, và không liên quan gì đến việc đọc clock hệ thống.
Ví dụ: Đối với một tệp âm thanh có tốc độ lấy mẫu cố định, timestamp sẽ tăng thêm một sau mỗi một chu kì lấy mẫu. Nếu một ứng dụng âm thanh đọc các khối dữ liệu hết 160 chù kỳ từ thiết bị đầu vào, timestamp sẽ tăng thêm 160 đối với mỗi khối dữ liệu, điều này không liên quan đến việc khối dữ liệu đó được truyền trong một gói hay bị bỏ đi.
Giá trị khởi tạo của trường này cũng là một giá trị ngẫu nhiên.
SSRC (Synchronous Source ): 32 bit
Trường này xác định các nguồn đồng bộ. Giá trị của trường được lựa chọn ngẫu nhiên nhằm mục đích tránh việc hai nguồn đồng bộ trong cùng một phiên làm việc có cùng một bộ định danh (cùng một giá trị SSRC). Nếu một nguồn thay đổi địa chỉ giao vận (transport address) của chính nó thì nguồn đó phải chọn một bộ định danh SSRC mới để tránh bị thông dịch như một nguồn lặp.
CSRC (Contributing Sources): 32 bit
Trường CSRC xác định các nguồn đóng góp dữ liệu tải có trong gói tin RTP. Số lượng các bộ định danh được xác định bởi trường CC. Nếu có nhiều hơn 15 nguồn đóng góp, thì sẽ chỉ có 15 nguồn được định danh. Các bộ định danh CSRC được thêm vào bởi các bộ trộn (mixer).