UDP -> 실시간 영상 서비스,DNS, 멀티미디어
TCP -> 웹 HTTP 통신, 이메일, 파일전송
실제 서비스에서 어떻게 사용되는지 궁금
- 해외 네트워크에서 실시간 영상 서비스를 개발해야 하는 상황
해외 현지 네트워크를 통째로 기록해서 한국으로 가져와 똑같이 에뮬레이션 할 수 있다면??
(+ 통신 선로길이, 매질의 굴절율, 링크의 용량, 라우터의 크기, 무선 주파수 대역폭, 안테나 중계기 등 무선 통신 인프라 밀집도, 무선 통신 전송 전력, 무선 통신 SNR....)
1. 서버와 클라이언트는 현재 처리 가능한 버퍼 크기를 언제, 어떤 방식으로 서로 알 수 있을까?
ACK패킷의 rwnd값을 통해 연속적으로 상호 교환(흐름제어)
-> 많은 양의 패킷을 전송하는 시도를 사전에 방지
2. 현재 연결된 채널에서 처리할 수 있는 채널 용량을 어떻게 알 수 있을까?
실제로 채널에서 데이터를 교환해 가면서 허용량을 측정하는 작업을 수행해야 함.
slow-start: 초기값에서 한번의 RTT마다 cwnd값 2배
패킷전송을 실패, 일정시간 넘으면 속도 절반
실제로 송신자가 송신하는 데이터 크기는 min(rwnd,cwnd) 로 결정
(혼잡제어)
일반적인 네트워크 환경에서는 채널의 최대 처리량을 활용하지 못하고 윈도우 크기에 맞춰서 전송하고 ACK수신하여 나머지 다시 전송해야 하는 성능저하
그렇다고 무한히 윈도우 크기를 증가시킬수는 없기에...
3.너무 많은 양의 패킷이 전송되면 채널과 라우터에서는 어떤 일이 일어날까?
채널에 연결된 라우터는 처리 용량의 한계가 있기 때문에, 혼잡이 발생하면 패킷이 큐에서 대기하며 정체가 발생하고, 지정된 시간 내에 처리하지 못하면 타임 아웃되어 라우터가 패킷을 폐기하기 시작
4. 패킷이 유실된다는 것은 정확히 어떤 의미일까?
패킷손실은 오류라기 보다는 네트워크의 부담을 덜어주기 위한 의도적인 피드백 동작
실제 대역폭은 톱니 모양의 패턴
대역폭, 레이턴시와 TCP 의 관계를 이해하고 이둘을 파악해 오는 것이 네트워크 환경에 서비스를 최적화 하기 위해 중요하다.
ex) LINE TV 태국 현지 서비스
(예상)
udp를 사용하는 서비스들
왜 이런 서비스들은 udp를 사용할까?
의문에 대한 답을 찾아가고 있다.
응용계층에서
RTSP(Real-Time Streaming Protocol) 나 RTR(Real-time Transport Protocol)등을 사용.
별도의 스트리밍 서버가 필요.
스트리밍 서버는 비디오 플레이어와 커넥션을 유지한 채로 비디오 재생을 함
커넥션을 유지함에 따라 HTTP를 이용한 전송시 불가능 했던 Adaptive Streaming이 가능해짐
(Adaptive Streaming은 사용자의 네트워크, CPU등의 상태를 모니터링하여 상황에 최적화된 화질을 전송해주는 방법을 말함)
서버에 고화질/일반화질/저화질 등으로 영상을 준비해 놓고 Player에서는 Client의 네트워크나 대역폭 상황에 따라 화질을 변경하여 사용자 환경에 최적화된 화질을 제공.
시청하고 있는 주변의 스트림만 클라이언트의 버퍼로 저장해 놓게 된다.
네트워크 비용절감 + 서버의 Capacity를 효과적으로 운영하게 되는 이점이 생김으로 운영하게 되는 이점이 생김
신뢰적인TCP, 비신회적인UDP 등 다양한 전송 프로토콜 위에서 동작 가능토콜 위에서 동작 가능