SIP là giao thức dạng Text sử dụng bộ ký tự ISO 10646 trong mó hoỏ UTF-8 (RFC 2279). Điều này tạo cho SIP tớnh linh hoạt, mở rộng và dễ thực thi cỏc ngụn ngữ lập trỡnh cấp cao như Java, Tol, Perl. Cỳ phỏp của SIP gần giống với giao thức HTTP, nú cho phộp dựng lại mó và đơn giản húa sự liờn kết của cỏc mỏy phục vụ SIP với cỏc mỏy phục vụ Web. Tuy nhiờn, SIP khụng phải là một dạng mở rộng của HTTP. Khỏc với HTTP, SIP cú thể sử dụng giao thức UDP.
Bản tin SIP được chia làm hai loại: Bản tin yờu cầu từ Client tới Server và bản tin đỏp ứng từ Server trả lời cho Client:
SIP-message = Request/ Response 4.1.4.1. Bản tin yờu cầu (Request)
Bản tin Request cú khuụn dạng gồm hai phần cơ bản: Request-line và phần mào đầu-header (với 3 loại header):
Request=Request-line*(General-header/Request-header/ Entity-header) CLRF
[message-body]
Trong đú thành phần Request-line chứa tờn phương thức, một Request – URI và số phiờn bản của giao thức. Cỏc thành phần được ngăn cỏch với nhau bằng một khoảng trắng (SP). Cũng như cỏc dũng khỏc, dũng khởi đầu được kết thỳc bằng một ký tự xuống dũng (CRLF).
Request-line = Method SP Request-URI SP SIP-Version
Trong đú:
Method (Phương thức SIP): SIP định nghĩa 6 phương thức cơ bản như trong bảng 4.2.
Request-URI: Trường Request-URI cú khuụn dạng theo SIP URL. Nú thụng bỏo cho User hoặc dịch vụ về địa chỉ hiện tại. Khỏc với trường “To”,
Request-URI cú thể được ghi lại bởi Proxy (trường hợp mỏy phục vụ ủy quyền).
SIP Version: Phiờn bản SIP là cỏc bản SIP được đưa ra cỏc lần khỏc nhau. Cả
hai bản tin Request và Response đều chứa phiờn bản của SIP được sử dụng SIP Version. Hiện tại phiờn bản SIP là 2.0.
Bảng 4.2. Cỏc phương thức SIP
INVITE Mời thành viờn tham gia hội thoại.
ACK Yờu cầu xỏc nhận đó nhận được đỏp ứng chập nhận
(OK) cho yờu cầu INVITE.
OPTIONS Hỏi khả năng của mỏy phục vụ SIP.
BYE Yờu cầu giải phúng cuộc gọi
CANCEL
Hủy bỏ yờu cầu sắp được thực hiện với cựng giỏ trị trong cỏc trường Call_ID, From, To, Cseq của yờu cầu đú bằng cỏch ngừng quỏ trỡnh tỡm kiếm bỏo hiệu.
REGISTER Đăng ký danh sỏch địa chỉ liờn hệ của người dựng với
mỏy phục vụ.
4.1.4.2. Bản tin phỳc đỏp (Response)
Sau khi nhận và thụng dịch một bản tin yờu cầu, phớa nhận thực hiện trả lời bằng một bản tin phỳc đỏp.
Khuụn dạng bản tin cũng gồm hai phần cơ bản: Status-line và phần mào đầu header (với 3 loại header):
Response = Status-line *(General-header/ Response-header/ Entity-header) CLRF
[message-body]
Trong đú thành phần Status-line cú cấu trỳc sau: (SP là ký tự phõn cỏch):
Status-line = SIP-Version SP status-code SP Reason-phrase SIP Version: Cũng giống như trong bản tin Request.
Status-code và Reason-phrase: Status-code là một mó kết quả nguyờn gồm 3 digit, chỉ ra kết quả của việc cố gắng thực hiện và mức độ thỏa món yờu cầu. Reason-Phrase thỡ dựng để đưa ra một lời giải thớch ngắn cho Status-code. Status-code mục đớch là để sử dụng cho Server cũn Reason-phrase là dựng cho User. Client khụng thể yờu cầu hiển thị hay kiểm tra Reason-phrase.
Status-code gồm 3 digit. Digit đầu tiờn định nghĩa loại đỏp ứng, hai digit sau khụng cú vai trũ phõn loại. SIP 2.0 định nghĩa 6 giỏ trị của digit đầu tiờn như sau:
Bảng 4.3. Cỏc mó trạng thỏi SIP
1xx Tỡm kiếm, bỏo hiệu, sắp hàng đợi
2xx Thành cụng
3xx Chuyển tiếp yờu cầu
4xx Lỗi phớa người dựng
5xx Lỗi phớa Server
6xx Lỗi chung: đường dõy đang bận, từ chối,….
Mó đỏp ứng SIP cú thể mở rộng được. Cỏc ứng dụng SIP khụng yờu cầu phải hiểu rừ về ý nghĩa của tất cả mó đỏp ứng được đăng ký mà chỉ cần hiểu cỏc loại mó đỏp ứng, ý nghĩa của digit đầu tiờn.
4.1.4.3. Cấu trỳc bản tin SIP
Cả hai loại bản tin trờn đều sử dụng chung một định dạng cơ bản được quy định trong RFC 2822 với cấu trỳc gồm một dũng khởi đầu (start – line), một số trường tiờu đề và một phần thõn bản tin tuỳ chọn (hỡnh 4.2). Cấu trỳc này được túm tắt như sau:
generic-message = start-line *message-header CRLF
[ message-body ] Với
start-line = Request-Line / Status-Line
Hỡnh 4.2. Cấu trỳc bản tin SIP
Trong đú, dũng bắt đầu, cỏc dũng tiờu đề hay cỏc dũng trắng phải được kết thỳc bằng một ký tự xuống dũng (CRLF) và phải lưu ý rằng dũng trắng vẫn phải cú để ngăn cỏch phần tiờu đề và phần thõn của bản tin ngay cả khi phần thõn bản tin là rỗng.
Start line: Mỗi bản tin SIP được bắt đầu với một Start Line, Start Line vận chuyển loại bản tin (phương thức trong cỏc Request, và mó đỏp ứng trong cỏc
bản tin đỏp ứng) và phiờn bản của giao thức. Start line cú thể là Request-Line (trong cỏc request) hoặc là Status-Line (trong cỏc response).
Headers: Cỏc trường Hearder của SIP được sử dụng để vận chuyển cỏc thuộc tớnh của bản tin và để thay đổi ý nghĩa của bản tin. Chỳng tương tự như cỏc trường tiờu để của bản tin HTTP theo cả cỳ phỏp và ngữ nghĩa (thực tế cú một vài tiờu đề được mượn từ HTTP) cho nờn chỳng luụn cú khuụn dạng như sau:
<Name>:< Value>.
Thứ tự cỏc trường tiờu đề khỏc tờn là khụng quan trọng (nhưng cỏc tiờu đề mà được sử dụng để định tuyến bởi cỏc proxy sẽ được đặt trước). Thứ tự cỏc tiờu đề cú cựng tờn là quan trọng.
Tiờu đề bản tin bao gồm bốn loại: – Tiờu đề chung.
– Tiờu đề Request. – Tiờu đề Response. – Tiờu đề thực thể.
Body: Thõn bản tin được sử dụng để mụ tả phiờn được khởi tạo (vớ dụ: trong một phiờn multimedia phần này sẽ mang loại mó húa audio và video, tốc độ lấy mẫu …), hoặc nú cú thể được sử dụng để mang dữ liệu dưới dạng text hoặc nhị phõn (khụng được dịch) mà liờn quan đến phiờn đú. Phần thõn bản tin cú thể xuất hiện trong cả bản tin yờu cầu và đỏp ứng. Cỏc loại Body bao gồm:
– SDP: Session Description Protcol.
– MIME: Multipurpose Internet Mail Extentions.
– Cỏc phần khỏc: được định nghĩa trong IETF.