Giao thức khởi tạo phiên SIP

Một phần của tài liệu Phân tích thiết kế hệ thống thời gian thực (Trang 32)

Giao thức khởi tạo phiên SIP (Session Initiation Protocol), tương tự HTTP (HyperText Transfer Protocol) , là một giao thức điều khiển lời gọi và báo hiệu tầng ứng dụng dựa trên văn bản. SIP được sử dụng để tạo, sửa đổi, và kết thúc các phiên SIP. Giao thức này hỗ trợ cả truyền thông đơn phát (unicast) và đa phát (multicast). Vì SIP dựa trên văn bản nên dễ cài đặt, triển khai.

1. Các thành phần SIP

Hai thành phần chính trong SIP là SIP servers và SIP user agents.

 SIP Servers

Có ba loại SIP servers: proxy, registrar, and redirect. Mỗi loại thực hiện một chức năng khác nhau, như được chỉ ra trong Bảng 1.1. Chức năng cụ thể quyết định các yêu cầu SIP (SIP requests) được xử lý.

Bảng 1.1. SIP Servers

SIP Server Chức năng

Proxy server Hoạt động trung gian giữa một SIP user agent client và một SIP user agent server. Proxy server thực hiện các chức năng của SIP user agent client hoặc của SIP user agent server, tùy thuộc vào hướng của truyền thông giữa client và server. Một proxy server có thể sửa SIP request trước khi chuyển tiếp nó hoặc đơn giản chỉ chuyển tiếp SIP request.

Registrar server Nhận các yêu cầu REGISTER, mỗi yêu cầu chứa cả địa chỉ IP và địa chỉ SIP — hay URL — của user agent. Điều này cho phép registrar server biết được vị trí của các user agents.

Redirect server Chấp nhận khởi tạo, dưới dạng một yêu cầu SIP INVITE, của một phiên SIP từ một user agent gọi, nhận địa chỉ SIP đúng của user agent được gọi, và trả lời user agent gọi với địa chỉ đúng. Sau đó, user agent gọi sẽ sử dụng địa chỉ SIP đúng để khởi tạo phiên SIP với user agent được gọi.

SIP servers — proxy, registrar, and redirect — có thể được phát triển như các ứng dụng riêng biệt hoặc một ứng dụng duy nhất tích hợp các chức năng của cả ba servers.

 SIP User Agents

Bảng 1.2 đưa ra các dạng SIP user agents và chức năng của chúng.

Bảng 1.2. SIP User Agents

SIP User Agent Chức năng

User agent client Khởi tạo SIP requests User agent server Nhận SIP requests

2. Luồng sự kiện cuộc gọi SIP

Luồng sự kiện cho các phiên SIP phụ thuộc vào liệu phiên được thiết lập trực tiếp giữa các SIP user agents hay có một SIP server (proxy, registrar, or redirect) nằm giữa các SIP user agents.

Hình 1.10 thể hiện luồng sự kiện của một phiên gọi trực tiếp giữa hai user agents, với thứ tự sự kiện được để trong ngoặc đơn. Đầu tiên, user agent A gửi một thông điệp INVITE nhằm khởi tạo lời gọi. User agent B trả lời bằng thông báo Trying (100), thể hiện rằng yêu cầu lời gọi đang được xử lý. Tiếp đó, user agent B trả lời bằng thông báo OK (200), thể hiện rằng yêu cầu lời gọi đã được chấp nhận. User agent A gửi thông báo ACK tới user agent B, thể hiện rằng nó đã nhận được OK của user agent B. Các thông báo trên được sử dụng để thiết lập cuộc gọi. Sau khi cuộc gọi được thiết lập, dữ liệu thời gian thực được đóng gói trong các gói RTP và gửi giữa agent A và user agent B. Một trong hai user agent có thể kết thúc truyền thông thời gian thực bằng cách gửi thông báo BYE đến user agent kia, thể hiện rằng nó muốn kết thúc cuộc gọi. Khi nhận được thông báo BYE, user agent gửi thông báo OK đến đối tác rồi kết thúc phiên giao dịch.

Hình 1.10. Luồng sự kiện một phiên SIP trực tiếp giữa các user agent

Hình 1.11 thể hiện luồng sự kiện của một phiên SIP có proxy server trên đường đi giữa hai user agents. Proxy server hoạt động như điểm truyền thông trung gian, đóng vai trò cả user server và user agent. Khi đóng vai trò user server, proxy nhận các yêu cầu SIP và chuyển tiếp nó đến user agent đích. Khi đóng vai trò user agent, proxy nhận các trả lời SIP và chuyển tiếp chúng đến user agent đích.

Hình 1.12 mô tả luồng sự kiện của một phiên SIP giữa một user agent và một registrar server. Registrar server chấp nhận yêu cầu REGISTER từ user agent, thể hiện địa chỉ mà user agent có thể đến được. Một registrar server thường được đặt với một proxy server hoặc một redirect server.

