Thiết lập phiên

Một phần của tài liệu Nghiên cứu, thiết kế và xây dựng hệ thống thoại doanh nghiệp sử dụng VoIP (Trang 47 - 54)

Hình 2.9 sau đây cho ta biết quá trình trao đổi các bản tin báo hiệu giữa hai thiết bịđầu cuối.

Hình 2.8. Mô t quá trình thiết lp phiên

Hai thiết bị này có thể là SIP phone, điện thoại cầm tay hoặc có thể là một PC. Nhưng một điều cần phải đảm bảo rằng các thiết bị này đều cùng được kết nối vào mạng IP.

Đối tượng đang gọi – Tesla, bắt đầu quá trình thiết lập phiên bằng việc gửi đi bản tin INVITE tới đối tượng được gọi Marconi. Bản tin INVITE bao gồm những chi tiết về loại của phiên (hay cuộc gọi) được yêu cầu. Đó có thể chỉ là một cuộc

đàm thoại voice thông thường hoặc cũng có thể là một phiên Multimedia như hội thảo truyền hình …

Bản tin INVITE bao gồm những trường thông tin sau:

INVITE sip:marconi@radio.org SIP/2.0

Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bKfw19b Max-Forwards: 70

Nguyễn Đức Hùng- ĐHBKHN  47 

From: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 INVITE

Subject: About That Power Outage...

Contact: <sip:n.tesla@lab.high-voltage.org> Content-Type: application/sdp

Content-Length: 158 v=0

o=Tesla 2890844526 2890844526 IN IP4 lab.high-voltage.org s=Phone Call

c=IN IP4 100.101.102.103 t=0 0

m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000

Nhưđã trình bày ở trên, SIP là giao thức được mã hóa dưới dạng text. Do đó người đọc rất dễ dàng khi muốn tìm hiểu nội dung, ý nghĩa của bản tin. Dòng đầu tiên được bắt đầu với header Via, theo sau là phiên bản của giao thức SIP, tiếp đến là khai báo về loại giao thức lớp Transport được sử dụng là UDP, kế tiếp là địa chỉ

của người gửi bản tin này (địa chỉ này được viết dưới dạng Hostname và được chuyển đổi thành địa chỉ IP nhờ vào các dịch vụ DNS), sau đó là port được sử dụng 5060. Thông số cuối cùng là Branch để xác định ra một giao dịch trong một phiên và bản tin trả lời phải có cùng tham số Branch này.

Trường thông tin tiếp theo là trường Max-Forward, trường này được khởi tạo là một số nguyên lớn, sau khi qua mỗi một trạm SIP server nó sẽ bị giảm đi một

đơn vị cho tới khi bằng không nó sẽ bị hủy để hạn chế bản tin tồn tại vĩnh cửu trong mạng tạo ra các vòng lặp. Nó có vai trò giống trường Time –To – Live (TTL) trong header của các gói IP.

Nguyễn Đức Hùng- ĐHBKHN  48  Trường To và From chỉ ra địa chỉ nguồn và địa chỉ đích của phiên cần được thiết lập, trong ví dụ này là Marconi và Tesla. Đồng thời Tesla tạo ra một chuỗi số

có giá trị ngẫu nhiên đi sau nhãn Tags và được gắn trong header From.

Trường Call-ID là một trong các tham số được sử dụng để phân biệt các phiên với nhau, được viết theo cấu trúc: đầu tiên là một dãy số do Tesla tạo ra, dãy số này chỉ có giá trị cục bộ và được tạo ra một cách Random sau đó được thêm vào kí hiệu @ và hostname của Tesla để tạo ra một chuỗi kí tự có trị duy nhất (globally unique).

Trong bản tin INVITE, Tesla đã tạo ra một cặp hai giá trị (Call-ID và From Tags). Trong bản tin trả lời cho bản tin INVITE, Marconi sẽ tạo ra giá trị To Tags. Sự kết hợp của ba giá trị trên cho phép ta xác định duy nhất một phiên Media giữa Marconi và Tesla bởi có thể còn có nhiều các phiên khác được thiết lập giữa chúng.

Trường tiếp theo là Cseq theo sau đó là một chữ số và tên của một loại bản tin trong ví dụ này là bản tin INVITE. Chữ số được khởi đầu là một tại Tesla cho yêu cầu

(hay cho bản tin INVITE) và sau đó ứng với mỗi một yêu cầu mới chữ số này sẽ được tăng thêm một đơn vị.

