Podstawowe funkcje SIP (Session Initiation Protocol)
w realizacji połączenia to: lokalizacja punktów końcowych (użytkownika
A i B), sygnalizowanie chęci do komunikacji, negocjacja parametrów
sesji by zestawić sesję oraz zwolnienie sesji już zestawionej.
Użytkownicy dzwonią do
siebie stosując identyfikację SIP URI (Uniform Resource Identifier),
która jest podobna do adresu email, zawierającego nazwę użytkownika i
nazwę hosta (przykład sip:
). SIP może także
stosować bezpieczne URI, nazywane SIPS URI (przykład
sips:
). Połączenie wykonane do SIPS URI gwarantuje,
że bezpieczny, szyfrowany transport (TLS - Transport Layer Security)
jest stosowane przy przenoszeniu wszystkich wiadomości SIP od
wywołującego do domeny wywoływanego użytkownika, skąd żądania są
wysyłane bezpiecznie do wywoływanego użytkownika, ale z mechanizmami
bezpieczeństwa, które zależą od polityk jego domeny.
SIP
(Session Initiation Protocol) oparty jest o model transakcyjny zapytań/odpowiedzi podobnych do HTTP.
Każda transakcja składa się z żądań, które przywołują odpowiednią
metodę lub funkcję na serwerze i przynajmniej jedną odpowiedź. Przykład
metody INVITE w SIP, która określa akcję, w której żądający (ipnet)
chce wziąć do pracy serwer użytkownika wywoływanego (nomad).
SIP
(Session Initiation Protocol) zbudowany jest jako protokół warstwowy, co oznacza, że jego zachowanie
jest opisane przez niezależne stany przetwarzania z luźnym powiązaniem
miedzy poszczególnymi stanami (stadiami). Zachowanie protokołu jest
opisane jako warstwy dla celów prezentacji, umożliwiających opisanie
funkcji wspólnych dla elementów w pojedynczej sekcji. Nie narzuca on w
jakikolwiek sposób implementacji. Jeśli mówimy, że element zawiera
warstwę, mamy na myśli, że jest zgodny dla zbioru reguł określonych
przez tą warstwę.
Nie
każdy element określony przez protokół zawiera wszystkie warstwy,
ponadto elementy definiowane przez SIP są elementami logicznymi, a nie
fizycznymi.
Najniższą
warstwą SIP (Session Initiation Protocol) jest składnia i kodowanie. Kodowanie jest wykonywane przy
użyciu gramatyki BNF (notacja Backus-Naur Form).
Drugą
warstwą jest warstwa transportowa. Określa jak klient wysyła żądania i
otrzymuje odpowiedzi oraz jak serwer wysyła/odbiera żądania/odpowiedzi
poprzez sieć. Wszystkie elementy SIP zawierają warstwę transportową.
Trzecią
warstwą jest warstwa transakcyjna. Transakcje są fundamentalnym
komponentem SIP. Transakcja jest żądaniem wysłanym przez transakcję
klienta (przy wykorzystaniu warstwy transakcyjnej) do transakcji
serwera, z wszystkimi odpowiedziami na to żądanie, wysłanymi z
transakcji serwera do klienta. Warstwa ta obsługuje retransmisje
warstwy aplikacyjnej, dopasowanie odpowiedzi do żądań oraz timeouty
warstwy aplikacyjnej.
Powyżej
warstwy transakcyjnej znajduje się wartswa użytkownika transakcji (TU).
Każdy z elementów SIP, oprócz bezstanowego proxy, jest użytkownikiem
transakcji.
Elementy
SIP, takie jak user agent client UAC i user agent server UAS, stateless
i stateful proxy oraz registrar, zawierają rdzeń który rozróżnia je od
siebie. Wszystkie rdzenie są użytkownikami transakcyjnymi, oprócz
elementu stateless proxy.
Metody SIP (Session Initiation Protocol):
INVITE - zapoczątkowanie wywołania przez zaproszenie użytkownika do sesji.
ACK - Potwierdza odebranie odpowiedzi na żądanie INVITE.
BYE - zakończenie wywołania.
CANCEL - anulowanie żądania trwającego.
REGISTER - rejestrownie agenta użytkownika.
OPTIONS - odpytanie o możliwości serwera.
INFO - przenoszenie informacji dodatkowej, np. cyfr DTMF.
Kody odpowiedzi w SIP (Session Initiation Protocol):