Hình 1.12. Luồng sự kiện một phiên SIP với Registrar Server.

Hình 1.13 mô tả luồng sự kiện của một phiên SIP với một redirect server giữa hai user agents. User agent A gửi INVITE để khởi tạo cuộc gọi. Redirect server trả lời với thông báo Moved (302), thể hiện rằng user agent B hiện thời đã duy chuyển đến địa chỉ mới. User agent A trả lời bằng thông báo ACK. Sau đó, user agent A gửi INVITE trực tiếp đến user agent B.

3. Ví dụ kiến trúc SIP

Để minh họa truyền thông giữa các thành phần SIP, Hình 1.14 đưa ra một ví dụ về kiến trúc SIP.

Hình 1.14. Một kiến trúc SIP

A. Datum Corporation có hai SIP proxy servers để chuyển các yêu cầu SIP giữa hai domains trong công ty. SIP proxy server kết nối đến firewall quản lý tất cả các thông báo được gửi vào từ bên ngoài. Ví dụ, một thông báo SIP INVITE được gửi từ một SIP client của A. Datum Corporation tới một SIP client của Fabrikam, Inc. sẽ được gửi tới SIP proxy server của Fabrikam, Inc. SIP proxy server sau đó chuyển tiếp SIP INVITE đến SIP client đích, hoặc một SIP IP phone, trong domain của SIP proxy server của Fabrikam, Inc.

4. Giao thức SIP

Thông báo SIP dựa trên định dạng của thông báo Internet chuẩn. Thông báo SIP có thể là request hay response. Mỗi thông báo SIP có ba phần, như trong Bảng 1.3.

Bảng 1.3. Các phần của thông báo SIP

Phần thông báo

SIP Miêu tả

Start line Nội dung tùy thuộc vào thông báo là request hay response. Trong cả hai loại thông báo, start line chứa Phiên bản SIP. Start line của thông báo request chứa Phương thức SIP và Địa chỉ SIP hoặc URI đích. Start line của thông báo response chứa Mã trạng thái SIP Response và Nội dung trả lời xác định response của request.

Headers Chứa kiểu header và các biến tương ứng.

Message body Chứa thông tin được cung cấp bởi Giao thức Miêu tả Phiên – SDP (Session Description Protocol), như miêu tả dung lượng đa phương tiện cho phiên SIP.

SIP xác định các giá trị của start line và các headers. Giao thức Miêu tả Phiên (SDP) xác định giá trị nội dung thông báo.

 Start Line

Cú pháp của start line phụ thuộc vào thông báo là request hay response. Bảng 1.4 chỉ ra các cú pháp này.

Bảng 1.4. Cú pháp của Start Line

Start Line Cú pháp

Request Phương thức SIP, URI đích, Phiên bản SIP

Response Phiên bản SIP, Mã trạng thái SIP response, Nội dung trả lời

 Phương thức SIP

Mục đầu tiên trong start line của thông báo request là Phương thức SIP, một lệnh báo hiệu. Các phương thức SIP được liệt kê trong Bảng 1.5.

Bảng 1.5. Các phƣơng thức SIP và chức năng của chúng

Phương thức

SIP Chức năng

INVITE Yêu cầu khởi tạo phiên SIP. INVITE được gửi từ user agent gửi tới user agent nhận.

ACK User agent nhận đã chấp nhận cuộc phiên giao dịch. ACK được gửi từ user agent gửi tới user agent nhận.

OPTIONS User agent gửi yêu cầu user agent nhận thông báo các dung lượng của nó.

BYE Yêu cầu kết thúc phiên. BYE có thể được gửi bởi user agent gửi hoặc user agent nhận. Khi nhận được BYE, user agent không cần thiết phải trả lời.

CANCEL Hủy bỏ các yêu cầu treo.

REGISTER User agent gửi đăng ký vị trí hiện tại của nó với registrar server.

SUBSCRIBE User agent gửi yêu cầu cập nhật thông tin hiện tại của user agent nhận.

NOTIFY Thông báo trạng thái cho đối tác.

MESSAGE Được sử dụng để gửi thông báo.

 URI đích

Mục thứ hai trong start line của thông báo request là URI đích, chứa URL của user agent nhận. Thông thường, URL là SIP URL. Một SIP URL có thể có nhiều định dạng khác nhau. Một số định dạng được cho trong Bảng 1.6.

Bảng 1.6. Một số định dạng của SIP URL

Định dạng SIP URL Giải thích

sip:user@reskit.com SIP URL cơ bản. Mặc định

giao thức truyền thông được sử dụng là UDP.

sip:user@reskit.com;transport=TCP SIP URL cơ bản với giao thức truyền thông là TCP.

