2012-02-29 22 views
8

Thông thường, trường Tiêu đề liên hệ trong yêu cầu Mời là vô ích. Ví dụ, UAC và UAS nằm trong các mạng LAN khác nhau. Trường Liên hệ có thể là:Trong SIP, tại sao trường tiêu đề Liên hệ PHẢI có mặt trong yêu cầu Mời

INVITE sip:[email protected] SIP/2.0 
Contact: Alice<[email protected]> 
..... 

Không sử dụng trường Liên hệ trong khi chúng tôi vẫn có thể tạo hộp thoại. Sau đó, tại sao trường Tiêu đề liên hệ là bắt buộc?

Trả lời

7

Trường liên hệ chứa địa chỉ mà tại đó callee có thể tiếp cận người gọi cho các yêu cầu trong tương lai. Ví dụ, nó cần thiết để các callee có thể gửi một BYE hoặc một INVITE lại cho người gọi.

+0

Cảm ơn bạn. Tôi đã thực hiện một thử nghiệm trong pjprojet. Nếu trường Contact là như trên, BYE được gửi bởi callee không thể liên lạc với người gọi. –

+1

Đó có thể là do Địa chỉ liên hệ là địa chỉ LAN riêng. Nếu callee của bạn nằm trong một mạng khác, nó sẽ không thể tiếp cận được nó. Đó là một điều mà proxy SIP được sử dụng cho: họ ngồi ở ranh giới mạng và mangle các tiêu đề Liên hệ để bên kia có thể tiếp cận các địa chỉ được đề cập. – DarkDust

+0

Cảm ơn bạn. Với sự giúp đỡ của bạn, tôi đã sửa chữa vấn đề. –

8

Tiêu đề Liên nói nơi bạn (hay đúng hơn, nơi User Agent của bạn là), trong khi From header nói bạn là ai.

Bạn có thể có một số thiết bị SIP đã đăng ký vào cùng một địa chỉ bản ghi (URI bạn đặt trong tiêu đề Từ).

Hơn nữa, yêu cầu REGISTER sử dụng tiêu đề Liên hệ để duy trì dịch vụ vị trí của SIP: chúng cho phép tác nhân người dùng cập nhật thông tin vị trí của công ty đăng ký.

(Ngoài ra, nếu Alice gọi cho Bob, tiêu đề Liên hệ cần phải có phản hồi 2xx để Alice có thể định tuyến ACK của 2xx thành Bob.Điều này chỉ ra nhận xét của DarkDust về một số proxy proxy mangling Liên kết tiêu đề: nếu có không, bạn thấy mình ở vị trí không thoải mái khi có một cuộc gọi chỉ được thiết lập một nửa: Alice nghĩ rằng cuộc gọi được thiết lập bởi vì cô ấy đã gửi ACK của cô ấy, nhưng Bob không bao giờ nhận được ACK. như một cổng mạng, nó sẽ không cần phải mangle tiêu đề Liên hệ vì tiêu đề sẽ trỏ đến chính B2BUA.)

Để phản hồi nhận xét của Phoenix Luo, vì thiếu sót sử dụng LAN IP trong đầu đề Liên hệ, RFC 5627 mô tả giải pháp - sử dụng glo đại lý người dùng có thể định tuyến lại URI (GRUUs) trong tiêu đề Liên hệ/s.

+0

Trong dự án tôi đang tham gia, proxy cho dịch vụ vị trí thêm tiêu đề Ghi tuyến vào yêu cầu Mời. Vì vậy, cuộc gọi có thể được xây dựng thành công. Tuy nhiên, các yêu cầu Bye từ UAS không thể được nhận bởi UAC như những gì DarkDust nói. –

+0

Có: BYE được gửi đến _user agent_ trong cuộc gọi và tác nhân người dùng đó được xác định bằng tiêu đề Liên hệ chứ không phải tiêu đề Từ.Đó là lý do tại sao chúng tôi phải phát minh ra những thứ như RFC 5627 (Thu thập và sử dụng URI đại lý người dùng có thể định tuyến toàn cầu (GRUUs) trong Giao thức khởi tạo phiên (SIP)) –

+0

Cảm ơn bạn. Tôi sẽ đọc kỹ tài liệu. –

Các vấn đề liên quan