이 장에서는 오디오 및 비디오 서비스를 위해 인터넷을 사용하는 응용 프로그램에 중점을 둔다
스트리밍 stored 오디오/비디오는 압축 오디오/비디오 파일에 대한 요청
스트리밍 라이브 오디오/비디오는 인터넷을 통해 라디오 및 TV 프로그램을 방송하는 것
interactive 오디오/비디오는 대화형 오디오/비디오 응용 프로그램에 인터넷을 사용하는 것
오디오 또는 비디오 신호를 인터넷에서 전송하려면 먼저 디지털화해야 한다
인터넷을 통해 비디오를 전송하려면 압축이 필요하다
인터넷을 통해 오디오나 비디오를 보내려면 압축이 필요하다
오디오 압축과 비디오 압축에 대해 설명한다
저장된 오디오 및 비디오를 스트리밍하는 방법을 알아본다
웹 서버에서 이러한 유형의 파일을 다운로드하는 것은 다른 유형의 파일을 다운로드하는 것과 다를 수 있다
이 접근 방식은 매우 간단하며 스트리밍이 필요하지 않다
그러나 오디오/비디오 파일은 일반적으로 압축 후에도 크기가 크다
이 접근 방식에서 파일은 재생되기 전에 완전히 다운로드되어야 한다
속도가 느리다!!
문제점은 브라우저와 미디어 플레이어가 모두 HTTP 서비스를 사용한다는 것
HTTP는 TCP를 통해 실행되도록 설계되었다
이것은 메타파일 검색에는 적합하지만 오디오/비디오 파일 검색에는 적합하지 않다
그 이유는 TCP가 손실되거나 손상된 세그먼트를 재전송하기 때문에 스트리밍 철학에 어긋나기 때문이다
UDP를 사용해야 한다
그러나 웹 서버에 액세스하는 HTTP와 웹 서버 자체는 TCP용으로 설계되었다
또 다른 서버인 미디어 서버가 필요하다
그림은 개념을 보여준다
그림 25.13은 미디어 서버와 RTSP를 보여준다
실시간 대화형 오디오/비디오에서 사람들은 실시간으로 서로 통신한다
인터넷 전화 또는 VoIP(Voice over IP), 화상회의 등이 있다
실시간 데이터는 세션 패킷 간의 시간 관계를 보존해야 한다
예를 들어 첫 번째 패킷은 00:00:00에 시작하고 두 번째 패킷은 00:00:10에 시작하며 세 번째 패킷은 00:00:20에 시작한다
또한 각 패킷이 대상에 도달하는 데 1초(간단함을 위해 과장됨)가 걸린다고 상상해 본다
receiver는 첫 번째 패킷을 00:00:01에, 두 번째 패킷을 00:00:11에, 세 번째 패킷을 00:00:21에 재생할 수 있다
그러나 패킷이 다른 지연으로 도착하면 어떡해?
예를 들어, 첫 번째 패킷은 00:00:01(1초 지연)에 도착하고, 두 번째 패킷은 00:00:15(5초 지연)에, 세 번째 패킷은 00:00:27(7초 지연)에 도착한다
수신기가 00:00:01에 첫 번째 패킷을 재생하기 시작하고 끝냈지만 다음 패킷은 아직 도착하지 않았다
원격 사이트에서 비디오를 볼 때 첫 번째 패킷과 두 번째 패킷 사이, 두 번째 패킷과 세 번째 패킷 사이에 간격이 있다
이 현상을 지터라고 한다
그림은 상황을 보여준다
패킷 간의 지연으로 인해 실시간 데이터에 지터가 생긴다
지터에 대한 한 가지 솔루션은 타임스탬프를 사용하는 것이다
각 패킷에 타임스탬프가 있는 경우 수신기는 각 패킷을 타임스탬프에 맞춰 실행한다
패킷 사이에 간격이 없게 진행된다
지터를 방지하기 위해 패킷에 타임스탬프를 이용해 도착 시간을 재생 시간과 분리할 수 있다
playback buffer
라고 한다앞의 예에서 첫 번째 패킷의 첫 번째 비트는 00:00:01에 도착한다
임계값은 7초이고 재생 시간은 00:00:08이다
임계값은 데이터의 시간 단위로 측정된다
데이터의 시간 단위가 임계값과 같아질 때까지 재생이 시작되지 않는다
데이터는 각각 다른 속도로 버퍼에 저장되지만 고정된 속도로 추출되고 재생된다
버퍼의 데이터 양이 줄어들거나 늘어나지만 지연이 임계 데이터 양을 재생하는 시간보다 짧으면 지터가 없다
실시간 트래픽을 위해서는 playback buffer가 필요하다
실시간 트래픽을 위해서는 각 패킷의 시퀀스 번호가 필요하다
실시간 트래픽은 멀티캐스팅 지원이 필요하다
translation은 수신 네트워크의 대역폭과 일치하도록 페이로드의 인코딩을 더 낮은 품질로 변경하는 것을 의미
Mixing은 여러 트래픽 스트림을 하나의 스트림으로 결합하는 것을 의미
TCP는대화형 멀티미디어 트래픽에 적합하지 않다 재전송해도 소용이 없으니깐
UDP는 대화형 트래픽에 TCP보다 더 적합
그러나 UDP의 단점을 보완하기 위해서는 또 다른 전송 계층 프로토콜인 RTP의 서비스가 필요하다
그림 25.18은 프로토콜에서 RTP의 위치를 보여준다
RTP는 임시 짝수 UDP 포트를 사용합니다.
Message type
RTCP는 RTP에 대해 선택된 포트 번호 뒤에 오는 홀수 UDP 포트 번호를 사용한다
하나의 실시간 대화형 오디오/비디오 애플리케이션인 VoIP 또는 인터넷 전화에 집중해 보겠다
아이디어는 인터넷을 몇 가지 추가 기능이 있는 전화 네트워크로 사용하는 것이다
circuit switched 네트워크를 통해 통신하는 대신 이 응용 프로그램은 packet switched 인터넷을 통해 두 당사자 간의 통신을 허용한다
이러한 유형의 통신을 처리하기 위해 SIP 및 H.323의 두 가지 프로토콜이 설계되었다
SIP에서는 이메일 주소, IP 주소, 전화 번호 및 기타 유형의 주소를 사용하여 발신자와 수신자를 식별할 수 있다
SIP에서 세션을 설정하려면 3방향 핸드셰이크가 필요하다
호출자는 통신을 시작하기 위해 UDP, TCP 또는 SCTP를 사용하여 INVITE 메시지를 보낸다
수신자가 세션을 시작하려는 경우 응답 메시지를 보낸다
응답 코드가 수신되었음을 확인하기 위해 호출자는 ACK 메시지를 보낸다
세션이 설정된 후 호출자와 수신자는 두 개의 임시 포트를 사용하여 통신할 수 있습니다.
세션은 어느 쪽이 보낸 BYE 메시지로 종료될 수 있습니다.