1.4.5.3 Các trường header có trong cả yêu cầu và đáp ứng
1) Call-ID
Trường header Call-ID là bắt buộc trong tất cả các yêu cầu và đáp ứng. Nó là phần của đối thoại, chỉ được sử dụng để nhận dạng cuộc gọi giữa hai user agent.
Call-ID chỉ xuất hiện giữa các cuộc gọi, trừ trường hợp Call-ID trong yêu cầu đăng kí. Tất cả những đăng kí cho user agent có thể được dùng với cùng Call-ID. Một Call-ID luôn luôn được tạo bởi user agent và không bao giờ được chỉnh sửa bởi server.
Dạng viết tắt của Call-ID là i Thí dụ:
Call – ID: 34a5d55c@192.168.0.1 Call – ID: 44fer23eifd423
Call – ID: 3586638330920312@port34.carrier.com 2) Contact
Trường header Contact được sử dụng để truyền đạt URI mà chỉ định nguồn được yêu cầu hoặc là khởi tạo yêu cầu, điều này phụ thuộc vào việc header này nằm trong yêu cầu hay là đáp ứng. Khi mà một trường header Contact được nhận, thì URI có thể được giấu kín và sử dụng để tìm đường cho u cầu trong một đoạn thoại. Thí dụ, một trường header Contact nằm trong bản tin 200 OK đáp ứng bản tin INVITE có thể cho phép thông báo bản tin ACK và nhiều yêu cầu khác nữa trong cuộc gọi này để tránh proxy và đi trực tiếp tới bên được gọi. Tuy nhiên, việc có mặt của trường header Record – Route trong yêu cầu trước đó hoặc là trong cấu hình định tuyến tới proxy mặc định trong UA có thể được ưu tiên trong cái hoạt động này.
Các trường header Contact phải có mặt trong bản tin yêu cầu INVITE và đáp ứng 200 OK để thực hiện lời mời. Trường header Contact có thể có trong các đáp ứng 1xx, 2xx, 3xx, và 485.
Chỉ trong yêu cầu REGISTER, mới có dạng đặc biệt Contact: *,với Expires: 0 (mọi thẻ đăng kí đều khơng được chấp nhận). Một trường header Contact có thể chứa tên hiển thị, tên hiển thị thường được để trong dấu ngoặc kép “” (nếu khơng có dấu ngoặc kép thì khơng đảm bảo việc được gửi đi), trong trường hợp này thì URI sẽ nằm
Thơng thường thông số được khai báo thêm cho người dùng trong trường header Contact đó là: q, và expires. Chúng nằm sau URI và ngăn cách bởi dấu chấm phẩy “;”. Giá trị thông số q dùng để chỉ thị độ ưu tiên, nó là một số hệ thập phân nằm trong dải từ 0 tới 1. Nếu không có thơng số q, thì giá trị q trong danh sách các Contact sẽ mặc định là 1. Nếu có nhiều giá trị trong header Contact thì các giá trị này được ngăn cách bởi dấu “,”.
Header Contact có dạng viết tắt là m Thí dụ
Contact: "Mr. Watson" <sip:watson@worcester.bell-telephone.com> ;q=0.7; expires=3600,
"Mr. Watson" <mailto:watson@bell-telephone.com> ;q=0.1 m: <sips:bob@192.0.2.4>;expires=60
3) CSeq
Trường header CSeq là trường header bắt buộc có trong mọi yêu cầu. Header này bao gồm một số thập phân và một chỉ thị yêu cầu. Phần số thập phân là một số nguyên (nó có giá trị ≤ 231) và nó tăng cho mỗi yêu cầu. Thơng thường nó bắt đầu từ 1 cho mỗi yêu cầu. Trừ yêu cầu CANCEL và ACK, hai yêu cầu này dùng số CSeq của yêu cầu INVITE để làm tham chiếu.
Header này dùng để phục vụ cho các giao tác của đoạn thoại. Nó được dùng để phân biệt yêu cầu mới và yêu cầu đã được truyền. Và nó có duy nhất một giá trị trong một cuộc hội thoại.
Header Nghĩa của header
CSeq: 1 INVITE Số thứ tự lệnh được khởi tạo là 1 cho INVITE khởi tạo CSeq: 432 REFER Số chuỗi lệnh được đặt là 432 cho yêu cầu REFER
CSeq: 7549 INVITE Nếu đây là yêu cầu đầu tiên của user agent cho thoại thì hoặc là CSeq được tạo với giá trị ban đầu là 7549, hoặc là yêu cầu đã được tạo từ trước cho Call-ID này có giá trị là 7548 hoặc nhỏ hơn.
Bảng 1.3. Thí dụ về header Cseq
Mỗi UA duy trì khoảng cách số chuỗi lệnh của riêng nó. Thí dụ, giả sử trường hợp khi mà UA 1 thiết lập phiên tới UA 2 và khởi tạo số CSeq của nó là 1. Khi UA 2 khởi tạo yêu cầu (như là INVITE hoặc là BYE), nó sẽ tính khoảng CSeq của riêng nó, hồn tồn phụ thuộc vào số CSeq được sử dụng bởi UA 1.
Trường header date phản ánh thời gian khi mà yêu cầu hoặc là đáp ứng được gửi đi.
Thí dụ về header Date: Date: Fri, 7 Oct 2008 18:31:00 GMT 5) From
Trường header From là trường header được yêu cầu để chỉ thị việc khởi tạo yêu cầu. Nó được dùng để nhận dạng thoại. Trường header From chứa URI, nó có thể chứa các thơng số URI như là “transport”, “maddr” hoặc là “ttl”. Trường header From có thể chứa một nhãn “tag”, được sử dụng để xác định thành phần gọi. Trường header From có thể chứa tên hiển thị, trong trường hợp này URI đặt trong ngoặc < >. Trường này có dạng viết tắt là f.
Trường header Giải thích
From: <sip:duongtien@doan.com>; tag=7549
Một SIP URI với một nhãn tag From: Thanh Thao
<sip:thao@gmail.com>; tag=4975
SIP URI hiển thị tên f: “Jame Bardeen”
<sip:family24@telephone.com; transport=tcp>; tag= 31705
Dùng dạng viết tắt của trường header, có hiển thị tên trong dấu “” cùng với SIP URI có một thơng số trong <>.