Trong hội thoại SIP, mỗi bên tham gia (bên chủ gọi và bên bị gọi) được gắn một địa chỉ SIP hay còn gọi là SIP URL. Người sử dụng phải đăng ký vị trí của họ với SIP Server. Để tạo một cuộc gọi SIP, phía chủ gọi định vị tới máy phục vụ thích ứng và sau đó gửi một yêu cầu SIP. Hoạt động SIP thường xuyên nhất là lời mời các thành viên tham gia hội thoại. Thành phần Register đóng vai trò tiếp nhận các yêu cầu đăng ký từ UA và lưu trữ các thông tin này tại một dịch vụ phi SIP (Non-SIP).
4.1.3.1. Địa chỉ SIP
Các đối tượng được đánh địa chỉ bởi SIP là các người sử dụng tại các trạm, những người sử dụng này dược định danh bằng một SIP URL. SIP URL có dạng user@host. Phần user là một tên của người sử dụng hay tên của một máy điện thoại. Phần host có thể là một tên miền hoặc một địa chỉ mạng.
SIP URL được dùng trong các bản tin SIP để thông báo về nơi gửi (From), đích hiện thời (Request URI) và nơi nhận cuối cùng (To) của một yêu cầu SIP và chỉ rõ địa chỉ gián tiếp. Một SIP URL có thể gắn vào một trang Web hoặc những siêu liên kết (Hyperlink) khác để thông báo rằng người dùng hoặc dịch vụ có thể gọi thông qua SIP.
Một địa chỉ SIP URL có thể chỉ rõ một cá nhân (có thể được định vị tại một trong các hệ thống đầu cuối), người khả dụng đầu tiên từ một nhóm các cá nhân hoặc toàn bộ một nhóm. Ví dụ, khuôn dạng địa chỉ: sip: sales@example.com nói chung là không đủ để quyết định mục đích của người gọi.
4.1.3.2. Quá trình định vị tới máy chủ SIP
Khi một Client muốn gửi đi một yêu cầu, Client sẽ gửi bản tin yêu cầu đó tới SIP Proxy Server (như trong HTTP), hoặc tới địa chỉ IP và cổng tương ứng trong địa chỉ của yêu cầu SIP (Request-URI). Trường hợp đầu, yêu cầu được gửi tới SIP Proxy Server không phụ thuộc vào địa chỉ của yêu cầu đó là như thế nào. Với trường hợp sau, Client phải xác định giao thức, cổng và địa chỉ IP của Server mà yêu cầu được gửi đến.
Một Client thực hiện các bước tiếp theo để có được những thông tin này. Tại mỗi bước, trừ các trạng thái khác, Client cố gắng liên lạc với Server theo số cổng được chỉ ra trong địa chỉ yêu cầu SIP (Request-URI). Nếu không có số cổng nào chỉ ra trong Request-URI, Client sẽ sử dụng địa chỉ cổng mặc định là 5060. Nếu Request-URI chỉ rõ
Đồ án tốt nghiệp Đại học Chương 4. Các giao thức ngang hàng
là sử dụng giao thức TCP hay UDP, Client sẽ làm việc với Server theo giao thức đó. Nếu không có giao thức nào được chỉ ra thì Client cố gắng dùng giao thức UDP (nếu không hỗ trợ TCP) hoặc sử dụng giao thức TCP cho hoạt động của mình (chỉ được hỗ trợ TCP mà không được hỗ trợ UDP).
Client cố gắng tìm một hay nhiều địa chỉ cho SIP Server bằng việc truy vấn DNS (Domain Name System) theo các thủ tục sau:
1) Nếu địa chỉ Host trong địa chỉ Request-URI là một địa chỉ IP thì Client làm việc với Server bằng địa chỉ được đưa ra. Nếu đó không phải là một địa chỉ IP, Client thực hiện bước tiếp theo.
2) Client đưa ra câu hỏi tới DNS Server về bản ghi địa chỉ cho địa chỉ Host trong địa chỉ Request-URI. DSN sẽ trả về một bản ghi danh sách các địa chỉ. Lúc đó việc lựa chọn một trong các địa chỉ này là tùy ý. Còn nếu DNS Server không đưa ra bản ghi địa chỉ, Client sẽ kết thúc hoạt động, có nghĩa nó không thực hiện được việc định vị máy chủ. Nhờ bản ghi địa chỉ, sự lựa chọn tiếp theo cho giao thức mạng của Client có nhiều khả năng thành công hơn. Một quá trình thực hiện thành công là quá trình có một bản ghi chứa trong phần trả lời và Server làm việc ở một trong những địa chỉ chứa trong trả lời đó.
4.1.3.3. Giao dịch SIP
Khi có địa chỉ IP của SIP Server thì yêu cầu sẽ được gửi đi theo tầng vận chuyển giao thức TDP hay UDP. Client gửi một hoặc nhiều yêu cầu SIP đến máy chủ đó và nhận lại một hoặc nhiều các phúc đáp từ máy chủ. Một yêu cầu cùng với các phúc đáp được tạo ra bởi yêu cầu đó tạo thành một giao dịch SIP. Tất cả các phúc đáp cho một yêu cầu mang cùng các giá trị trong các trường: Call – ID, Cseq, To, và From. Yêu cầu ACK xác định sự nhận một phúc đáp INVITE không là một phần của giao dịch vì nó có thể di chuyển giữa một tập các host khác nhau. Mỗi cuộc gọi trong SIP được định danh bởi một trường định danh cuộc gọi (Call-ID).
Một yêu cầu phải cần có thông tin gửi đi từ đâu (From) và tới đâu (To). Trường From và To đều có cấu trúc theo khuôn dạng SIP-URL. Trường CSeq lưu trữ thông tin về phương thức sử dụng trong phiên, trường CSeq có dạng:
CSeq = “CSeq”: “DIGIT Method” Trong đó DIGIT là số nguyên không dấu 32 bit.
Nếu một giao thức điều khiển luồng tin cậy được sử dụng, yêu cầu và các phúc đáp trong một giao dịch đơn lẻ được mang trên cùng kết nối. Một vài yêu cầu SIP từ cùng
Đồ án tốt nghiệp Đại học Chương 4. Các giao thức ngang hàng
máy khách đến cùng máy chủ có thể sử dụng cùng kết nối hoặc có thể sử dụng một kết nối mới cho mỗi yêu cầu.
Nếu một client gửi yêu cầu thông qua một giao thức datagram đơn hướng như UDP thì các UA thu sẽ định hướng phúc đáp theo thông tin chứa trong các trường mào đầu Via. Mỗi proxy server trong tuyến chuyển tiếp của yêu cầu chuyển tiếp phúc đáp sử dụng các trường mào đầu Via này.
4.1.3.4. Lời mời SIP
Một lời mời SIP thành công gồm hai yêu cầu INVITE và ACK. Yêu cầu INVITE thực hiện lời mời một thành viên tham gia hội thoại. Khi phía bị gọi đồng ý tham gia, phía chủ gọi xác nhận đã nhận một bản tin đáp ứng bằng cách gửi đi một yêu cầu ACK. Nếu phía chủ gọi không muốn mời thành viên tham gia cuộc gọi nữa nó sẽ gửi yêu cầu BYE thay cho ACK.
Thông điệp INVITE chứa thành phần mô tả phiên (SDP) và phương thức tiến hành trao đổi ứng với phiên đó. Với các phiên đa hướng, phần mô tả phiên liệt kê kiểu và khuôn dạng của các phương tiện (Media) để phân phối cho phiên hội thoại. Với một phiên đơn hướng, phần mô tả phiên liệt kê kiểu và khuôn dạng của các phương tiện mà phía chủ gọi muốn sử dụng và nơi những dữ liệu muốn gửi đi.
Trường hợp máy phục vụ ủy quyền (Proxy Server): ⇒ Proxy Server (PS) tiếp nhận lời mời INVITE. ⇒ PS tra cứu thông tin ở dịch vụ định vị ngoài SIP. ⇒ PS nhận thông tin để tạo ra địa chỉ chính xác.
⇒ PS tạo lại INVITE trong trường Request URI và chuyển tiếp. ⇒ UAS thông báo bị gọi.
⇒ PS nhận đáp ứng chấp nhận 200 OK từ UAS. ⇒ PS trả về kết quả thành công cho chủ gọi. ⇒ Chủ gọi gửi thông báo xác nhận ACK. ⇒ Yêu cầu xác nhận được chuyển tiếp qua PS.
Chú ý: Một ACK có thể được gửi trực tiếp đến User được gọi qua Proxy. Tất cả các yêu cầu và đáp ứng phải có cùng Call-ID.
Trường hợp máy phục vụ gián tiếp (Redirect Server): ⇒ PS tiếp nhận lời mời INVITE.
Đồ án tốt nghiệp Đại học Chương 4. Các giao thức ngang hàng
⇒ Liên lạc với dịch vụ định vị. ⇒ Trả lời địa chỉ chủ gọi.
⇒ Chủ gọi gửi thông báo xác nhận ACK đến PS.
⇒ Chủ gọi tạo một yêu cầu mới cùng một Call-ID nhưng có CSeq cao hơn tới địa chỉ trả lời bởi Server đầu tiên.
⇒ Bị gọi gửi đáp ứng chấp nhận 200 OK.
⇒ Chủ gọi gửi thông báo xác nhận ACK.
4.1.3.5. Định vị người dùng
Một đối tượng bị gọi có thể di chuyển giữa một số các hệ thống đầu cuối khác nhau theo thời gian. Một máy chủ định vị cũng có thể sử dụng một hay nhiều giao thức khác nhau để xác định hệ thống đầu cuối mà tại đó một người sử dụng có thể liên lạc. Một máy chủ định vị có thể đưa ra một vài vị trí vì người sử dụng được đăng nhập vào tại một vài host đồng thời hoặc bởi vì máy chủ định vị lỗi. Máy chủ SIP kết hợp các kết quả để đưa ra một danh sách các vị trí.
Đối với từng kiểu SIP Server thì hoạt động sau khi nhận được danh sách các vị trí khác nhau là khác nhau. Một SIP Redirect Server sẽ trả lại danh sách địa chỉ cho Client với các mào đầu Contact. Một SIP proxy server có thể thử lần lượt hoặc song song các địa chỉ cho đến khi cuộc gọi thành công (phúc đáp 2xx) hoặc bên bị gọi từ chối cuộc gọi (phúc đáp 6xx).
Nếu một proxy server chuyển tiếp một yêu cầu SIP, nó phải bổ sung địa chỉ của nó vào vị trí bắt đầu của danh sách các trạm chuyển tiếp được ghi trong các mào đầu Via. Dấu vết Via đảm bảo rằng các trả lời có thể đi theo cùng tuyến đó theo hướng ngược lại, việc đảm bảo hoạt động chính xác nhờ tuân theo các tường lửa và tránh lặp lại yêu cầu. Ở hướng phúc đáp, mỗi host phải xoá bỏ Via của nó, do đó thông tin định tuyến nội bộ được che khuất đối với phía bị gọi và các mạng bên ngoài.
4.1.3.6. Thay đổi một phiên hiện tại
Trong một vài trường hợp, cần phải thay đổi các thông số của phiên hội thoại hiện tại. Việc đó được thực hiện bởi việc phát lại các yêu cầu INVITE. Các yêu cầu INVITE đó có cùng trường Call-ID nhưng có trường mào đầu và trường bản tin khác với yêu cầu ban đầu để mang thông tin mới. Các bản tin INVITE đó phải có chỉ số CSeq cao hơn các yêu cầu trước. Ví dụ: có hai thành viên đang hội thoại và muốn có thêm một người thứ ba tham gia. Một trong hai thành viên sẽ mời thành viên thứ ba tham gia với một địa
Đồ án tốt nghiệp Đại học Chương 4. Các giao thức ngang hàng
chỉ đa hướng (Multicast) mới và đồng thời gửi một bản tin INVITE đến thành viên thứ hai với trường miêu tả phiên đa hướng nhưng có trường Call-ID cũ.