II. So sỏnh chuyển mạch mềm và chuyển mạch truyền thống
5.5.2. Kiểu và độ dài thõn bản tin
Kiểu truyền thụng của thõn bản tin được chỉ ra bởi trường tiờu đề Content- type. Nếu thần bản tin đó qua mó húa thỡ nú được chỉ ra bởi trường tiờu đề Content- Encodin. Tập hợp cỏc ký tự của thõn bản tin được chỉ ra bởi giỏ trị trường tiờu đề Content-Type.
Độ dài của thõn bản tin ~message Body Length) được tớnh theo byte và được đa ra bởi trường tiờu đề Content-length.
5.2. KHUễN DẠNG CỦA BẢN TIN SIP
Khi SLP được truyền thụng qua giao thức UDP với sự xỏc thực và một miờu tả phiờn phức tạp thỡ độ dài của một yờu cầu hay một đỏp ứng SIP sẽ lớn hơn MTU. Để giải quyết vấn đề này, khuụn dạng thoả thuận của SIP được định nghĩa
bằng cỏch sử dụng cỏc từ viết tắt cho cỏc trường tiờu đề chung. Cỏc định nghĩa viết tắt được miờu tả ở bảng sau
Bảng :Cỏc từ viết tắt cho tiờu đề chung
Tờn trường ngắn Tờn trường dài
C Content-Type E Content-Encoding F From I Cau-ID M Contact L Content-length S Subject T To V Via
Ở đõy Client cú thể dựng cả tờn trường ngắn và tờn trường dài trong cựng một yờu cầu và Server cũng chấp nhận điều đú.
Chương VI: HOẠT ĐỘNG CỦA CÁC THÀNH PHẦN SIP
Như đó trỡnh bày ở đầu phần này, khi xột trờn quan điểm Oient/server thỡ hệ thống SIP gồm cỏc thành phần chớnh như hỡnh 5. 1 . Mục này tiến hành phõn tớch quỏ trỡnh xử lý hoạt động của cỏc thành phần trong hệ thống SIP.
6.1 Hoạt động của SIP Client và SIP Server
SIP cú thể sử dụng cả hai giao thức TCP và UDP làm giao thức truyền. Tuỳ theo loại dữ liệu và yờu cỏu về độ tin cậy của phiờn truyền thụng đú mà TCP hay UDP được sử dụng.
Yờu cầu (Request)
Server loại bỏ những yờu cầu giống nhau và truyền lại cỏc đỏp ứng thớch hợp. Sau khi nhận được một yờu cầu CANCEL từ thiết bị Upstream Client, một Proxy Server sẽ gửi một yờu cầu CANCEL tới tất cả cỏc nơi mà nú cha nhận được đỏp ứng cuối cứng.
Khi một UA nhận được một yờu cỏu, nú sẽ kiểm tra lại trường Cau-ID dựa trờn cuộc gọi đang diễn ra. Nếu nh Cau-ID được tỡm thấy nú sẽ so sỏnh giỏ trị thẻ (tag) của trường "To" với thẻ của User. UA sẽ từ chối yờu cầu nếu nh hai giỏ trị đú khụng giống nhau. Nếu giỏ trị của tiờu đề From (kể cả giỏ trị tag) giống với giỏ trị From của cuộc gọi hiện tại , Server sẽ so sỏnh giỏ trị của trường tiờu đề "Cseq". Nếu giỏ trị đú nhỏ hơn hoặc bằng giỏ trị Cseq hiện tại thỡ yờu cầu đú là một yờu cầu phỏt lại. Nếu giỏ trị đú lớn hơn thỡ đú là một yờu cầu mới. Nếu nh tiờu đề "From" khụng giống với tiờu đề "From" của cuộc gọi hiện tại, cú nghĩa một cuộc gọi mới được thiết lập.
Nếu giỏ trị Cau-ID khụng tỡm thấy, một cuộc gọi mới được thiết lập với cỏc giỏ trị được ghi vào cỏc trường tiờu dề To, From và Cau-ID. Trong trường hợp này, trường tiờu đề To khụng chứa một thẻ (tag) địa chỉ nào. Server trả lại một đỏp ứng
chứa cựng một giỏ trị của trường To nhưng chỉ một thẻ địa chỉ duy nhất được thờm vào. Thẻ địa chỉ cú thể được bỏ qua nếu yờu cầu chỉ chứa một trường tiờu đề Via.
Đỏp ứng {Respouse)
Một Server cú thể đa ra một hay nhiều đỏp ứng tạm thời trước khi nú gửi đỏp ứng cuối cựng. Trong khoảng thời gian 200 ms, nếu một Stateful Proxy, UAS, Redirect Server hay Registrar Server khụng thể đa ra một đỏp ứng cuối cứng cho yờu cầu, ngay lập tức nú sẽ phỏt ra một đỏp ứng tạm thời loại lxx. Stateless Proxy khụng thể tự phỏt cỏc đỏp ứng tạm thời cho bản thõn chỳng.
Cỏc đỏp ứng được ỏnh xạ đến cỏc yờu cầu bằng cỏch so sỏnh giỏ trị cỏc trường tiờu đề To, From, Cau-ID, Cseq và cỏc thụng số phụ của trường tiờu đề Via đầu tiờn. Nếu như trường tiờu đề Via chỉ ra rằng Upstream Server sử dụng giao thức truyền Ta thỡ eroxy phải nhanh chúng mở một kết nối TCP tới địa chỉ đú. như vậy, cỏc Proxy phải được xử lý đặc biệt dể nhận cỏc yờu cầu đến từ cỏc kết nối TCP thụ động mặc dự hầu hết cỏc đỏp ứng dều sẽ đến một kết nối TCP chủ động. Một kết nối TCP chủ động (Active TCP Connection) là một kết nối TCP được khởi tạo bởi Proxy cũn một kết nối TCP thụ động là một kết nối được chấp nhận bởi Proxy nhưng được khởi tạo bởi thực thể khỏc:
Đỏp ứng 100 khụng được gửi đi cũn cỏc đỏp ứng 1 xx khỏc cú thể được gửi sau khi Server loại bỏ cỏc đỏp ứng mà mó trạng thỏi đó được gửi đi trước đú. Đỏp ứng 2xx được gửi đi theo tiờu đề Via. Khi Stateful Proxy nhận được một đỏp ứng 2xx nú phải gửi đi một đỏp ứng cuối cựng khụng phải là loại 2xx. Cỏc đỏp ứng với trạng thỏi 300 và lớn hơn được phỏt lại bởi cỏc Stateful Proxy cho đến khi upstream Proxy tiếp theo gửi đi một yờu cầu ACK hay CANCEL.
Một Stateful Proxy phải duy trỡ trạng thỏi ất nhất là 32 giõy kể từ khi nhận được đỏp ứng Non-200 đầu tiờn để điều khiển việc phỏt lại cỏc đỏp ứng. 32 giõy là khoảng thời gian phỏt lại lớn nhất của một đỏp ứng 200, được dựng mặc định trong
trường hợp yờu cầu ACK bị mất trờn đờng tới UA bị gọi hoặc Stateful Proxy tiếp theo.
Địa chỉ nguồn, địa chỉ đớch và cỏc kết nối
Kết nối UDP đơn hớng: cỏc đỏp ứng được trả lại địa chỉ được chỉ ra trong trường tiờu đề Via (khụng cú địa chỉ nguồn của đỏp ứng). Với cuộc gọi về cỏc đỏp ứng khụng được phỏt ra bởi Next-hop Stateless Server mà được phỏt ra bởi một Proxy Server hoặc UAS. Do đú, Stateless Proxy cú thể chỉ sử dụng trường tiờu đề Via để gửi cỏc đỏp ứng.
Kết nối UDP đa hớng: yờu cầu đa hớng cú thể đặc trng cho Host và khụng phụ thuộc vào trường Request-uri. Yờu cầu đa hớng phải đảm bảo rằng nú khụng ra khỏi phạm vi của hệ thống quản lý. Điều này được thực hiện bởi TTL hay phạm vi quản lý tựy theo sự thực hiện của nú trong mạng. Một Client nhận được một yờu cầu đa hớng khụng phải kiểm tra xem thành phần Host của trường Request-url cú giống với Host hay tờn vựng của nú khụng. Nếu yờu cầu nhận được là yờu cầu đa hớng thỡ đỏp ứng trở lại cũng phải là đỏp ứng đa hướng. Đỏp ứng cho cỏc yờu cầu đa hớng được phỏt nhiều hớng với cựng thụng số ớng đợc phát nhiều hớng với cùng thông số TTL nh trong yờu cầu. TRL được lấy ra từ thụng số TTL trong trường tiờu đề Via.
Kết nối TCP: một kết nối TCP đơn cú thể phục vụ một hay nhiều giao dịch SIP. Một giao dịch SIP khụng chứa hay chứa nhiều đỏp ứng tạm thời theo sau là một hay nhiều đỏp ứng cuối cựng. Client cú thể kết nối khi mà đỏp ứng cuối cựng đầu tiờn tới. Nếu Client đúng hoặc xỏc lập lại kết nối TCP u tiờn để nhận được cỏc đỏp ứng cuối cựng đầu tiờn, Server sẽ coi hoạt động này nh một yờu cầu CANCEL. Hoạt động này phải được hạn chế vỡ cú thể khiến Client làm việc sai chức năng dẫn đến một Proxy Server sẽ chiếm giữ một kết nối vụ thời hạn. Server khụng được đúng kết nối TCP cho đến khi nú gửi đi một đỏp ứng cuối cựng. Tuy nhiờn, bỡnh thường thỡ aient chịu trỏch nhiệm đúng kết nối. Nếu nh một Server muốn trả lại
một đỏp ứng cho Client mà khụng muốn mở một kết nối dành cho Client đú thỡ nú sẽ mở một kết nối khỏc tới danh sỏch địa chỉ trong trường Via. Theo cỏch đú một Proxy hay UA phải được xử lý đặc biệt để nhận cả cỏc yờu cầu và đỏp ứng trong cựng một kết nối thụ động.
6.2 Hoạt động của Proxy Server, Location Server và Redirect Server
Proxy Server cú thể kết nối theo kiểu nhỏnh, một yờu cầu vào cú thể cho sinh ra nhiều yờu cầu ra tới Client. Proxy Server cú thể là một Stateful Proxy hay là một
Stateless Proxxy. Khi là Stateful, Proxy Server thực hiện nhận một yờu cầu cho việc tạo ra và phỏt đi cỏc yờu cầu sinh ra từ yờu cầu đú. Nếu là Stateless, Proxy Server bỏ qua tất cả cỏc thụng tin mỗi khi yờu cầu được phỏt.
Stateful Proxy hoạt dộng nh một UAS/UAC ảo. Nó thực hiện chức năng Server khi nhận cỏc yờu cầu và thực hiện chức nàng Client cho việc phỏt đi cỏc yờu cầu, ngoại trừ việc nhận đỏp ứng 2xx cho yờu cầu INVITE.
Stateless Proxy hoạt động khụng giống nh UAS hay UAC ảo. Stateless Proxy chuyển cỏc yờu cầu nú nhận được từ cỏc thực thể Downstream đờng xuống) và chuyển cỏc đỏp ứng mà nú nhận được từ thực thể Upstream (đờng lờn).
1. Proxy Request
Để trỏnh lặp lại, một Server phải kiểm tra xem địa chỉ của nú cú thực sự nằm trong trường tiờu đề Via của yờu cầu đến khụng. Cỏc giỏ trị của trường To, From, Call-ID và Contact đều được sao chộp chớnh xỏc từ yờu cầu ban đầu. Proxy cú thể thay đổi trường Request-url để thụng bỏo cho Server nơi nú muốn gửi yờu cầu đến. Một Proxy Server bao giờ cũng chốn một trường tiờu đề Via chứa địa chỉ của chớnh nú vào cỏc yờu cầu.
Proxy chỉ xử lý một đỏp ứng khi mà trường Via cao nhất phự hợp với một trong cỏc địa chỉ của nú. Nếu khụng đỏp ứng đú sẽ bị dừng lại cú nghĩa nú khụng được xử lý.
3 . Slaleless Proxy .
Một Stateless Proxy sẽ loại bỏ trường Via của chớnh nổ và kiểm tra địa chỉ trường Via tiếp theo. Trong trường hợp giao thức truyền là UDP, đỏp ứng được gửi đến địa chỉ được liệt kờ trong thẻ "maddar" nếu chỳng cú mặt, nếu khụng nú gửi đến địa chi liệt kờ trong trường "received" nếu chỳng cú mặt và cuối cựng được gửi đến địa chỉ trong trường "sent-by". Proxy vẫn giữ nguyờn trạng thỏi "statefull" khi thiết lập yờu cầu nhận thụng qua TCP. Stateless Proxy khụng được phỏt ra yờu cầu tạm thời.
4. Statefull Proxy
Khi một Statefull Proxy nhận được một yờu cầu, nú sẽ kiểm tra trường To, From, Call-ID và Cseq dựa vào bản ghi của yờu cầu hiện tại. Nếu khụng cú mặt yờu cầu tơng ứng với một Giao dịch- mới và yờu cầu được ủy quyền. Một Statefull Proxy Server cú thể phỏt đỏp ứng tạm thời 1 xx.
Location Server
Location Server thực hiện việc định vị thuờ bao, nổ cung cấp vị trớ của cỏc thành viờn tham gia phiờn truyền thụng. Vị trớ đú được Location Server cung cấp cho cỏc thành phần khỏc của hệ thống SIP nh Proxy Server và Redirect Server.
Redirect Server
Một Redirect Server khụng thể phỏt ra cỏc yờu cầu SIP cho chớnh nú. Sau khi nhận được một yờu cầu khỏc yờu cầu CANCEL, nó thu thập cỏc vị trớ thay đổi nhờ thụng tin từ Location Server và trả lại một đỏp ứng cuối cựng loại 3xx hoặc là từ chối yờu cầu. Với cỏc yờu cầu CANCEL cú khuụn dạng hợp lệ, nú cú thể trả 'lại một đỏp ứng 2xx.
Đỏp ứng này sẽ kết thỳc phiờn giao dịch SIP. Redirect Server sẽ duy trỡ trạng thỏi giao dịch trong suốt phiờn giao dịch SLP.
6.3 Hoạt động của UA (User Agent)
Phần này mụ tả cỏc nguyờn tắc mà UAC và UAS dựng để tạo ra và xử lý cỏc yờu cầu hay đỏp ứng.
Chủ gọi phỏt yờu cầu LNVITE
Khi UAC muốn khởi tạo một cuộc gọi, nú sẽ da ra một yờu cầu INVITE. Trường To trong yờu cầu chứa địa chỉ của bị gọi, trường Request-uri chứa cựng địa chỉ đú. Trường From chứa địa chỉ của chủ gọi. Nếu địa chỉ From cú thể xuất hiện trong yờu cầu phỏt ra từ cỏc UAC khỏc cho cựng một cuộc gọi thỡ phớa chủ gọi phải đa thờm thụng số "tag" vào trong trường From. UAC cú thể nhập thờm trường Contact chứa một địa chỉ mà nú muốn kết nối sau khi phớa bị gọi giải phúng hội thoại với chủ gọi.
Bị gọi trả lời
Khi bị gọi nhận được yờu cầu LNVITE, thỡ bị gọi cú thể chấp nhận, gửi lại hay từ chối cuộc gọi. Trong tất cả cỏc trường hợp đú nú đều phải phỏt ra đỏp ứng. Đỏp ứng này phải lấy cỏc giỏ trị trong trường To, From, Call-id, Cseq và Via từ yờu cầu. Thờm vào đú đỏp ứng UAS phải bổ sung tham số "tag" vào trường To của đỏp ứng nếu yờu cầu chứa nhiều hơn một trường tiờu đề Via. UAS cú thể thờm một trường tiờu đề Contact vào đỏp ứng. Nó chứa một địa chỉ mà phớa bị gọi muốn kết nối cho giao dịch tiếp theo bao gồm cả ACK cho INVLTE hiện tại. UAS lưu giữ giỏ trị của trường To và From kể cả cỏc thẻ "tag". Chỳng sẽ trở thành địa chỉ nội hạt hay địa chỉ xa của cỏc cuộc gọi tơng ứng.
Đối với một yờu cầu INVITE cú rất nhiều đỏp ứng cú thể đến cựng một UAC. Cỏc đỏp ứng được phõn biệt nhau bởi tham số "tag" trong trường tiờu dề To đại diện cho từng cuộc gọi riờng. Chủ gọi cú thể chấp nhận hay kết thỳc với mỗi đỏp ứng UAS. Để chấp nhận nú gửi một yờu cầu ACK cũn để kết thỳc nú gửi một yờu cầu BYE. Trường tiờu đề To và From trong yờu cầu ACK hay BYE phải giống trường tiờu đề To và From trong đỏp ứng 200 OK (bao gồm cả giỏ trị tng). Trường Request-uri của ACK hay BYE cú thể thiết lập bất cứ địa chỉ nào được tỡm thấy trong trường tiờu đề Contact của đỏp ứng 200 OK nếu nú tồn tại. Lần lượt UAC sẽ sao chộp cỏc địa chỉ từ trường tiờu đề To vào Request-uri. UAC cũng lưu ý đến giỏ trị của trường tiờu đề To và From trong mỗi đỏp ứng. Với mỗi cuộc gọi trường tiờu đề To sẽ trở thành địa chỉ xa cũn trường tiờu đề From sẽ là địa chỉ nội hạt.
Cỏc yờu cầu đa ra tiếp theo
Khi một cuộc gọi được thiết lập cả phớa chủ gọi hoặc bị gọi đều cú thể phỏt ra yờu cầu INVITE hay BYE để thay đổi hay kết thỳc cuộc gọi. Khụng chỳ ý đến bị gọi hay chủ gọi phỏt yờu cầu mới, trường tiờu đề trong yờu cầu được thiết lập như sau: Với mỗi cuộc gọi giỏ trị trường tiờu đề To sẽ được thiết lập thành địa chỉ xa cũn giỏ trị trường tiờu đề From sẽ thành địa chỉ nội bộ. Trường tiờu đề Contact cú thể khỏc với trường tiờu đề Contact được gửi đi trong yờu cầu hay đỏp ứng trước đú. Trường Request-uri thiết lập với giỏ trị của trường tiờu đề Contact nhận được trong một yờu cầu hay đỏp ứng trước đú từ một thành viờn xa hoặc tới giỏ trị của một địa chỉ xa.
Khi nhận được một yờu cầu, cỏc kiểm tra sau được thực hiện:
Nếu nh Call-ID là mới, yờu cầu đú là cho cuộc gọi mới. Khụng chỳ ý đến giỏ trị của trường tiờu đề To và From .
Nếu Call-ID đó tồn tại, yờu cầu đú là dành cho cuộc gọi hiện tại. Nếu cỏc giỏ trị To, From, Call-ID và Cseq thực sự phự hợp với cỏc yờu cầu nhận được trước đú (kể cả giỏ trị tag) thỡ yờu cầu đú là một yờu cầu phỏt lại.
Nếu khụng cú sự phự hợp với cỏc bước trước đú, trường tiờu đề To và From được so sỏnh lại với cuộc gọi nội hạt hiện tại võ cuộc gọi ở xa. Nếu phự hợp và giỏ trị trong Cseq trong yờu cầu khụng lớn hơn giỏ trị Cseq nhận được trong cuộc gọi trước đõy yờu cầu đú là một giao dịch mới cho cuộc gọi hiện tại.
Phần III:
XÂY DỰNG ỨNG DỤNG SIP PHONE TRONG MẠNG LAN
I. PHÂN TÍCH XÂY DỰNG HỆ THỐNG
Xõy dựng một hệ thống VoIP qua mạng Internet hoàn chỉnh đũi hỏi một số lượng cụng việc rất lớn.
Do đú trong phạm vi nghiờn cứu của mỡnh em xõy dựng hệ thống VoIP sử dụng giao thức SIP trong mạng LAN:
Hỡnh III.1
II. LÙA CHỌN NGễN NGỮ: JAVA
- Đơn giản, hướng đối tượng - Phõn tỏn, bảo mật
III. LƯU ĐỒ THUẬT TOÁN