Thứ Ba, 5 tháng 8, 2014

[JAIN SIP] Chương 1 : Giới thiệu SIP

Chương 1 : Giới thiệu SIP
Khi bạn chat  message, vioce chat hay webcam  trong Y!M hay SKY để thực hiện cuộc trò chyện trên Internet, các lập trình viên của Y!M hay SKY đã sử dụng giao thức SIP để cho ra đời những tính năng đó. SIP được xem là một giao thức thế hệ mới rất mạnh mẽ trong việc trao đổi qua mạng. Chúng ta hãy bắt đầu tìm hiểu về SIP.
I. Sip là gì ?
SIP là viết tắt của cụm từ “Session Initiation Protocal”, là một giao thức truyền tín hiệu ở tầng  ứng dụng  (application-level) và được định nghĩa bởi IETF. SIP được sử dụng để tạo và quản lý các session thông qua mạng IP. Thuật ngữ “Session” là một phiên làm việc trong quá trình trao đổi media (voice, video,….).
SIP làm việc cùng các giao thức khác trong tầng ứng dụng để nhận dạng và truyền session media. Sự nhận dạng và thỏa thuận về media được thực hiện với Session Description Protocol (SDP).  Đối với việc truyền các media stream (voice, video), SIP kết hợp Real-time Transport Protocol (RTP) hay Secure Real-time Transport Protocol (SRTP). Còn bảo mật trong quá trình truyền các thông điệp thì được mã hóa bởi Transport Layer Security (TLS).
SDP được sử dụng để miêu tả các loại media session nhằm mục đích thông báo, mời gọi và thỏa thuận  về các tham số dành cho một session.  Do đó, để tạo ra một session, một  SIP message luôn mang theo SDP mà cho phép các bên tham gia đồng ý thiết lập một vài các thông số cần thiết vể trao đổi media, cũng như kiểu media, địa chỉ truyền tải,…
Tóm lại, nhiệm vụ của SIP là liên kết các peer lại với nhau, nó kết hợp với SDP để miêu tả về tính năng media sẽ thực hiện sau đó. Còn việc thực hiện các tính năng media là nhiệm vụ của giao thức khác.    
II. SIP Addressing (địa chỉ của SIP):
Trong SIP, mỗi người dùng đều có 1 SIP URI tương ứng , đó được gọi là địa chỉ của SIP.
Có dạng như sau:
p1_table_SipAddress.png
Trong đó:
- Mỗi địa chỉ SIP URI, đầu tiên bắt buộc phải có bổ ngữ sip.
- Phần người dùng (không bắt buộc) gồm có :  username và password.
- Phần host (bắt buộc)  phải khai báo để có thể trao đổi media session.
Ví dụ : sip:khang.dang@niit.com, sip:khang:34632@112.167.4.9:2008, sip:43.67.23.12, ....
III. Các thành phần của SIP:
Các thành phần của SIP bao gồm :
- User Agents (UAs)
- Registras
- Proxies
- Back-to-Back User Agents (B2BUSs)
1. User Agents :
Một SIP User Agent (UA) bao gồm 2 thành phần : User Agent Client (UAC) và User Agent Server (UAS).
- Nhiệm vụ của UAC : tạo ra các SIP request gởi cho UAS và  nhận các response được gởi từ UAS .
- Nhiệm vụ của UAS : nhận các SIP request  được gởi từ UAC và tạo ra các response gởi cho UAC.
G:\Tailieu\JAva\tutorialSIP\blog Sip\picutre\p1_UA.png
UAC và UAS của 1 UA không bao giờ liên lạc với nhau, nên nói "UAC gởi request đến UAS" thì bạn phải hiểu UAC thuộc UA1 và UAS thuộc UA2 , cũng như nói "UAS gởi reponse đến UAC" thì bạn cũng phải hiểu UAS và UAC  thuộc 2 UA khác nhau.
SIP UA là bộ phận quan trọng của 1 ứng dụng về truyền media.  SIP UA được thực hiện trong nhiều cách khác nhau, có thể là:
- Một phần mềm chạy trên PC.
- Một ứng dụng trên mobile phone.
- Một trạng thái nào đó trong network server : gởi phản hồi tự động khi có yêu cầu, tự động gởi media  chúc mừng sinh nhật,….
2.  Registrar :
Registrar là một server mà chấp nhận các registration request từ các UA. UA cung cấp địa chỉ hiện tại của nó trong resgistration request gởi đến Registrar Server. Mỗi UA phải được đăng ký trước khi nó có thể gởi và nhận media . Khi registrar nhận registration request, nó lấy một số thông tin và lưu vào trong 1 cơ sở dữ liệu được gọi là Location Service.
Tức là, Registrar là 1 SIP endpoint mà nhận các registration request và đưa các thông tin nó nhận được trong request này vào location service để xử lý.
3. Location Service:
Location Service là một cơ sở dữ liệu mà chứa một tập danh sách được ánh xạ giữa Adresses of Record (AORs – địa chỉ công khai của UA) và Contact Addresses (địa chỉ IP của UA).
Khi Registrar nhận một registration request từ một UA, registrar sẽ đưa thông tin nó nhận được vào Location Service. Location service liên hệ với Proxy Servcers chỉ ra domain chính xác để lấy về thông tin địa chỉ mà có thể được thực hiện cuộc gọi đến người dùng.
Ví dụ:
G:\Tailieu\JAva\tutorialSIP\blog Sip\picutre\p1_table_LocationService.png
locationservice.png
4. Proxy Server :
* Chức năng của Proxy Server trong Internet :
Một số hãng và công ty sử dụng proxy với mục đích: Giúp nhiều máy tính truy cập Internet thông qua một máy tính với tài khoản truy cập nhất định, máy tính này được gọi là Proxy server. Chỉ duy nhất máy Proxy này cần modem và account truy cập internet, các máy client (các máy trực thuộc) muốn truy cập internet qua máy này chỉ cần nối mạng LAN tới máy Proxy và truy cập địa chỉ yêu cầu. Những yêu cầu của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp, tại điểm trung gian này công ty kiểm soát được mọi giao tiếp từ trong công ty ra ngoài internet và từ internet vào máy của công ty. Sử dụng Proxy, công ty có thể cấm nhân viên truy cập những địa chỉ web không cho phép, cải thiện tốc độ truy cập nhờ sự lưu trữ cục bộ các trang web trong bộ nhớ của proxy server và giấu định danh địa chỉ của mạng nội bộ gây khó khăn cho việc thâm nhập từ bên ngoài vào các máy của công ty.
Đối với các nhà cung cấp dịch vụ đường truyền internet: Do internet có nhiều lượng thông tin mà theo quan điểm của từng quốc gia, từng chủng tộc hay địa phương mà các nhà cung cấp dịch vụ internet khu vực đó sẽ phối hợp sử dụng proxy với kỹ thuật tường lửa để tạo ra một bộ lọc gọi là firewall proxy nhằm ngăn chặn các thông tin độc hại hoặc trái thuần phong mỹ tục đối với quốc gia, chủng tộc hay địa phương đó. Địa chỉ các website mà khách hàng yêu cầu truy cập sẽ được lọc tại bộ lọc này, nếu địa chỉ không bị cấm thì yêu cầu của khách hàng tiếp tục được gửi đi đến các DNS server của các nhà cung cấp dịch vụ. Firewall proxy sẽ lọc tất cả các thông tin từ internet gửi vào máy của khách hàng và ngược lại.
* Chức năng của Proxy Server trong SIP:
Tương tự như chức năng của Proxy Server trong Internet, Proxy Server trong SIP là một thực thể trung gian, vai trò chính của proxy là định tuyến, nghĩa là bảo đảm một request sẽ được gởi đến người dùng. Proxy Server có thể được dùng  để kiểm tra, thống kê, tìm đường truyền kế tiếp, hoặc một chính sách bắt buộc nào đó,….
Có nhiều loại Proxy khác nhau trong SIP, nhưng 2 loại Proxy thường được nhắc đến là : outbound proxy và inbound proxy.
+ Outbound Proxy : Outbound Proxy giúp đỡ UAC để định tuyến các request đi ra từ UAC. UAC thường được cấu hình truyền các request của nó đến một outbound proxy.
+ Inbound Proxy : định tuyến các request đi ra từ Inbound proxy, sẽ trực tiếp đến UAS. Khi Inbound proxy nhận một request yêu cầu gởi đến 1 user, đầu tiên inbound proxy sẽ truy cập Location Service để xác định contact address của user, sau đó mới  gởi trực tiếp đến user.  
G:\Tailieu\JAva\tutorialSIP\blog Sip\picutre\OutInBoundProxy.png
5. Forking :
Forking của SIP request có nghĩa là nhiều session media có thể được thực hiện từ 1 request duy nhất. Đây là 1 tính năng mạnh mẽ của SIP.
Với SIP Forking, bạn có thể đăng ký 1 Address of Record với nhiều Contact Adress trong location service.
Khi có 1 request gởi đến inbound proxy để thực hiện cuộc gọi, nếu proxy tìm thấy nhiều địa chỉ contact  khác nhau thì nó sẽ đưa ra 1 thuật toán để cố gắng liên lạc với các địa chỉ contact khác nhau. Có 2 thuật toán được sử dụng :
+ Sequential search (tìm tuần tự) : proxy cố gắng tìm lần lượt từng vị trí, vị trí này xong đến vị trí khác.
+ Parallel search (tìm song song) : proxy sẽ tìm tất cả các vị trí cùng lúc.
G:\Tailieu\JAva\tutorialSIP\blog Sip\picutre\sequentialSearch.png
G:\Tailieu\JAva\tutorialSIP\blog Sip\picutre\paralledSearch.png
6. Redirect Server:
Redirect Server là UAS mà nhận request từ  UAC và tự động tạo ra các responses gởi đến UAC. Các reponses này hướng dẫn UAC tạo ra request mà có thể liên lạc với 1 tập các địa chỉ thay thế.
redirectserver.png
7. Back-to-Back User Agents (B2BUA):
Một B2BUA là một server mà nhận 1 request, sau đó tính toán lại request đó và gởi nó đi dưới dạng 1 request mới. Các Response phản hồi lại request mới này cũng được tính toán lại và gởi đi theo hướng ngược lại. B2BUA quản lý từ lúc bắt đầu cho đến khi kết thúc.
B2BUA được sử dụng để cung cấp những tính năng nâng cao, ví dụ dịch vụ nặc danh, ẩn thông tin người gọi….
IV. Cấu trúc giao thức SIP:
Giao thức SIP hoạt động dưới dạng một tập hợp các bước xử lý độc lập riêng lẽ nhau, những bước xử lý này được gọi là Layer (lớp). Chúng ta đã từng biết qua một vài các giao thức nổi tiếng cũng hoạt động theo mô hình Layer như bộ giao thức TCP/IP.  Tuy nhiên, SIP cũng chỉ là 1 giao thức nằm trong  bộ giao thức TCP/IP.
Lưu ý: Trong chương này, khi nói đến  Layer thì bạn phải hiểu đó là Layer của giao thức SIP.
* Các layer của giao thức SIP:
- SIP Syntax and encoding : là layer thấp nhất được định nghĩa trong SIP. Nó là một tập các quy tắc mà định nghĩa về sự định dạng và cấu trúc của mỗi SIP Message. Nói đơn giản là nó cho các thực thể hiểu và biên dịch các SIP message. Ví dụ, khi UA nhận được 1 SIP Message, thì UA cần phải biết sự khác nhau giữa các loại message, các tham số bắt đầu và kết thúc của mỗi header,... Đó là nhiệm vụ của Syntax and encodeing layer.
- SIP transport layer: nó định nghĩa UAC gởi request và nhận response như thế nào và UAS nhận request và gởi response như thế nào thông qua mạng. Tất cả các thực thể SIP đều phải có transport layer.  Nó có hai thành phần: client transport (dành cho UAC) , và server transport (dành cho UAS).
- SIP transaction layer:  là bộ phận chủ yếu của SIP. 1 Transaction được định nghĩa là một request được gởi từ UAC đến UAS và tất cả các reponse được kết hợp với request này. Nhiệm vụ của transaction layer là quản lý sự truyền lại của tất cả các response liên quan đến request, và thời gian chờ đợi. Chỉ UA và stateful porxy (chúng ta sẽ tìm hiểu trong phần sau) có transaction layer. Nó có 2 thành phần: client transaction (dành cho UAC) và server transaction (dành cho UAS).
-SIP core layer: đó là tất cả các thực thể của SIP : UAC, UAS, registrar, stateful proxy (chúng ta sẽ tìm hiểu trong những chương sau), stateless proxy.
---------------- kết thúc chương 1  -----------

1 nhận xét: