Hình ảnh sau đây cho thấy luồng cuộc gọi cơ bản của một phiên SIP.
Dưới đây là giải thích từng bước về quy trình cuộc gọi ở trên –
- Yêu cầu INVITE được gửi đến máy chủ proxy chịu trách nhiệm bắt đầu một phiên.
- Máy chủ proxy gửi 100 Đang thử phản hồi ngay lập tức tới người gọi (Alice) để dừng truyền lại yêu cầu INVITE.
- Máy chủ proxy tìm kiếm địa chỉ của Bob trong máy chủ vị trí. Sau khi nhận được địa chỉ, nó sẽ chuyển tiếp yêu cầu INVITE.
- Sau đó, 180 lần đổ chuông (Phản hồi tạm thời) do Bob tạo ra được trả lại cho Alice.
- Một 200 OK phản ứng được tạo ra ngay sau khi Bob nhặt điện thoại lên.
- Bob nhận được ACK từ Alice, khi nó nhận được 200 OK .
- Đồng thời, phiên được thiết lập và các gói RTP (hội thoại) bắt đầu chảy từ cả hai đầu.
- Sau cuộc trò chuyện, bất kỳ người tham gia nào (Alice hoặc Bob) đều có thể gửi yêu cầu BYE để kết thúc phiên.
- BYE đến trực tiếp từ Alice đến Bob bằng cách bỏ qua máy chủ proxy.
- Cuối cùng, Bob gửi một phản hồi 200 OK để xác nhận BYE và phiên kết thúc.
- Trong quy trình cuộc gọi cơ bản ở trên, có ba giao dịch (được đánh dấu là 1, 2, 3).
Cuộc gọi hoàn chỉnh (từ INVITE đến 200 OK) được gọi là Hộp thoại .
Hình thang SIP
Proxy giúp kết nối người dùng này với người dùng khác như thế nào? Hãy để chúng tôi tìm hiểu với sự trợ giúp của sơ đồ sau.
Cấu trúc liên kết được hiển thị trong sơ đồ được gọi là hình thang SIP. Quá trình diễn ra như sau:
- Khi người gọi bắt đầu cuộc gọi, một tin nhắn INVITE sẽ được gửi đến máy chủ proxy. Khi nhận được INVITE, máy chủ proxy sẽ cố gắng phân giải địa chỉ của thư viện với sự trợ giúp của máy chủ DNS.
- Sau khi nhận được tuyến tiếp theo, máy chủ proxy của người gọi (Proxy 1, còn được gọi là máy chủ proxy gửi đi) sẽ chuyển tiếp yêu cầu INVITE đến máy chủ proxy của callee hoạt động như một máy chủ proxy gửi đến (Proxy 2) cho callee.
- Máy chủ proxy gửi đến liên hệ với máy chủ định vị để lấy thông tin về địa chỉ của người quản lý nơi người dùng đã đăng ký.
- Sau khi nhận được thông tin từ máy chủ định vị, nó sẽ chuyển tiếp cuộc gọi đến đích của nó.
Một khi các tác nhân người dùng biết địa chỉ của họ, họ có thể bỏ qua cuộc gọi, tức là các cuộc trò chuyện được chuyển trực tiếp.
SIP – Nhắn tin
Thông điệp SIP có hai loại – yêu cầu và phản hồi .
- Dòng mở đầu của một yêu cầu chứa một phương thức xác định yêu cầu và một URI Yêu cầu xác định nơi gửi yêu cầu.
- Tương tự, dòng mở đầu của một phản hồi chứa một mã phản hồi.
Yêu cầu phương thức
Yêu cầu SIP là các mã được sử dụng để thiết lập giao tiếp. Để bổ sung cho chúng, có các phản hồi SIP thường cho biết một yêu cầu thành công hay thất bại.
Các yêu cầu SIP này được gọi là PHƯƠNG PHÁP làm cho bản tin SIP có thể hoạt động được.
- METHODS có thể được coi là các yêu cầu SIP, vì chúng yêu cầu một hành động cụ thể được thực hiện bởi một tác nhân hoặc máy chủ người dùng khác.
- PHƯƠNG PHÁP được phân biệt thành hai loại –
- Phương pháp cốt lõi
- Phương pháp mở rộng
Phương pháp cốt lõi
Có sáu phương pháp cốt lõi như được thảo luận dưới đây.
MỜI GỌI
INVITE được sử dụng để bắt đầu một phiên với tác nhân người dùng. Nói cách khác, phương thức INVITE được sử dụng để thiết lập phiên truyền thông giữa các tác nhân người dùng.
- INVITE có thể chứa thông tin phương tiện của người gọi trong nội dung thư.
Một phiên được coi là đã thiết lập nếu INVITE nhận được phản hồi thành công (2xx) hoặc ACK đã được gửi.
- Một yêu cầu INVITE thành công thiết lập một hộp thoại giữa hai tác nhân người dùng và tiếp tục cho đến khi một BYE được gửi để kết thúc phiên.
- INVITE được gửi trong hộp thoại đã thiết lập được gọi là INVITE lại .
- MỜI lại được sử dụng để thay đổi đặc tính phiên hoặc làm mới trạng thái của hộp thoại.
Ví dụ về INVITE
Đoạn mã sau đây cho thấy cách INVITE được sử dụng.
INVITE sips:Bob@TMC.com SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice<sips:Alice@TTP.com>;tag = 1234567
To: Bob<sips:Bob@TMC.com>
Call-ID: 12345601@192.168.2.1
CSeq: 1 INVITE
Contact: <sips:Alice@client.ANC.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
TẠM BIỆT
BYE là phương thức được sử dụng để kết thúc một phiên đã thiết lập. Đây là một yêu cầu SIP có thể được gửi bởi người gọi hoặc người gọi để kết thúc một phiên.
- Nó không thể được gửi bởi một máy chủ proxy.
- Yêu cầu BYE thường các tuyến kết thúc để kết thúc, bỏ qua máy chủ proxy.
- BYE không thể được gửi đến một INVITE đang chờ xử lý hoặc một phiên chưa được thiết lập.
ĐĂNG KÝ
Yêu cầu ĐĂNG KÝ thực hiện việc đăng ký tác nhân người dùng. Yêu cầu này được gửi bởi một tác nhân người dùng đến một máy chủ đăng ký.
- Yêu cầu REGISTER có thể được chuyển tiếp hoặc ủy quyền cho đến khi nó đến được nhà đăng ký có thẩm quyền của miền được chỉ định.
- Nó mang AOR (Địa chỉ của Bản ghi) trong tiêu đề Tới của người dùng đang được đăng ký.
- Yêu cầu ĐĂNG KÝ chứa khoảng thời gian (3600 giây).
- Một tác nhân người dùng có thể gửi yêu cầu ĐĂNG KÝ thay mặt cho một tác nhân người dùng khác. Đây được gọi là đăng ký của bên thứ ba . Ở đây, thẻ Từ chứa URI của bên gửi đăng ký thay mặt cho bên được xác định trong tiêu đề Tới .
HỦY
CANCEL được sử dụng để kết thúc một phiên không được thiết lập. Tác nhân người dùng sử dụng yêu cầu này để hủy cuộc gọi đang chờ xử lý được thực hiện trước đó.
- Nó có thể được gửi bởi một tác nhân người dùng hoặc một máy chủ proxy.
- CANCEL là một yêu cầu nhảy từng bước , tức là, nó đi qua các phần tử giữa tác nhân người dùng và nhận phản hồi do phần tử trạng thái tiếp theo tạo ra.
ACK
ACK được sử dụng để xác nhận các phản hồi cuối cùng đối với phương thức INVITE. ACK luôn đi theo hướng INVITE.ACK có thể chứa nội dung SDP (đặc điểm phương tiện), nếu nó không có sẵn trong INVITE.
ACK không được sử dụng để sửa đổi mô tả phương tiện đã được gửi trong INVITE ban đầu.
- Một proxy trạng thái nhận ACK phải xác định xem ACK có nên được chuyển tiếp xuôi dòng tới proxy hoặc tác nhân người dùng khác hay không.
- Đối với phản hồi 2xx, ACK là kết thúc để kết thúc, nhưng đối với tất cả các phản hồi cuối cùng khác, nó hoạt động trên cơ sở từng bước một khi các proxy trạng thái tham gia.
TÙY CHỌN
Phương pháp OPTIONS được sử dụng để truy vấn tác nhân người dùng hoặc máy chủ proxy về khả năng của nó và khám phá tính khả dụng hiện tại của nó. Phản hồi cho một yêu cầu liệt kê các khả năng của tác nhân người dùng hoặc máy chủ. Một proxy không bao giờ tạo yêu cầu TÙY CHỌN.
Phương pháp mở rộng
Đăng ký
SUBSCRIBE được các tác nhân người dùng sử dụng để thiết lập đăng ký nhằm mục đích nhận thông báo về một sự kiện cụ thể.
- Nó chứa trường tiêu đề Expires cho biết thời hạn của một gói đăng ký.
- Sau khi khoảng thời gian trôi qua, đăng ký sẽ tự động chấm dứt.
- Đăng ký thiết lập một hộp thoại giữa các tác nhân người dùng.
- Bạn có thể đăng ký lại một lần nữa bằng cách gửi một SUBSCRIBE khác trong hộp thoại trước khi hết hạn.
- 200 OK sẽ được nhận cho một đăng ký từ Người dùng.
Người dùng có thể hủy đăng ký bằng cách gửi một phương thức SUBSCRIBE khác với giá trị Expires 0 (không).
THÔNG BÁO
NOTIFY được sử dụng bởi các tác nhân người dùng để nhận được sự xuất hiện của một sự kiện cụ thể. Thông thường, THÔNG BÁO sẽ kích hoạt trong hộp thoại khi có đăng ký giữa người đăng ký và người thông báo.
- Mỗi NOTIFY sẽ nhận được 200 phản hồi OK nếu nó được người thông báo nhận được.
- NOTIFY chứa trường tiêu đề Sự kiện cho biết sự kiện và trường tiêu đề đăng ký cho biết trạng thái hiện tại của đăng ký.
- THÔNG BÁO luôn được gửi khi bắt đầu và kết thúc đăng ký.
CÔNG BỐ
PUBLISH được tác nhân người dùng sử dụng để gửi thông tin trạng thái sự kiện đến máy chủ.
- PUBLISH hầu hết hữu ích khi có nhiều nguồn thông tin sự kiện.
- Yêu cầu PUBLISH tương tự như NOTIFY, ngoại trừ việc nó không được gửi trong hộp thoại.
- Yêu cầu PUBLISH phải chứa trường tiêu đề Hết hạn và trường tiêu đề Min-Expires .
THAM KHẢO
REFER được tác nhân người dùng sử dụng để giới thiệu tác nhân người dùng khác truy cập vào URI cho hộp thoại.
- REFER phải chứa tiêu đề Giới thiệu . Đây là tiêu đề bắt buộc để THAM KHẢO.
- THAM KHẢO có thể được gửi bên trong hoặc bên ngoài hộp thoại.
- Một Accepted 202 sẽ kích hoạt một REFER yêu cầu mà chỉ ra rằng tác nhân người dùng khác đã chấp nhận các tài liệu tham khảo.
THÔNG TIN
INFO được sử dụng bởi một tác nhân người dùng để gửi thông tin báo hiệu cuộc gọi đến một tác nhân người dùng khác mà nó đã thiết lập một phiên truyền thông.
- Đây là một yêu cầu end-to-end.
- Một proxy sẽ luôn chuyển tiếp một yêu cầu INFO.
CẬP NHẬT
UPDATE được sử dụng để sửa đổi trạng thái của một phiên nếu một phiên không được thiết lập. Người dùng có thể thay đổi codec với UPDATE.
NẾU một phiên được thiết lập, một Lời mời lại được sử dụng để thay đổi / cập nhật phiên.
PRACK
PRACK được sử dụng để xác nhận việc nhận được một chuyển phản hồi tạm thời đáng tin cậy (1XX).
- Nói chung PRACK được tạo bởi máy khách khi nó nhận được phản hồi tạm thời có chứa số thứ tự đáng tin cậy RSeq và tiêu đề : 100rel được hỗ trợ .
- PRACK chứa giá trị (RSeq + CSeq) trong tiêu đề rack .
- Phương pháp PRACK áp dụng cho tất cả các phản hồi tạm thời ngoại trừ 100 phản hồi Đang thử, không bao giờ được vận chuyển một cách đáng tin cậy.
- PRACK có thể chứa nội dung thư; nó có thể được sử dụng để trao đổi đề nghị / câu trả lời.
THÔNG ĐIỆP
Nó được sử dụng để gửi tin nhắn tức thì bằng SIP. Một IM thường bao gồm các tin nhắn ngắn được trao đổi trong thời gian thực bởi những người tham gia vào cuộc trò chuyện bằng văn bản.
- MESSAGE có thể được gửi trong hộp thoại hoặc bên ngoài hộp thoại.
- Nội dung của MESSAGE được chuyển vào nội dung thư dưới dạng tệp đính kèm MIME .
- Một phản hồi 200 OK thường được nhận để cho biết rằng tin nhắn đã được gửi đến đích của nó.