Trường Via cùng với các trường Max-Forward, To, From, Call-ID và Cseq là các trường bắt buộc phải có trong mỗi bản tin yêu cầu. Các trường khác có thể được xem như các thông tin tùy chọn không bắt buộc hoặc có thể là các thông tin dành cho các loại yêu cầu đặc biệt, trường Contact là một trường như vậy. Nó bắt buộc phải có trong bản tin INVITE. Trường thông tin này bao gồm địa chỉ SIP URI của thiết bị mà Tesla đang sử dụng trên đó, người ta thường gọi đó là một UA (User Agent) hay Device URI. Địa chỉ URI này được sử dụng để định tuyến các bản tin tới Tesla. Trong phần sau chúng ta còn làm quen với khái niệm User URI – là địa chỉ mà không được sử dụng đểđịnh tuyến.

Nguyễn Đức Hùng- ĐHBKHN  49  Hai trường thông tin cuối cùng là Content-Type và Content-Length chỉ ra rằng phần thân (hay phần nội dung) của bản tin báo hiệu INVITE là giao thức miêu tả phiên SDP và bao gồm 158 byte dữ liệu. Giao thức SDP miêu tả một cách chính xác các thuộc tính media của phiên cũng như phải chỉ ra đúng loại phiên (audio, video, gaming) mà người gọi - ở đây là Tesla - đang mong muốn được thiết lập. Trong ví dụ này các thông tin đó là:

• Địa chỉ IP của người gọi: 100.101.102.103

• Định dạng Media: Audio

• Sử dụng cổng số: 49170

• Giao thức vận chuyển Media: RTP

• Mã hóa Media theo luật: PCM µ

• Tốc độ lấy mẫu: 8 000 Hz

Sau khi nhận được bản tin INVITE, đối tượng bị gọi, Marconi gửi lại bản tin trả lời 180 Ringing với ý nghĩa Marconi đã nhận được bản tin INVITE từ Tesla và

đang tiến hành báo hiệu. Sự báo hiệu ở đây có thể là rung chuông, nhấp nháy một tin nhắn trên màn hình hoặc có thể là một kiểu gây chú ý nào đó để cho đối tượng bị

gọi biết.

Cấu trúc của tin nhắn 180 Ringing như sau:

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bKfw19b ;received=100.101.102.103

To: G. Marconi <sip:marconi@radio.org>;tag=a53e42

From: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 INVITE

Contact: <sip:marconi@tower.radio.org> Content-Length: 0

Nguyễn Đức Hùng- ĐHBKHN  50  Bản tin này được tạo ra bằng cách copy nội dung thông tin của các trường Via, To, From, Call-ID và Cseq trong bản tin INVITE sau đó thêm vào dòng đầu tiên bao gồm phiên bản SIP, mã trả lời, cụm từ trả lời.

Trong trường Via ngoài các tham số ban đầu giống như bản tin INVITE nó còn thêm vào tham số Received. Tham số này chỉ ra địa chỉ IP của người gửi bản tin INVITE. Địa chỉ này cũng chính là địa chỉ URI trong trường Via (lab.high-

voltage.org) sau khi đã sử dụng dịch vụ DNS.

Cần phải chú ý rằng các các địa trong trường thông tin To và From không

được đảo ngược cho nhau trong bản tin trả lời mặc dù các bản tin này được gửi từ

Marcoli tới Tesla. Điều này có thểđược lý giải là các trường To và From trong các bản tin chỉ ra chiều của phiên cần thiết lập chứ không chỉ ra chiều gửi của bản tin. Do vậy tất cả các bản tin trả lời của Marcoli đều có dạng To: Marcoli From: Tesla.

Bên cạnh đó, trường To bây giờ có thêm cả thông tin Tags do Marcoli tạo ra. Tất cả các bản tin yêu cầu và bản tin trả lời trong phiên này đều phải có đủ ba tham số Call-ID, To Tags và From Tags. Địa chỉ trong trường Contact sẽ được thay bằng

địa chỉ của Marcoli khi đó Tesla và Marcoli có thể liên lạc trực tiếp được với nhau.

Khi đối tượng được gọi Marcoli chấp nhận cuộc gọi (ví dụ như nhấc máy

điên thoại), bản tin trả lời 200 OK sẽđược gửi tới Tesla. Đồng thời bản tin này cũng chỉ ra loại phiên Media mà bên gọi yêu cầu đã được chấp nhận.

SIP/2.0 200 OK

Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bKfw19b ;received=100.101.102.103

To: G. Marconi <sip:marconi@radio.org>;tag=a53e42

From: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 INVITE

Nguyễn Đức Hùng- ĐHBKHN  51 

