Multimedia networking
- 어떻게 유튜브 같은 멀티 미디어 서비스가 동작하는지 공부
- 아날로그 => 디지털화
오디오

멀티미디어 서비스가 제공하는 첫번째 기능: 오디오
- 아날로그 시그널을 디지털 신호로 변환하는 작업을 sampling 이라고 함
- 자연스러운 소리를 정영화된 비트로 변환하는 작업
- 샘플링 주기를 짧게하면 짧게할수록, 샘플링 할때 비트수가 많으면 많을수록 더 완벽하게 아날로그 소리와 같아짐
- 1초에 나타내는 비트 양: CD는 1.411 Mbps, MPS는 96, 128, 160 kbps, CD가 더 고음질
- coding rate가 높을수록 음질이 좋음
비디오

- 비디오는 이미지의 연속, 초당 나타내는 이미지 횟수가 많을수록 고화질
- 각 이미지는 프레임이라고 한다, 프레임에는 해당 이미지에 모든 픽셀 정보가 담겨있음
- 어차피 근처 픽셀끼리는 같은 색을 가지고 있음, 그렇기에 중복되는 픽셀은 압축시켜서 프레임에 저장해놈
- 초당 나타내는 프레임 수를 coding rate 라고 함
- coding rate가 높을수록 화질이 좋음
멀티미디어 네트워크의 3가지 타입
1. streaming, stored: 이미 서버에 저장되어있는 오디오, 비디오를 틀어줌(youtube, Netflix)
2. conversational: voice/video over IP (Skype)
3. streaming live: 라이브 송출(아프리카)
Streaming stored video
유트브는 어떻게 동작할까

jitter: 딜레이가 일정하지 않은 문제점
빨간색 그래프가 서버가 보내고 검정색이 클라이언트가 받는 것을 나타내는데 그래프를 보면 알 수 있듯이 jitter가 나타난다.=> 바로 플레이할 수 없다
=> 첫번째 프레임을 받고나서 바로 플레이하지 않고 어느정도 기다린 뒤 플레이한다 = 이것이 버퍼링이다

들어오는 속도보다 playout하는 속도가 빠르면 텅 비면서 갑자기 멈춘다
- 서버에서 주는 그대로 host에서 플레이를 하는게 베스트, 하지만 네트워크 상황 때문에 바로 송출하기는 어려움
- host는 서버에서 받은 데이터를 바로 송출하지 않고 잠시 버퍼에 담았다가 해당 버퍼가 어느정도 차면 그때 송출(버퍼링)
멀티미디어의 Transport 계층
- UDP는 네트워크 상황을 고려 안하니 네트워크 상황이 나쁠경우 하나도 제대로 가지 않아서 사용하기 어려움
- TCP는 또 너무 네트워크 상황에만 의존해서 컨트롤 하기 어려움
- 그래서 멀티미디어 서비스에서는 TCP 기반의 DASH라는 프로토콜을 사용 (http를 사용해 streming)

- 2GB 짜리 영화가 있을때 2GB를 통째로 인코딩(저장)하는게 아니라 256kb 등 작은 단위(chunks)로 쪼갬
- 각 chunks를 하나의 버전으로 인코딩 하는 것이 아닌 128kbps, 256kbps, 512kbps, 1mbps, 2mbps, 5mbps... 등으로 인코딩 해놓음
- 각 chunks별 인코딩된 url을 담아놓는 테이블을 manifest file이라고 함
- 사용자가 영상을 시청하면 이 manifest file을 넘겨줌
- 처음에 영상을 틀때 128kbps부터 틀어줌, 그리고 네트워크 상황을 판단해서 괜찮으면 인코딩 버전을 점점 늘리고 상황이 안좋으면 점점 낮춤
- youtube는 동시 사용자가 많음, 이 경우 모든 영상을 한 곳에 저장돼 있으면 요청이 너무 많아지면 수용을 못하는 문제가 발생함
- 파일 저장 서버를 한곳에 두는 것이 아닌 전세계에 두는 CDN (Content Distribution Network)방식을 사용함
- 사용자가 요청이 오면 메인 서버는 manifest file만 넘겨주고 사용자는 근처 서버에서 데이터를 받아옴
- 근데 사용자마다 같은 manifest file을 받는데 어떻게 각각 다른 서버에서 데이터를 받아올수 있지?
- manifest file url을 찾아가려면 해당 IP를 알아야함
- DNS 쿼리를 보내 해당 IP를 알 수 있음
- 한국에서 요청이 오면 한국 cdn의 ip를, 캐나다에는 캐나다 cdn의 ip를 알려줌 (요청한 사람의 src ip를 보고 가장 근처의 cdn ip를 알려줌)
- DNS 쿼리를 보내는 과정에서 사용자의 IP 주소가 manifest file을 관리하는 CDN의 DNS 서버에게 전달됨
- 해당 DNS 서버는src IP주소로 판단해서 근처 CDN 서버의 IP를 알려줌
- 그래서 같은 manifest file을 받아도 각 지역마다 다른 서버에 접속하게 됨
'CS이론 > 네트워크' 카테고리의 다른 글
네트워크 보안 (0) | 2024.02.16 |
---|---|
[링크계층] Cellular Network (0) | 2024.02.13 |
[링크계층] 무선이동 네트워크 (0) | 2024.02.13 |
[전송계층 1] Multiplexing and Demultiplexing UDP 헤더필드 (0) | 2024.01.19 |
[애플리케이션 계층2] 소켓 (TCP소켓, UDP소켓) (0) | 2024.01.19 |