※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다.
출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다.
Multimedia networking
- 어떻게 유튜브 같은 멀티 미디어 서비스가 동작하는지 공부
멀티미디어 서비스가 제공하는 첫번째 기능: 오디오
- 아날로그 시그널을 디지털 신호로 변환하는 작업을 sampling 이라고 함
- 자연스러운 소리를 정영화된 비트로 변환하는 작업
- 샘플링 주기를 짧게하면 짧게할수록, 샘플링 할때 비트수가 많으면 많을수록 더 완벽하게 아날로그 소리와 같아짐
- 1초에 나타내는 비트 양: CD는 1.411 Mbps, MPS는 96, 128, 160 kbps, CD가 더 고음질
멀티미디어 서비스가 제공하는 첫번째 기능: 비디오
- 비디오는 이미지의 연속, 초당 나타내는 이미지 횟수가 많을수록 고화질
- 이미지는 곧 프레임, 프레임에는 해당 이미지에 모든 픽셀 정보가 담겨있음
- 대개 근처 픽셀끼리는 같은 색을 가지고 있음, 그렇기에 중복되는 픽셀은 압축시켜서 프레임에 저장해놈
- 초당 나타내는 프레임 수를 coding rate 라고 함
멀티미디어 네트워크의 3가지 타입
1. streaming, stored: 서버에 저장되어있는 오디오, 비디오를 틀어줌(youtube, Netflix)
2. conversational: voice/video over IP (Skype)
3. streaming live: 라이브 송출(아프리카)
Streaming stored video
- 서버에서 주는 그대로 host에서 플레이를 하는게 베스트, 하지만 네트워크 상황 때문에 바로 송출하기는 어려움
- host는 서버에서 받은 데이터를 바로 송출하지 않고 잠시 버퍼에 담았다가 해당 버퍼가 어느정도 차면 그때 송출(버퍼링)
- UDP는 네트워크 상황을 고려 안하니 네트워크 상황이 나쁠경우 하나도 제대로 가지 않아서 사용하기 어려움
- TCP는 또 너무 네트워크 상황에만 의존해서 컨트롤 하기 어려움
- 그래서 멀티미디어 서비스에서는 TCP 기반의 DASH라는 프로토콜을 사용
- 2GB 짜리 영화가 있을때 2GB를 통채로 저장하는게 아니라 256kb 등 작은 단위(chunks)로 쪼갬
- 각 chunks를 하나의 버전으로 인코딩 하는 것이 아닌 128kbps, 256kbps, 512kbps, 1mbps, 2mbps, 5mbps... 등으로 인코딩 해놓음
- 각 chunks별 인코딩된 url을 담아놓는 테이블을 manifest file이라고 함
- 사용자가 영상을 시청하면 이 manifest file을 넘겨줌
- 처음에 영상을 틀때 128kbps부터 틀어줌, 그리고 네트워크 상황을 판단해서 괜찮으면 인코딩 버전을 점점 늘리고 상황이 안좋으면 점점 낮춤
- youtube 같은 경우 동시 사용자가 많음, 이 경우 모든 영상을 한 곳에 저장돼 있으면 요청이 너무 많아지면 수용을 못하는 문제가 발생함
- 파일 저장 서버를 한곳에 두는 것이 아닌 전세계에 두는 CDN 방식을 사용함
- 사용자가 요청이 오면 메인 서버는 manifest file만 넘겨주고 사용자는 근처 서버에서 데이터를 받아옴
- 근데 사용자마다 같은 manifest file을 받는데 어떻게 각각 다른 서버에서 데이터를 받아올수 있지?
- manifest file url을 찾아가려면 해당 IP를 알아야함
- DNS 쿼리를 보내 해당 IP를 알 수 있음
DNS 동작 원리 : https://ijbgo.tistory.com/27
- DNS 쿼리를 보내는 과정에서 사용자의 IP 주소가 manifest file을 관리하는 CDN의 DNS 서버에게 전달됨
- 해당 DNS 서버는 받은 IP주소로 판단해서 근처 CDN 서버의 IP를 알려줌
- 그래서 같은 manifest file을 받아도 각 지역마다 다른 서버에 접속하게 됨
'[CS] > [컴퓨터네트워크]' 카테고리의 다른 글
네트워크 보안 (0) | 2021.07.16 |
---|---|
링크계층 - Cellular Network (0) | 2021.07.10 |
링크계층 - 무선이동네트워크2 (0) | 2021.07.08 |
링크계층 - 무선이동네트워크1 (0) | 2021.07.03 |
링크계층 - 스위치 (0) | 2021.07.01 |