SIP & SDP – Session Description Protocol

Protokołu SIP jest protokołem sygnalizacyjnym używanym do inicjowania sesji multimedialnych. SIP umożliwiają realizacje negocjacji charakterystyki sesji oraz jej aktualizacje ale sam w sobie nie zawiera mechanizmów do opisu kształtu sesji, przenoszonej za pomocą protkołu RTP. W tym celu SIP wykorzystuje protokół SDP (Session Descriptions Protocol)
wchodzący bezpośrednio w skład komunikatu. SDP zawiera informacje o rodzaju
mediów, kodekach i ich parametrach, adresach IP, kierunku strumieniów, dostępnym pasmie itp.

Opis sesji:

  • v= (protocol version) – wersja protokołu -> “0”
  • o= (originator and session identifier) – zrodlo i identyfikator sesji -> “dowolna_nazwa id_sesji wersja_sesji IN (IP4|IP6) adresIP_zródła_sesji”
  • s= (session subject) – temat sesjii -> “-“
  • i=* (session information) – opis sesji -> nie używany
  • u=* (URI of description) – uri dodatkowe opisu sesji -> nie używany
  • e=* (email address) – adres email osoby odpowiedzialnej za sesje -> nie używany
  • p=* (phone number) – numer telefoniczny osoby odpowiedzialnej za sesje -> nie używany
  • c=* (connection information) – opis połaczenia, nie wymagany jeśli obecny dla każdego strumienia mediów -> “IN (IP4|IP6) adresIP”
  • b=* (zero or more bandwidth information lines) – sugerowane pasmo -> nie używany
  • One or more time descriptions
  • z=* (time zone adjustments)- definicja strefy czasu -> nie używany
  • k=* (encryption key) – klucz szyfrujący -> nie używane
  • a=* (zero or more session attribute lines) – atrybuty: sendonly – jeśli strona tylko chce wysyłać media, recvonly – jeśli strona chce tylko odbierać media, inactive – bez mediów, sendrecv – jeśli strona chce wysyłać i odbierać media
  • Zero or more media descriptions

Opis Czasu:

  • t= (time the session is active) – czas sesji -> “0 0”
  • r=* (zero or more repeat times) – cykliczność sesji -> nie używany

Opis Mediów:

  • m= (media name and transport address) – opis mediów -> “(audio|video|text) RTP/AVP opis danych medialnych”
  • i=* (media title) – opis mediów -> nie używany
  • c=* (connection information) – opis połaczenia, nie wymagany jeśli obecny w opisie sesji, nadpisuje wartość z opisu sesji -> “IN (IP4|IP6) AdresIP”
  • b=* (zero or more bandwidth information lines) – sugerowane pasmo -> nie używany
  • k=* (encryption key) – klucz szyfrujący -> nie używane
  • a=* (zero or more media attribute lines)  – atrybuty strumienia, nadpisują atrybuty zdefiniowane w opisie sesji: sendonly – jeśli strona tylko chce wysyłać media, recvonly
    – jeśli strona chce tylko odbierać media, inactive – bez mediów,
    sendrecv – jeśli strona chce wysyłać i odbierać media, rtcp – port dla rtcp jesli nie, ptime – dlugosc mediów w sekunadach w przesylanym pakiecie, rtpmap – mapuje numer typu zawartosci do konkretnego kodeka i jego czestotliwosci, fmtp – umożliwia mapowanie parametrow tak aby sdp nie musialo tego rozumiec
You May Also Like

Context menu or Action buttons ?

Recently I was drawn into one of those UI "religious" disputes that has no easy answers and usually both sides are right. One of our web developers was trying out new web tech (with pretty rich widget library) and started to question himself about some basic usability decisions. The low level problem in this case is usually brought to "which widget should I use ?". I'm not fond of bringing the usability problems to questions: Should I use Tabs over Menu ? Or should I use Context menu instead of buttons panel ? But sometimes if time is crucial factor and other usability levels are by default not addressed at all - better developer that asks those basic questions than developer that do not question himself at all.