sip:user@172.16.20.54 SIP URL với một địa chỉ IP.

sip:+1-425-707-9796@reskit.com;user=phone SIP URL với một số điện thoại toàn cầu.

sip:marketing@reskit.com;maddr=225.0.2.1;ttl=64 SIP URL với một địa chỉ đa phát (multicast address). Giá trị TTL (time-to-live) được đặt về 64 (0-255). Giá trị TTL phải được thiết lập khi sử dụng địa chỉ đa phát và giao thức truyền thông UDP.

 Phiên bản SIP

Mục cuối cùng trong start line của thông báo request và mục đầu tiên trong start line của thông báo response là Phiên bản SIP, hiện tại chúng có giá trị là 2.0.

 Mã trạng thái SIP Response

Có sáu loại mã trạng thái khác nhau: informational, success, redirection, client error, server error, and global failures. Số bên trái nhất của mã biểu thị loại mã trạng thái như được thể hiện trong Bảng 1.7.

Bảng 1.7. Các mã trạng thái SIP Response Mã trạng thái Loại Response Miêu tả

1xx Informational Đã nhận được yêu cầu và đang xử lý. 2xx Success Yêu cầu đã được hiểu và được chấp nhận.

3xx Redirection Cần thực hiện những hành động khác nữa để hoàn thành yêu cầu.

4xx Client Error Cú pháp của yêu cầu không đúng hoặc server không chấp nhận yêu cầu.

5xx Server Error Server nhận được yêu cầu nhưng không thể xử lý nó. 6xx Global

Failures

Server nhận được yêu cầu nhưng không thể xử lý nó và yêu cầu có thể cũng hỏng trên các server khác. Do vậy, yêu cầu không được chuyển tiếp.

 Nội dung trả lời

Mọi SIP response đều có phiên bản SIP là 2.0. Các mã trạng thái và nội dung của nó được thể hiện trong Bảng 1.8.

Bảng 1.8. Nội dung SIP Response

Mã trạng

thái Loại Response Nội dung

100 Informational Đang kết nối

180 Informational Đang rung

181 Informational Cuộc gọi được chuyển

182 Informational Chờ

300 Redirection Nhiều lựa chọn

301 Redirection Đã chuyển vị trí vĩnh viễn 302 Redirection Tạm thời chuyển vị trí

303 Redirection Xét đích khác

305 Redirection Sử dụng proxy

380 Redirection Thay đổi dịch vụ

400 Client Error Yêu cầu sai

401 Client Error Không được xác thực 402 Client Error Yêu cầu trả phí

403 Client Error Bị cấm

404 Client Error Không tìm thấy

405 Client Error Phương thức trái phép 406 Client Error Không thể chấp nhận được 407 Client Error Yêu cầu xác thực proxy 408 Client Error Request timeout

409 Client Error Xung đột

410 Client Error Không còn client 411 Client Error Yêu cầu chiều dài

413 Client Error Kích thước yêu cầu quá lớn 414 Client Error URI của yêu cầu quá lớn

415 Client Error Kiểu phương tiện không được hỗ trợ

480 Client Error Tạm thời không liên lạc được 481 Client Error Giao tác không tồn tại

482 Client Error Phát hiện vòng

483 Client Error Quá nhiều chặng

484 Client Error Địa chỉ không đầy đủ

485 Client Error Nhập nhằng

486 Client Error Bận

500 Server Error Lỗi bên trong server 501 Server Error Không được cài đặt

502 Server Error Gateway sai

503 Server Error Không tồn tại dịch vụ 504 Server Error Gateway time-out

505 Server Error Phiên bản SIP không được hỗ trợ 600 Global Failures Bận mọi nơi

603 Global Failures Sụp đổ

604 Global Failures Không tồn tại bất kỳ đâu 606 Global Failures Không thể chấp nhận

 SIP Headers

Trong mỗi thông báo SIP, sau start line là một hoặc nhiều headers. Các header có mặt trong thông báo tùy thuộc vào thông báo là response hay request.

Như được trình bày trong Bảng 1.9, có bốn loại headers: general, request, response, và entity. Headers kiểu general có thể được sử dụng trong cả thông báo request và thông báo response.

Bảng 1.9. SIP Headers

General Request Response Entity

Accept Authorization Allow Content-encoding

Accept- encoding

Contact Proxy-authenticate Content-length

Accept- language

Hide Retry-after Content-type

Call-ID Max-forwards Server

Contact Organization Unsupported

Cseq Priority Warning

Date Proxy- authorization WWW-authenticate Encryption Proxy-require Expires Route From Require Record-route Response-key

Time stamp Subject

To User-agent

Via

Một phần của tài liệu Phân tích thiết kế hệ thống thời gian thực (Trang 32)

Tải bản đầy đủ (PDF)

(127 trang)