SIP version

Một phần của tài liệu TÌM HIỂU VOICE OVER IP AND VOIP PROTOCOLSVÀ các ỨNG DỤNG được TRIỂN KHAI (Trang 63)

CHƯƠNG 4: GIAO THỨC SIP

SIP version

được sử dụng (hiện tại là bản SIP/2.0).

4.3.2 Đáp ứng (Response)

Đáp ứng bản tin SIP dựa trên sự chấp nhận và dịch các yêu cầu. Chúng dùng để chỉ thị cuộc gọi thành công hay thất bại, bao gồm cả trạng thái của server.

Các đáp ứng SIP có tiêu đề theo khuôn dạng sau:

SIP version version Status code Reason phrase

Phiên bản SIP/2.0 đưa ra bảng mã mở rộng và chức năng tương ứng cho các đáp ứng được mô tả dưới đây:

Bảng 4.3: Các đáp ứng SIP

Mã trạng thái Ý nghĩa

1xx Tìm kiếm , báo hiệu, sắp hàng đợi. 2xx Thành công.

3xx Chuyển tiếp yêu cầu. 4xx Lỗi phía người dùng 5xx Lỗi phía máy phục vụ

Ngoài ra, thành phần tùy chọn Reason phrase chú thích mã trả về tương ứng là đáp ứng gì.

SIP định nghĩa 6 loại đáp ứng đối với các thông điệp mà chúng ta thấy trong phần trước. Mỗi loại đáp ứng dùng một mã trong một dải, như được liệt kê trong bảng mã đáp ứng (bảng 4.4 đến 4.9). Vài mã trả về yêu cầu sự phản ứng rõ ràng từ các server và endpoint, và vài mã khác dẫn đến một động thái nào đó của hệ thống.

Các đáp ứng nhất thời được phát ra để cho biết mơi thu đang tiến hành thực thi yêu cầu. Các mã hợp lệ được liệt kê trong bảng 4.4.

Bảng 4.4 Các mã thông báo của SIP

Ý nghĩa

100 Trying. Một đáp ứng tạm thời tương tự như Q.931 CALL PROCEEDING, và sẽ được trả về từ một proxy server hay SIP server trung gian khác trên đường báo hiệu của một cuộc gọi.

180 Ringing. Có ý nghĩa tương tự như Q.931 ALERTING. Có nghĩa là máy điện thoại đang rung chuông.

181 Call Forwarding. Nếu một proxy server trả về mã này, có thể nhận diện nơi mà nó đang chuyển cuộc gọi trong thân của thông điệp này.

182 Queued for Service. Hữu ích cho các ứng dụng có thể trì hoãn trả lời cuộc gọi cho đến khi chúng đã phục vụ cho các cuộc gọi đang xếp hàng. Các văn phòng phục vụ cho các tập đoàn lớn là các user chủ yếu của các dịch vụ này.

183 Session Progress. Một đáp ứng tạm thời tương tự như Q.931 CALL PROGRESS. Mã này được dùng để cung cấp sớm thông tin đặc tả phiên truyền thông từ các gateway trên đường dẫn đến nơi được gọi, như vậy một đường dẫn thoại có thể được chuyển mạch trước khi đổ chuông được áp đặt lên endpoint gọi. Ví dụ trường hợp sử dụng chúng là trong liên kết công tác SIP – PSTN, nhờ đó một mã Session Progress với SDP của PSTN gateway cho phép âm hiệu chuông được cấp bởi tổng đài kết nối. Các ứng dụng khác của đáp ứng này gồm thông báo hay mở nhạc khi gọi vào trong một domain, trước khi cuộc gọi được thiết lập.

189 Provisional response to a REFER method. Hữu ích trong việc cung cấp thông tin cề trạng thái của cuộc gọi đang được chuyển, trong khi đang đợi

đáp ứng sau cùng chỉ thành công hay thất bại từ chi gọi đang được chuyển đến.

Mã Success (2xx) chỉ ra yêu cầu đã được phân tích thành công và được thực thi bởi đối tác được gọi. Xem bảng 4.5

Mã Redirection (3xx) cho biết cuộc gọi cần xử lý nhiều hơn trước khi có thể xác định nó được hoàn tất hay không. Xem bảng 4.6

Bảng 4.5: Mã thông báo thành công của SIP

Ý nghĩa

200 Yêu cầu được thực thi một cách thành công.

Bảng 4.6: Các mã định hướng lại của SIP

Ý nghĩa

300 Mục tiêu trong yêu cầu được phân giải thành nhiều chọn lựa. Nhiều chọn lựa được trả về và người gọi có thể lấy từ trong danh sách và định hướng lại cuộc gọi. Đây là một phương pháp khác của cái gọi là “ambiguous”, nheng sự phân giải tên mập mờ đưa đến mã lỗi của nó.

301 User được gọi đã di chuyển thường xuyên và nơi gọi sẽ thử vị trí mới, nó được trả về trong header của đáp ứng (trong “contact” field). Có thể có một danh sách các vị trí, và người gọi có thể chọn thứ tự mà nó sẽ quét qua danh sách để tạo cuộc gọi. Nếu server không tìm thấy bất kỳ thông tin nào về đối tác được gọi trong bộ nhớ của nó, nó trả lại một mã lỗi NOT FOUND.

302 User được gọi vừa di chuyển và có thể tìm thấy tại địa chỉ trả về. Điều này hữu dụng cho chuyển cuộc gọi bằng tay, bởi bản thân server không chuyển cuộc gọi (chỉ cung ứng sự định hướng lại). Tốt cho việc giải quyết vài nhu cầu di chuyển nào đó.

305 Không thể truy xuất User được gọi một cách trực tiếp, nhưng cuộc gọi phải được kiểm soát thông qua một proxy. Chỉ có agent gọi mới có thể truyền phúc đáp này.

380 Dịch vụ được yêu cầu không khả dụng, nhưng các dịch vụ khác là có thể. Đây là một thông điệp không chắc chắn. Sự không phù hợp về tham số SDP được khắc phục bằng mã khác.

Mã về yêu cầu của client không thành (4xx), loại mã này cho biết server không thể phân tích yêu cầu và không thể phục vụ. Yêu cầu này phải được sửa đổi trước khi tiến hành trở lại. Xem bảng 4.7

Bảng 4.7: Các mã chỉ yêu cầu không thành công của SIP

Ý nghĩa

400 Yêu cầu hỏng, do lỗi về cú pháp. Điều này có nghĩa là thông điệp dạng text không thể phân tích được bởi đầu xa. Bất kỳ lỗi cú pháp nào đều trả về mã này. Thái độ của hệ thống là thực thi rõ.

401 User yêu cầu xác thực trước khi thực hiện yêu cầu này. Các qui định đặc biệt được áp dụng vào định dạng thông điệp khi nhận được mã lỗi này. Ví dụ: không có dạng thông điệp chắc chắn SIP nào được phép.

402 User còn nợ tiền (sử dụng trong tương lai). Hữu dụng cho các công ty điện thoại. Các hoạt động không được chỉ rõ, nhưng một hoạt động có thể đoán được.

403 Cấm yêu cầu – không thực hiện lại. Thông điệp được phân tích, nhưng yêu cầu sẽ không được đón nhận. Nếu cố gắng gọi một số không được chấp nhận từ thuê bao của bạn, bạn có thể nhận được thông điệp này.

404 Không tìm thấy user. Thông điệp này được gửi khi user không hề tồn tại hay các record của user đã bị xóa bởi server này.

405 Phương thức được mã hóa trong thông điệp này không được phép cho user được gọi. Lý tưởng là cho phép tất cả các phương thức, nhưng đây là một quyết định thực hiện.

406 Endpoint được gọi sẽ phát ra các đáp ứng mà người gọi sẽ không hiểu được (mã không thể chấp nhận). Đáp ứng này tránh gia tăng hội chứng “Tower of Babel” giữa các endpoint nếu xử lý gọi liên tục.

407 Xác thực proxy trước khi xúc tiến.

408 Server không tạo ra đáp ứng trong khoảng thời gian được yêu cầu bởi chủ gọi trong header yêu cầu. Các server bận không thể phát ra đáp ứng này theo thời gian. Phản ứng của người gọi là thực hiện phụ thuộc.

409 Có một xung đột giữa yêu cầu hiện hành với các điều kiện khác trong server, có khả năng do các đăng ký hiện hữu. Đáp ứng này được tạo ra nếu một yêu cầu REGISTER từ một user đụng độ với các yêu cầu khác.

410 User được yêu cầu hay dịch vụ đã bị di chuyển khỏi server này và không có để lại địa chỉ nào.

411 Server yêu cầu người gọi ghi chiều dài toàn bộ thông điệp trong header. Thông điệp có tính xoi mói này, nhưng nó phải được lý giải bởi ứng dụng. 413 Kích thước yêu cầu là quá lớn server không thể kiểm soát. Không thể nào

dự báo được những loại thông điệp SIP nào có thể gây ra đáp ứng này, ngoại trừ một hỏng hóc bởi quá trình sẽ tạo ra các thông điệp này trong agent gọi.

414 Server đang gặp khó khăn trong việc diễn dịch Request URI bởi kích thước của nó quá lớn. Khống chế URI ngắn hơn. Không có cách nào để ngăn chặn lỗi này.

415 Server không thể chấp nhận yêu cầu bởi mã hóa của nó. Server có thể chỉ ra phương pháp thích hợp hơn để mã hóa yêu cầu.

420 Server không hiểu sự mở rộng của giao thức SIP đang cố truy cập server từ người gọi. Làm thích nghi hơn là giải pháp thỏa đáng nhất cho vấn đề ở đây, nhưng có thể giảm xác suất dẫn đến tình huống nàybawfng cách dùng các header “Allow” và “Support”.

480 Nơi được gọi tạm thời không khả dụng. Nếu server nhận biết được tên nhưng không biết đối tác hiện đang ở đâu, nó có thể truyền thông điệp này. 481 Server nhận một CANCEL trong một yêu cầu không tồn tại hay một BYE

cho một cuộc gọi không có thực. Loại bỏ.

482 Đã phát hiện thấy vòng lặp trong định tuyến thông điệp. Đây là trường hợp mà Via rất hữu dụng trong việc phát hiện ra các vòng lặp do sai sót của các giao thức vận chuyển và mạng. Nếu một server tự phát hiện trong Via field một thông điệp đến của cuộc gọi chưa hoàn tất cho đến thời điểm này, là một chứng cứ tốt để đoán rằng có một vòng lặp đâu đó trong mạng. Là thời điểm ngừng các phân tích.

483 Số hop cần thiết để đạt đến đối tác bị gọi vượt quá giới hạn cho phép. Điều này là một sự bảo vệ hiệu quả chống lại các tuyến quá dài và không ổn định, đặc biệt là trong mạng công cộng mới dựa vào IP.

484 Địa chỉ chưa đầy đủ. Có thể được dùng để tiến hành truyền từng phần một, như trường hợp của chuỗi quay số từ máy điện thoại, được softswitch xem như chưa đầy đủ.

485 Địa chỉ mập mờ về đối tác được gọi. Server có thể đề nghị các thay đổi với người gọi. Trường hợp này có nhiều chọn lựa được gửi về cho người gọi. 486 Đối tác được gọi đang bận hoặc không sẵn sàng nhận cuộc gọi. Có thể

phúc đáp vào một thời điểm tốt hơn sau đó (phụ thuộc vào sự hiện thực). Mã lỗi của server (5xx) cho biết yêu cầu có thể hợp lệ, nhưng server không thể thực thi chúng. Xem bảng 4.8

Bảng 4.8: Các mã lỗi server của SIP

Ý nghĩa

500 Lỗi server, có thể là lỗi phần cứng, phần mềm hay bất kỳ một lỗi nào bên trong.

501 Server không thể phục vụ yêu cầu bởi dịch vụ không được thực hiện. 502 Server nhận đáp ứng hỏng từ gateway hay server khác trên đường dẫn

cuộc gọi. Đây có thể là một lỗi tiêu biểu trong các cuộc gọi trải dài qua nhiều segment và server mạng.

503 Dịch vụ tạm thời không khả dụng, có lẽ do quá tải xử lý hay cạn kiệt tài nguyên.

504 Server bị timeout khi truy cập gateway trên đường dẫn cuộc gọi đến endpoint. Cuộc gọi yêu cầu có lẽ vẫn còn lang thang đâu đó.

505 Phiên bản giao thức SIP này không được hỗ trợ. Thiết kế phù hợp hơn có thể tránh được lỗi này. Các server cũ hơn và các agent gọi có thể làm như vậy khi chúng nhận thấy một phiên bản mới hơn của SIP trong header của thông điệp.

506 Lỗi về điều kiện định trước (được dùng với COMET).

Các mã lỗi toàn cục (6xx) cho biết server không thể nào phục vụ được yêu cầu của user. Xem bảng 4.9

Bảng 4.9: Các mã lỗi toàn cục của SIP

Ý nghĩa

600 Đối tác được gọi đang bận. Có thể chỉ ra một thời điểm tốt hơn để gọi lại. 603 Người được gọi khước từ cuộc gọi.

604 User được gọi không tồn tại trong bất cứ nơi đâu.

606 User sẵn sàng chấp nhận cuộc gọi, nhưng có những điều không phù hợp nào đó trong truyền thông được yêu cầu hay ở đâu đó, và do đó user không thể chấp nhận cuộc gọi. Ví dụ: nếu chỉ có một chọn lựa cấp cho agent được gọi là nén tiếng nói G.728, và đối tác được gọi lại chỉ hỗ trợ G.711, rất dễ đoán ra nguyên nhân nhận được thông điệp này. Đối tác được gọi có thể quyết định một cách đơn giản là không chấp nhận cuộc gọi.

Một phần của tài liệu TÌM HIỂU VOICE OVER IP AND VOIP PROTOCOLSVÀ các ỨNG DỤNG được TRIỂN KHAI (Trang 63)