Dòng Khởi Đầu (Start-Line)
Ví dụ: INVITE sip:34020000001320000001@202.102.11.27:35611 SIP/2.0
- Dòng khởi đầu của thông điệp yêu cầu gồm ba thành phần theo cú pháp: Phương thức URI SIP_Version
- Phương thức (Method) là hành động yêu cầu, trong ví dụ là
INVITE. Giao thức SIP định nghĩa sáu phương thức chính:INVITE,ACK,CANCEL(dùng để thiết lập hội thoại),BYE(kết thúc hội thoại),REGISTER(đăng ký), vàOPTIONS(truy vấn khả năng máy chủ).
Trường Tiêu Đề (Header)
Call-ID: 850948F238C245A0B555F78B8233A282
CSeq: 20 INVITE
From: <sip:34020000002000000001@3402000000>;tag=FD12812E69F94E6085754DE139441F27
To: <sip:34020000001320000001@34020000>
Via: SIP/2.0/TCP 202.102.11.27:35611;rport
Max-Forwards: 70
Contact: <sip:34020000002000000001@0.0.0.0:21000>
Content-Type: Application/SDP
Content-Length: 263
Trường Via
- Chứa danh sách tên máy chủ hoặc địa chỉ mạng (có thể kèm cổng) của các phần tử SIP (client hoặc proxy) mà thông điệp đã đi qua.
- Trong thông điệp yêu cầu, các trường Via được sắp xếp từ dưới lên trên, thể hiện đường dẫn từ nguồn đến điểm hiện tại.
- Trong thông điệp phản hồi, chúng được sắp xếp từ trên xuống dưới, chỉ ra đường dẫn phản hồi phải đi qua.
Trường Max-Forwards
- Giá trị nguyên giới hạn số bước nhảy (hop) tối đa mà yêu cầu có thể đi qua trước khi tới Máy chủ người dùng (UAS). Mỗi lần qua một bước nhảy, giá trị giảm đi 1.
- Nếu Max-Forwards về 0 mà yêu cầu chưa đến đích, máy chủ sẽ trả về phản hồi lỗi 483 (quá nhiều bước nhảy).
Trường To
Xác định người nhận thông điệp.
Trường From
Xác định người gửi thông điệp.
Trường Call-ID
Định danh duy nhất cho một lời mời (Invitation) hoặc tất cả các yêu cầu đăng ký từ cùng một UAC (User Agent Client).
Trường CSeq
- Bao gồm số thứ tự và tên phương thức, phương thức phải khớp với phương thức trong yêu cầu tương ứng. Với các yêu cầu ngoài hội thoại (out-of-dialog) không phải REGISTER, giá trị ban đầu có thể tùy chọn.
- Trong cùng một hội thoại, mỗi yêu cầu mới (như BYE, re-INVITE, OPTION) sẽ tăng số thứ tự CSeq lên 1. Ngoại lệ: ACK và CANCEL.
- Với ACK, số thứ tự CSeq phải giống với yêu cầu INVITE mà nó phản hồi. Với CANCEL, số thứ tự CSeq phải giống với yêu cầu đang bị hủy.
Trường Contact
- Đối với giao dịch không phải REGISTER, trường Contact cung cấp URI SIP trực tiếp của UAC hoặc UAS. Khi UAC gửi yêu cầu INVITE ngoài hội thoại (out-of-dialog), nó đưa URI trực tiếp của mình vào Contact. Khi UAS nhận được yêu cầu và gửi phản hồi, nó cũng đưa URI trực tiếp của mình vào Contact. Điều này cho phép các UA sau khi thiết lập hội thoại có thể liên lạc trực tiếp với nhau qua các URI này mà không cần thông qua Proxy.
- Đối với giao dịch REGISTER, trường Contact biểu thị địa chỉ liên hệ (contact address) trong ràng buộc địa chỉ (address-of-record).
Trường Content-Type
Xác định kiểu phương tiện của phần thân thông điệp. Nếu phần thân không rỗng, trường này bắt buộc phải có. Nếu có trường Content-Type nhưng phần thân rỗng, điều đó có nghĩa là luồng phương tiện thuộc kiểu đó có độ dài bằng 0.
Trường Content-Length
Độ dài phần thân thông điệp, biểu diễn dưới dạng số thập phân.
Phần Thân Thông Điệp (Message Body) – Ví dụ SDP
v=0
o=34020000002000000001 0 0 IN IP4 118.178.90.211
s=Play
c=IN IP4 118.178.90.211
t=0 0
m=video 21001 TCP/RTP/AVP 96 98 97
a=sendrecv
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
a=setup:passive
a=connection:new
y=0200000000
Giải thích từng dòng SDP
- v=0 – Phiên bản giao thức SDP, hiện tại là 0.
- o=34020000002000000001 0 0 IN IP4 118.178.90.211 – Thông tin người tạo: tên người dùng + ID phiên + phiên bản + loại mạng + loại địa chỉ + địa chỉ.
- s=Play – Tên phiên (session name).
- c=IN IP4 118.178.90.211 – Thông tin kết nối: loại mạng + loại địa chỉ + địa chỉ.
- t=0 0 – Thời gian hoạt động của phiên: thời gian bắt đầu + thời gian kết thúc (0 nghĩa là không giới hạn).
- m=video 21001 TCP/RTP/AVP 96 98 97 – Mô tả phương tiện: loại phương tiện (video) + cổng (21001) + giao thức truyền tải (TCP/RTP/AVP) + danh sách định dạng tải trọng (96, 98, 97).
- a=sendrecv – Thuộc tính phiên: chế độ gửi và nhận.
- a=rtpmap:96 PS/90000 – Ánh xạ định dạng tải trọng: số định dạng + tên mã hóa/tần số lấy mẫu. Ở đây: 96 là PS (MPEG-4 Part 2 Simple Profile) với tần số 90000 Hz.
- Các dòng a khác: mô tả thêm thuộc tính, ví dụ loại mã hóa H264, MPEG4, thiết lập kết nối thụ động (passive) và kết nối mới (new).
- y=0200000000 – Tham số mở rộng (trong GB/T 28181 thường dùng để chỉ mã thiết bị hoặc thông tin khác).