Протокол SIP – это текстовый протокол, использующий набор символов ISO 10646 в кодировке UTF8 (RFC 2279). Сообщения протокола SIP представляют собой либо запрос от клиента серверу, либо ответ сервера клиенту.
Запросы и ответы используют один базовый формат сообщения, одинаковый, несмотря на различия в наборе символов и синтаксисе. Сообщения обоих типов состоят из:
• стартовой строки;
• одного или нескольких полей заголовков;
• пустой строки, обозначающей конец полей заголовков;
• тела сообщения (необязательно).
Стартовая строка, каждая строка поля заголовка и пустая строка должны быть завершены символами возврата каретки и перевода строки (CRLF). Пустая строка должна быть независимо от того, присутствует тело сообщения или нет.
Стартовая строка представляет собой начальную строку любого SIPсообщения. Если сообщение является запросом, в этой строке указывается тип запроса, адресат и номер версии протокола. Если сообщение является ответом на запрос, в стартовой строке указывается номер версии протокола, тип ответа и его короткая расшифровка, предназначенная только для пользователя.
Заголовки сообщений служат для передачи информация об отправителе, адресате, пути следования и других сведений, т.е. переносят необходимую для обслуживания данного сообщения информацию. О типе заголовка можно узнать из его имени. За исключением различий в наборе символов, многие SIPсообщения и синтаксис полей заголовков схожи с используемыми в HTTP/1.1, хотя SIP и не является расширением HTTP.
Сообщения протокола SIP могут содержать так называемое тело сообщения. В запросах ACK, INVITE и OPTIONS тело сообщения содержит описание сеансов связи, например, в формате протокола SDP, а запрос BYE не содержит тело сообщения.