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.
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.
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.
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
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.
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,….
Like =))
Trả lờiXóalike
Trả lờiXóahay bạn ơi
Trả lờiXóa