SIP-제안 / 답변 모델
SIP와 함께 SDP를 사용하는 방법은 SDP 제안 응답 RFC 3264에 나와 있습니다. SIP의 기본 메시지 본문 유형은 다음과 같습니다. application/sdp.
발신자는 일반적으로 INVITE 또는 ACK에서 SDP에서 수신하려는 미디어 기능을 나열합니다.
수신자는 INVITE에 대한 200 OK 응답에 미디어 기능을 나열합니다.
SDP의 일반적인 SIP 사용에는 버전, 출처, 제목, 시간, 연결, 하나 이상의 미디어 및 속성 등의 필드가 포함됩니다.
제목 및 시간 필드는 SIP에서 사용되지 않지만 호환성을 위해 포함됩니다.
SDP 표준에서 제목 필드는 필수 필드이며 하나 이상의 문자를 포함해야하며 제목이없는 경우 s =-로 제안됩니다.
시간 필드는 일반적으로 t = 00으로 설정됩니다. SIP는 연결, 미디어 및 속성 필드를 사용하여 UA 간의 세션을 설정합니다.
origin 필드는 SIP에서 제한적으로 사용됩니다.
session-id는 일반적으로 SIP 세션 동안 일정하게 유지됩니다.
버전은 SDP가 변경 될 때마다 증가합니다. 전송중인 SDP가 이전에 전송 된 것과 변경되지 않은 경우 버전은 동일하게 유지됩니다.
사용할 미디어 세션 및 코덱 유형이 연결 협상의 일부이므로 SIP는 SDP를 사용하여 여러 대체 미디어 유형을 지정하고 이러한 미디어 유형을 선택적으로 수락하거나 거부 할 수 있습니다.
제안 / 응답 사양 인 RFC 3264은 = rtpmap :을 포함하는 속성을 각 미디어 필드에 사용하도록 권장합니다. SDP 응답의 해당 미디어 필드에 대해 포트 번호를 0으로 설정하면 미디어 스트림이 거부됩니다.
예
다음 예에서 발신자 Tesla는 두 개의 가능한 오디오 코덱과 초기 INVITE에 전달 된 SDP의 비디오 코덱을 사용하여 오디오 및 비디오 통화를 설정하려고합니다.
v = 0
o = John 0844526 2890844526 IN IP4 172.22.1.102
s = -
c = IN IP4 172.22.1.102
t = 0 0
m = audio 6000 RTP/AVP 97 98
a = rtpmap:97 AMR/16000/1
a = rtpmap:98 AMR-WB/8000/1
m = video 49172 RTP/AVP 32
a = rtpmap:32 MPV/90000
코덱은 RTP / AVP 프로필 번호 97, 98로 참조됩니다.
수신자 Marry는 전화에 응답하고 첫 번째 미디어 필드에 대해 두 번째 코덱을 선택한 다음 두 번째 미디어 필드를 거부하고 AMR 세션 만 원합니다.
v = 0
o = Marry 2890844526 2890844526 IN IP4 172.22.1.110
s = -
c = IN IP4 200.201.202.203
t = 0 0
m = audio 60000 RTP/AVP 8
a = rtpmap:97 AMR/16000
m = video 0 RTP/AVP 32
이 오디오 전용 호출이 허용되지 않는 경우 Tom은 ACK를 보낸 다음 BYE를 보내 호출을 취소합니다. 그렇지 않으면 오디오 세션이 설정되고 RTP 패킷이 교환됩니다.
이 예에서 알 수 있듯이 미디어 필드의 수와 순서가 유지되지 않는 한 발신자는 수신자가 어떤 미디어 세션을 수락하고 거부했는지 알 수 없습니다.
제안 / 응답 규칙은 다음 섹션에 요약되어 있습니다.
제안 생성 규칙
SDP 제안에는 모든 필수 SDP 필드가 포함되어야합니다 (v =, o =, s =, c = 및 t = 포함). SDP의 필수 필드입니다.
일반적으로 미디어 필드 ( m = )를 포함하지만 반드시 그럴 필요는 없습니다. 미디어 행에는 기본 설정 순서로 나열된 모든 코덱이 포함됩니다. 이에 대한 유일한 예외는 엔드 포인트가 엄청난 수의 코덱을 지원하는 경우 허용 될 가능성이 가장 높거나 가장 선호되는 코덱이 나열되어야한다는 것입니다. 다양한 미디어 유형에는 오디오, 비디오, 텍스트, MSRP, BFCP 등이 있습니다.
답변 생성 규칙
제안에 대한 SDP 답변은 다음 규칙에 따라 구성되어야합니다.
답은 답 과 같은 순서로 동일한 수의 m = 행을 가져야합니다 .
포트 번호를 0으로 설정하여 개별 미디어 스트림을 거부 할 수 있습니다.
0이 아닌 포트 번호를 전송하여 스트림을 수락합니다.
각 미디어 유형에 대해 나열된 페이로드는 제안에 나열된 페이로드의 하위 집합이어야합니다.
동적 페이로드의 경우 각 방향에서 동일한 동적 페이로드 번호를 사용할 필요가 없습니다. 일반적으로 단일 페이로드 만 선택됩니다.
세션 수정 규칙
양 당사자는 세션을 수정하기 위해 다른 제안 / 응답 교환을 시작할 수 있습니다. 세션이 수정되면 다음 규칙을 따라야합니다.
원본 ( o = ) 라인 버전 번호는 마지막으로 전송 된 것과 동일해야합니다. 이는이 SDP가 이전 교환과 동일 함을 나타냅니다. 또는 1 씩 증가하여 구문 분석해야하는 새 SDP를 나타냅니다.
제안에는 기존의 모든 미디어 라인이 포함되어야하며 동일한 순서로 전송되어야합니다.
추가 미디어 스트림을 m = 라인 목록 끝에 추가 할 수 있습니다 .
포트 번호를 0으로 설정하여 기존 미디어 스트림을 삭제할 수 있습니다.이 미디어 라인은 SDP 및이 세션에 대한 향후 모든 제안 / 응답 교환에 남아 있어야합니다.
통화 보류
통화중인 한 쪽은 일시적으로 다른 쪽을 보류 할 수 있습니다. 이것은 원래 INVITE와 동일한 SDP를 가진 INVITE를 보내지 만a = sendonly 속성이 있습니다.
다른 INVITE를 보내면 통화가 다시 활성화됩니다. a = sendrecv속성이 있습니다. 다음 그림은 통화 보류의 통화 흐름을 보여줍니다.