Thứ Ba, 5 tháng 8, 2014

[JAIN SIP] Chương 2 : CÁCH HOẠT ĐỘNG CỦA GIAO THỨC SIP

Chương 2 : CÁCH HOẠT ĐỘNG CỦA GIAO THỨC SIP
I. Mô hình hoạt động của SIP:
SIP hoạt động dựa trên sự trao đổi các SIP Messages. SIP Message gồm 2 phần là SIP Request và SIP Response. 1 SIP Request cùng với tất cả SIP Response kết hợp với nó được gọi là 1 transaction. Cũng tương tự như HTTP, khi bạn kết nối 1 web site, trình duyệt của bạn gởi đi 1 HTTP request bao gồm địa chỉ của trang web mà bạn muốn nhìn thấy. HTTP Server chứa website nhận được request và tạo ra 1 response bao gồm nội dung của trang web và hiển thị trên trình duyệt.
SIP requests bắt đầu từ  1 UAC  đến 1 hoặc nhiều UAS,  SIP responses cũng tương tự nhưng theo cách ngược lại từ UAS đến UAC.
P2_ModeofOperation.png
II. SIP Responses:
1 Response là 1 status code (mã trạng thái) có 3 chữ số. Số đầu tiên định nghĩa loại response, số đầu tiên là 1 đó là provisonal response, các số khác được gọi chung là final response.
p2_table_Response.png
Không giống như HTTP, trong SIP, 1 request có nhiều response. Bất kỳ request nào cũng phải có ít nhất 1 final repsonse và có thể có nhiều provisional responses.
p2_SipResponse.png
III. SIP Requests:
Có 6 loại SIP Request thông dụng : REGISTER, INVITE, ACK, CANCEL, BYE, OPTIONS.
a. REGISTER:
Register request được sử dụng bởi UA  để thực hiện thủ tục đăng ký. UAC xây dựng một Register request bao gồm các thông tin sau:
- Address of Record (AOR) được biểu diễn dưới dạng 1 SIP URI trong To header ( trường đầu đề ).
Ví dụ :
To : sip:khangdang@niit.com
To: Khang Dang < sip:khangdang@niit.com>
- Contact Address của UA được biễu diễn dưới dạng 1 SIP URI trong Contact header.
Ví dụ:
Contact: sip:thanhnguyen@214.25.100.2
Contact: Thanh Nguyen <sip:thanhnguyen@214.25.100.2>
Ví dụ : KhangDang muốn đăng ký đến location service. KhangDang phải cung cấp địa chỉ contact của mình và gởi đến registrar server để đăng ký. Địa chỉ của Registrar server cũng được biểu diễn dưới dạng SIP URI như sip:registrar.university.com.vn
p2_REGISTRAR.png
Trong mô hình trên Registrar kết hợp với location service trên cùng 1 server. Khi Registrar  vừa nhận được REGISTER request, sẽ phản hồi bằng "180 provisional" (cũng là "180 Ringing") response với ý nghĩa đã nhận được và chờ xử lý, khi xử lý và đăng ký thành công, Registrar phản hồi "200 OK" response.
Sự lưu trữ trên Location Server có thời gian tồn tại nhất định, nếu bạn muốn được lưu trữ theo ý muốn bạn sử dụng Expires header trong REGISTER request. Trường Expires được sử dụng trong tất cả các Request để chỉ ra khoảng thời gian mà request hay message content là hợp lệ.
Ví dụ:
Expires : 60 (kể từ lúc đăng ký đến 60 giây)
Expires: 15 Sep 2013 00:00:00 GMT (hạn dùng là 15 tháng 9 năm 2013)
b. INVITE:
Một UAC tạo ra 1 INVITE Request để khởi tạo 1 session với UAS.  Request này có thể được gởi trực tiếp từ UAC đến UAS hay phải qua 1 hay nhiều proxy mà giúp định tuyến request này.
Một khi UAS nhận được request, nó tạo ra một vài provision response để thông báo tuyến trình của cuộc gọi. Ví dụ, reponse có mã trạng thái 180 chỉ ra đang cố gắng gởi đến UAS. Nếu UAS đã nhận được, 1 final response có mã trạng thái 200 OK được tạo ra và phản hồi đến UAC.
Lưu ý, SIP chỉ truyền tín hiệu giữa UAC và UAS, còn việc trao đổi media stream đó là nhiệm vụ của Real-time Transport Protocol (RTP) và Sesson Description Protocol (SDP) – các bạn đừng quá lo lắng, RTP và SDP không quá khó hiểu, chúng ta sẽ tìm hiểu nó trong những chương sau. SIP Request có thể dính kèm theo SDP,  SDP từ UAC này được gọi là “SDP offer” . Ví dụ, bạn muốn trao đổi voice hay video, thì UAC và UAS  phải có cùng codecs, UAC và UAS cũng phải cung cấp địa chỉ IP, Port để trao đổi media stream. Codec, IP, Port sẽ được miêu tả trong SDP, sau đó RTP có trách nhiệm truyền các media stream.
Ví dụ, KhangDang muốn thực hiện voice chat đến ThanhNguyen, các thông số được kèm theo trong SDP:
- Media types : voice.
- Codec : Pulse Code Modulation -PCM
-IP và Port của KhangDang  để thực hiện voice : 23.17.32.16:4000.
1 final response 200 OK được phản hồi nếu ThanhNguyen nhận được thành công, trong response này cũng chứa 1 SDP của ThanhNguyen, SDP này được gọi là “SDP anwser” bao gồm các thông số sau:
- Media types : voice
- Codec : PCM
- IP và Port của ThanhNguyen để thực hiện voice là : 45.23.2.5:3000.
P2_InviteRequest.png
Một INVITE request cũng có thể được gởi đi khi một cuộc đối thoại đang được thực hiện, trong trường hợp này bạn có thể xem INVITE request mới này là 1 re-INVITE. Thông thường re-INVITE được sử dụng để chỉnh sửa hay bổ sung các thông số kỹ thuật của 1 session đang tồn tại (bạn sẽ hiểu sâu hơn về re-INVITE trong chương 13 ). Ví dụ, KhangDang  đang voice chat với ThanhNguyen, trong lúc này KhangDang  muốn ThanhNguyen mở webcam để thấy mặt nhau. Trong trường hợp này, KhangDang phải gởi 1 INVITE mới trong một cuộc đối thoại đang tồn tại để bổ sung vào SDP thành phần miêu tả tính năng video thì INVITE mới này được xem là re-INVITE. SDP thay đổi như sau :
- Media types : voice và video
- codecs dành cho voice : AMR
- codecs dành cho video : H.261
- IP và  Port của Alice để thực hiện voice : 23.17.32.16:4000.
- IP và Port của Alice để thực hiện video : 23.17.32.16:5000.
c. ACK :
ACK Request được sử dụng để xác nhận rằng UAC đã nhận được final response từ 1 INVITE request. Tức là, sau khi UAC nhận được final response, nó sẽ tự tạo ra 1 request để thông báo với UAS rằng UAC đã nhận được final response, request này được gọi là ACK.  
d. CANCEL:
UAC tạo ra 1 CANCEL request để hủy bỏ 1 INVITE request đang chờ xử lý. Ví dụ, KhangDang gọi ThanhNguyen, vì thế UA của KhangDang tạo ra 1 INVITE requset.  Khi INVITE được nhận bởi UA của ThanhNguyen, nó gởi "180 Ringing" response và gởi đến KhangDang.  ThanhNguyen không tiếp nhận cuộc gọi này trong khi Alice vẫn chờ và Alice quyết định gác máy. Để gác máy, KhangDang đã gởi 1 CANCEL request đến ThanhNguyen. Khi CANCEL request này được tiếp nhận bởi UA của ThanhNguyen, UA sẽ dừng chuông báo và cuộc gọi được hủy bỏ. Đồng thời, UA của ThanhNguyen tạo ra 2 response phản hồi CANCEL request : 200 OK response (dành cho CANCEL request) và 487 “Request terminated” response (dành cho INVITE request).
e. BYE:
BYE Request được sử dụng để kết thúc 1 media session đang được thực hiện. BYE Chỉ được gởi bởi các UA đang tham gia trong media session. Ví dụ, KhangDang và ThanhNguyen đang thực hiện voice chat với nhau, một lúc sau KhangDang (hoặc ThanhNguyen) muốn kết thúc ,chỉ cần gởi 1 BYE Request để kết thúc cuộc trò cuộc này.
f. Options:
OPTIONS Request được sử dụng để truy vấn về tính năng thực hiện session media của  1 UA hay Server , đồng thời khám phá những tính năng có sẵn của nó. OPTIONS được sử dụng khi muốn tìm hiểu các thông tin về phương thức hổ trợ, codec,….

3 nhận xét: