1.5 Hoạt động của SIP
1.5.1.2 Hoạt động của UAS
Khi UAS nhận được một yêu cầu thì nó sẽ kiểm tra chỉ thị của yêu cầu đó. Nếu như UAS không hỗ trợ chỉ thị yêu cầu đó, thì UAS sẽ khởi tạo đáp ứng 405 (Method Not Allow: chỉ thị không được chấp nhận), và đáp ứng này sẽ chứa header Allow.
Kiểm tra header: Nếu như UAS không hiểu header trong yêu cầu thì nó sẽ bỏ qua header và tiếp tục xử lý bản tin (Nó chỉ bọ qua các header không hợp lệ mà thực sự không cần thiết cho quá trình xử lý bản tin).
UAS sẽ áp dụng chính sách để nó xác định xem là có chấp yêu cầu hay không khi mà header To không được nhận dạng bởi UAS. Request-URI chỉ ra UAS để xử lý yêu cầu. Nếu như Request-URI dùng giản đồ mà không được hỗ trợ thì UAS sẽ từ chối với đáp ứng 416 (Unsupported URI Scheme: Giản đồ URI không được hỗ trợ). Nếu như địa chỉ của Request-URI mà UAS không nhận được thì nó sẽ gửi với đáp ứng 404 (Not Found: không tìm thấy).
Kết nối các yêu cầu: Nếu như yêu cầu không có nhãn tag trong header To, UAS phải kiểm tra yêu cầu dựa trên các giao tiếp đi vào. Nếu như nhãn From, Call-ID và CSeq chính xác với các giao tiếp đi vào. Nếu không UAS sẽ khởi tạo đáp ứng 482 (Loop Decteced: phát hiện lặp) và loại bỏ khỏi giao dịch server. Nếu như UAS nhận được cùng một yêu cầu, theo các đường khác nhau [như chế độ forking (chia nhánh) chẳng hạn], thì UAS xử lý như là yêu cầu đầu tiên mà nó nhận được và
UAS xử lý header Require mà UAC gửi tới. UAC gửi bản tin có chứa header này nhằm mục đích hỏi xem UAS có hỗ trợ những mở rộng này cho SIP hay không. Nếu UAS không hiểu phần tùy chọn trong header Require mà UAC gửi tới thì nó sẽ gửi trả với mã đáp ứng 420 (Bad Extension: có nghĩa là yêu cầu mở rộng không có) và nó thêm header Unsupported. Hoạt động này đảm bảo rằng tương tác client-server sẽ được xử lý không gây ra trễ, và các phần tùy chọn được cả hai phía đều hiểu. Nếu một cặp client-server hoạt động tốt thì nó sẽ làm giảm thời gian toàn trình.
Khi mà UAS hiểu phần mở rộng mà client yêu cầu, UAS kiểm tra nội dung của bản tin và các header mà mô tả bản tin. Nếu nội dung bản tin (được xác định bởi header Content-Type), ngôn ngữ (được xác định bởi header Content-Language), mã hóa (được xác định bởi header Content-Encoding) mà không hiểu được và phần thân bản tin là không tùy chọn thì UAS sẽ từ chối yêu cầu với đáp ứng 415 (Unsupported Media Type: kiểu phương tiện không được hỗ trợ). UAS sẽ gửi đáp ứng có header
Accept ghi ra những kiểu thân bản tin mà nó hiểu, header Accept-Encoding để cho biết nó chấp nhận những kiểu mã hóa nào, header Accept-Language để cho biết nó hỗ trợ những ngôn ngữ nào.
Áp dụng mở rộng: UAS muốn áp dụng một số mở rộng thì nó sẽ thông báo cho biết những mở rộng mà nó hỗ trợ bằng cách phát các đáp ứng có chứa header Supported.
Xử lý yêu cầu: Giả sử yêu cầu đã được kiểm tra là hợp lệ với tất cả thành phần trên. UAS sẽ xử lý các yêu cầu. Registrar sẽ xử lý yêu cầu REGISTER. Với yêu cầu OPTIONS thì đáp ứng 200 OK sẽ phải chứa các header Allow, Accept, Accept- Encoding, Accept-Language, và Supported.
Gửi đáp ứng tạm thời: Thông thường UAS gửi đáp ứng tạm thời 100 (Trying: để thông báo đang hoạt động và chờ). Giá trị header Timestamp trong của yêu cầu được sao chép vào trong đáp ứng 100. Nếu có trễ trong phát đáp ứng thì UAS sẽ thêm thời gian trễ vào trong giá trị Timestamp (nó là khoảng thời gian giữa lúc phát đáp ứng và nhận yêu cầu và đơn vị được tính bằng giây).