SIP hoạt động theo cơ chế trao đổi các yêu cầu và đáp ứng (request/respond). Trong ví dụ này, cuộc giao dịch bắt đầu bằng việc Alice's softphone gửi một lời mời INVITE tới Bob's SIP URI. Yêu cầu INVITE chứa một số trường header gọi là các thuộc tính mang các thơng tin như: mã nhận dạng cuộc gọi, địa chỉ đích, địa chỉ của chủ gọi và thơng tin về kiểu phiên mà Alice muốn thiết lập với Bob.
Đầu tiên, Alice gọi Bob bằng cách sử dụng địa chỉ SIP của anh ta được gọi là SIP URI (Uniform resource Identifier). Địa chỉ này tương tự như một địa chỉ e-mail bao gồm hai phần username và host name, ví dụ như URI của Bob cĩ thể là "sip:bob@biloxi.com" (trong đĩ "biloxi.com" là tên miền của nhà cung cấp dịch vụ
SIP cho Bob), cịn URI của Alice là "sip:alice@atlanta.com". Ngồi URI, SIP cịn cung cấp một loại URI được bảo đảm an tồn hơn gọi là SIPS URI, ví dụ như
"sips:bob@biloxi.com".
Vì Alice's softphone khơng biết được vị trí của Bob cũng như máy chủ SIP phục vụ
miền biloxi.com, nên nĩ gửi bản tin INVITE tới máy chủ SIP phục vụ miền của Alice,
thức cấu hình máy chủ động DHCP (Dynamic Host Configuration Protocol) để xác
định.
Máy chủ SIP tại Atlanta là một proxy server. Nĩ nhận yêu cầu INVITE sẽ gửi trở
lại máy tính của Alice một đáp ứng 100 (Trying) để chỉ thị rằng INVITE đã được nhận và nĩ đang là đại diện cho thiết bị của Alice đểđịnh tuyến bản tin INVITE tới đích của cuộc gọi. Đáp ứng này mang cùng giá trị To, From, Call-ID, Cseq và tham số con (Branch parameter) trong mục "Via" của bản tin INVITE. Điều đĩ cho phép Alice's softphone cĩ thể hiểu được đây là đáp ứng của bản tin INVITE mà nĩ đã gửi đi trước
đĩ.Tiếp đến, máy chủ ở Atlanta sẽ xác định máy chủ của miền biloxi.com và chuyển tiếp bản tin yêu cầu INVITE tới đĩ. Khi máy chủ tại Biloxi nhận được bản tin INVITE, nĩ gửi trở lại một bản tin 100 (Trying) để trả lời cho máy chủ tại Atlanta biết nĩ đã nhận được yêu cầu và đang xử lý yêu cầu này. Tiếp đến, nĩ truy vấn cơ sở dữ
liệu, được gọi chung là dịch vụđịnh vị, để xác định địa chỉ IP hiện tại của Bob. Tại các
điểm trung gian, trước khi được chuyển đi bản tin INVITE sẽ được bổ sung thêm vào
đầu trường "Via" địa chỉ của điểm trung gian để sử dụng sau này.
Máy điện thoại của Bob khi nhận được bản tin này nĩ sẽ rung chuơng để báo cho Bob biết cĩ một cuộc gọi từ Alice tới để anh ta cĩ thể quyết định xem cĩ trả lời cuộc gọi hay khơng. Đồng thời máy điện thoại của Bob cũng gửi trở lại một bản tin 180 (Ringing) qua hai proxy server để trả lời cho chương trình trên máy của Alice biết cuộc gọi đã được định tuyến đến đích. Quá trình định tuyến ngược lại được thực hiện bằng cách sử dụng các địa chỉ trong trường "Via" của bản tin được sao từ bản tin INVITE.
Hình 2.8 Cơ chế hoạt động của giao thức SIP
Giả sử, Bob quyết định trả lời cuộc gọi từ Alice, khi đĩ anh ta nhấc máy và một bản tin trả lời 200 (OK) sẽđược máy điện thoại của Bob tạo ra và gửi trở lại phía Alice để
thơng báo rằng cuộc gọi đã được trả lời. Bản tin này cĩ phần thân mang thơng tin miêu tả về kiểu phiên mà Bob mong muốn thiết lập với Alice.
Nếu Bob khơng muốn trả lời cuộc gọi hay anh ta đang bận tham gia một cuộc gọi khác, một đáp ứng lỗi sẽđược gửi đi thay cho bản tin 200 (OK), và khi đĩ sẽ khơng cĩ một phiên phương tiện nào được thiết lập.
Khi bản tin 200 (OK) sẽđược gửi tới chương trình thoại trên máy PC của Alice. Nĩ sẽ ngắt hồi âm chuơng để thơng báo rằng cuộc gọi đã được trả lời. Cuối cùng, Alice's softphone sẽ gửi một bản tin cơng nhận ACK tới máy điện thoại SIP của Bob để xác nhận rằng nĩ đã nhận được đáp ứng cuối cùng. Trong ví dụ này, ACK được gửi trực tiếp từ máy của Alice tới điện thoại của Bob. Điều này cĩ thể thực hiện được bởi vì khi
đĩ các điểm cuối đã biết được địa chỉ của nhau từ trường "Contact" trong header của các bản tin INVITE/200 (OK).
Trong phiên dữ liệu, hoặc Alice hoặc Bob cĩ thể quyết định thay đổi các đặc tính của của phiên. Điều đĩ cĩ thể thực hiện bằng cách gửi đi một bản tin re-INVITE chứa các miêu tả mới về phương tiện tới phía bên kia. Bản tin này được tham chiếu tới dialog
đang tồn tại để phía bên kia hiểu được đây là một yêu cầu thay đổi phiên đang tồn tại chứ khơng phải thiết lập một phiên mới. Nếu đồng ý, phía bên kia sẽ gửi trả lời bằng bản tin 200 (OK) để chấp nhận các thay đổi, và sẽ được xác nhận bằng bản tin ACK, sau đĩ hai bên sẽ trao đổi với nhau trên một phiên phương tiện với các tham số mới. Trong trường hợp phía bên kia khơng chấp nhận, nĩ sẽ gửi đi bản tin đáp ứng lỗi 488 (Not Acceptable Here) và cũng được xác nhận bằng bản tin ACK, khi đĩ hai bên tham gia vẫn tiếp tục trao đổi với nhau dựa trên các tham số của phiên phương tiện đã được thiết lập trước đĩ.
Khi một bên tham gia muốn kết thúc cuộc gọi, anh ta đặt máy. Giả sử Bob đặt máy trước, khi đĩ máy của anh ta sẽ tạo ra một bản tin BYE. Bản tin này được định tuyến trực tiếp tới máy của Alice và được xác nhận bằng một đáp ứng 200 (OK), phiên phương tiện kết thúc mà khơng cần thiết phải gửi đi một bản tin ACK.