Content-Type: application/sdp Content-Length: 155

v=0

o=Marconi 2890844528 2890844528 IN IP4 tower.radio.org s=Phone Call

c=IN IP4 200.201.202.203 t=0 0

m=audio 60000 RTP/AVP 0 a=rtpmap:0 PCMU/8000

Về cấu trúc, bản tin này cũng giống như bản tin 180 Ringing, có cùng To Tags và Contact URI. Tuy nhiên để thống nhất lại một lần nữa về các thuộc tính media của phiên cũng như loại phiên, thì bản tin 200 OK cũng phải sử dụng giao thức SDP. Nội dung của giao thức này gồm có những phần chính sau:

• Địa chỉ IP của đối tượng được gọi: 200.201.202.203

• Định dạng Media: Audio

• Sử dụng cổng số: 60000

• Giao thức vận chuyển Media: RTP

• Mã hóa Media theo luât: PCM µ

• Tốc độ lấy mẫu: 8 000 Hz

Bước cuối cùng để xác nhận lại phiên media trước khi thiết lập là gửi đi bản tin “Acknowledgment”. Sự xác nhận này mang ý nghĩa Tesla đã nhận được bản tin

đồng ý của Marcoli. Đồng thời sự trao đổi các thông tin media cho phép phiên media này được thiết lập sẽ sử dụng một giao thức khác – giao thức RTP.

ACK sip:marconi@tower.radio.org SIP/2.0

Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bK321g Max-Forwards: 70

Nguyễn Đức Hùng- ĐHBKHN  52 

From: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 ACK Content-Length: 0

Như vậy quá trình trao đổi tin nhắn trước khi thiết lập phiên như trên đã khẳng định rằng SIP là một giao thức báo hiệu đầu cuối tới đầu cuối (end-to-end signaling protocol). Do đó trong một mạng SIP, dù có hay không có các SIP server nhưng nếu các điểm đầu cuối cùng chạy một giao thức SIP và biết được địa chỉ IP của nhau thì chúng đều có thể sử dụng giao thức này để thiết lập các phiên media giữa chúng. Bên cạnh đó ví dụ này cũng cho biết bản chất của giao thức SIP là Client – Server. Khi Tesla tạo và gửi các bản tin yêu cầu như bản tin INVITE thì khi đó Tesla đóng vai trò như một Client còn khi Marcoli trả lời những yêu cầu đó thì Marcoli đóng vai trò là một Server. Sau khi phiên media được thiết lập, Marcoli tạo và gửi bản tin yêu cầu BYE tới Tesla thì lúc này Marcoli như là một Client còn Tesla khi trả lời bản tin này nó hoạt động như một Server. Điều này giải thích tại sao các thiết bịđầu cuối phải bao gồm cả chức năng Client và chức năng Server. Đó cũng là điểm khác biệt so với các giao thức khác như HTTP, FTP … Web browser luôn là HTTP Client còn Web server luôn là HTTP Server.

Để kết thúc một phiên media, Marcoli sẽ gửi bản tin yêu cầu kết thúc BYE

BYE sip:n.tesla@lab.high-voltage.org SIP/2.0

Via: SIP/2.0/UDP tower.radio.org:5060;branch=z9hG4bK392kf Max-Forwards: 70

To: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 From: G. Marconi <sip:marconi@radio.org>;tag=a53e42 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 BYE Content-Length: 0

Nguyễn Đức Hùng- ĐHBKHN  53 

Khi đó bản tin BYE được xem như ở trong một cuộc giao dịch khác (new transaction) so với các bản tin INVITE và ACK nên sẽ có một số tham số sẽ bị thay

đổi như các thông tin trong trường Via, To, From. Tuy nhiên bộ ba tham số (Call- ID, local Tags và remote Tags) dùng để xác định phiên giữa Tesla và Marcoli vẫn không thay đổi nên có thể kết thúc đúng phiên media yêu cầu. Bản tin dùng để xác nhận lại yêu cầu kết thúc phiên là bản tin 200 OK:

SIP/2.0 200 OK

Via: SIP/2.0/UDP tower.radio.org:5060;branch=z9hG4bK392kf ;received=200.201.202.203

To: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341 From: G. Marconi <sip:marconi@radio.org>;tag=a53e42 Call-ID: 123456789@lab.high-voltage.org

CSeq: 1 BYE Content-Length: 0

Một phần của tài liệu Nghiên cứu, thiết kế và xây dựng hệ thống thoại doanh nghiệp sử dụng VoIP (Trang 47 - 54)

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

(99 trang)