2. 기본 용어정리
• IP – 인터넷 주소, IPv4/IPv6.
• Port – 같은 IP 주소 내의 주소, 부호없는 2바이트 정수
(0 ~ 65535).
• 소켓 – 고유의 ip+port 로 구성된 통신 접점(endpoint),
인터넷 통신을 위한 unique한 identification.
• 소켓 id – 해당 호스트에서 특정 소켓에 대한 id(4바이트
정수).
• 세션/채널 – 통신을 위한 두 접점(endpoint)간에 논리적
통신선로, 주로 TCP 통신에서 클라이언트/서버 간에 연
결을 맺은 상황.
3. 포트 바인딩 개념
※ TCP와 UDP 포트는 서로 별개
0 1 2 … 655358001 110008000
프로세스 A 프로세스 B
소켓 소켓 소켓
… …
5. TCP와 UDP
TCP UDP
1. 연결(세션)이 있다
2. 전송을 보장한다
3. 스트림 방식
4. 수신패킷의 순서 보장 O
1. 연결(세션)이 없다
2. 전송을 보장하지 않는다
3. 다이어그램 방식
4. 수신패킷의 순서 보장 X
6. UDP (1)
A B
SW SW
SW SW
SW
1
1
1
2 2
3
3
4
4
4
• 전송순서 1,2,3,4 => 수신순서 2,4,1 (3은 버려짐)
• 전송 패킷 그대로 패킷수신 (데이터 크기가 같음)
• 신뢰성 없는 택배
7. UDP (2)
• 통신을 위한 연결이 없다 (Server/Client 방식이 아님)
• 송신자는 상대의 수신여부에 상관없이 계속해서 전송 => 네트웍 딜
레이(jitter)가 덜하다
• 패킷 손실(packet loss)이 발생할 수 있다
• 수신 패킷들의 순서가 뒤바뀔 수 있다
• 송신 패킷 크기 그대로 수신한다 (다이어그램 방식) => 도착하던가
버려지던가
• 구현이 용이하다
• 주로 실시간성이 중요시되는 프로토콜 구현에 사용 => RTP
8. TCP (1)
• Host A는 DS1에 대한 응답(ACK)이 올때까지 다음 패킷을 보내지않음
=> 수신 패킷의 순서 보장
• 정해진 시간 동안 ACK가 오지않으면 DS1 재전송(retransmission) =>
전송을 보장
• 송신 데이터는 TCP 가 쪼개거나 합칠 수 있다 => 스트림 방식
• 수신 데이터는 응용프로그램이 요청하는 만큼 준다 => 스트림 방식
9. TCP (2)
• 양방향으로 데이터가 흘러가는 방식
• 패킷 손실이 없고 순서를 보장
• 송수신 버퍼의 크기에 따라 송수신 데이터량을 조절
• 물탱크를 가진 양방향 파이프
송신버퍼
수신버퍼
수신버퍼
송신버퍼
Host A Host B
10. TCP (3)
• 서버는 특정 포트를 열고 대기하다가 클라이언트의 연결
요청을 받으면 연결을 맺는다 => 연결방식
• 전송패킷에 대한 응답(ACK)을 받지 않으면 재전송하는
방식 => 전송보장, 순서 보장
• 송수신 패킷은 합쳐지거나 쪼개질 수 있다 => 스트림 방
식
• 네트웍상에 트래픽 증가(jitter 발생)
• 구현이 용이하지 않음 (서버-클라이언트 방식, 수신 데이
터에 경계가 없다)
• 연결을 끊을때 상대에게 알려줘야 한다
11. RTSP 설명
• Real Time Streaming Protocol (RFC2326)
• 실시간 데이터 전송을 제어하기 위한 응용계층 프로토콜
• RTSP 서버/클라이언트 구조 (554번 포트 사용)
• Request/Response 방식 (주로 클라이언트가 request/서
버가 response)이며 text 기반 => HTTP 서버와 유사
• RTSP 서버/클라이언트는 세션별로 상태를 가짐
• 주로 video/audio 같은 미디어 스트리밍 제어에 사용
=> live/vod 미디어 스트림, Video Conference
• 주로 TCP 사용
13. RTSP 주요 메시지 설명
1. OPTIONS – 사용 가능한 메소드를 얻는다
2. DESCRIBE – 해당 서버세션에 대한 설명을 얻는
다 (SDP – Session Description Protocol)
3. SETUP – 스트림 전송(Transport)에 관해서 서로
약속을 정한다
4. PLAY – 스트림 전송을 시작한다
5. TEARDOWN – 스트림 전송을 중단하고 세션을
종료한다.
15. RTP
• Real-time Transport Protocol
• 비디오/오디오와 같은 실시간 패킷을 전송하기
위한 응용계층 프로토콜
• TCP/UDP 모두 사용가능, UDP로 많이 사용(네트
웍 딜레이 문제) => 방화벽 관련 문제로 TCP에
서도 사용
16. RTP 헤더
M – Marker bit => 프레임 경계의 끝
PT – Payload Type => 스트림 데이터의 종류
Sequence number => 전송 패킷순서, +1씩 증가
Timestamp => 해당 패킷의 인코딩(출력) 시간, 일정간격으로 증가
12 바이트 고정
17. RTCP
• RTP Control Protocol
• RTP 전송에 관한 QoS 정보를 전송 => RTP 수신 패킷통
계, jitter 계산, 손실패킷 개수 등
• 전송자(RTSP 서버)가 RTCP 정보를 통해 네트웍 상태를
모니터링하고 Adaptive Encoding이 가능하도록 정보를
제공
• 실제로는 RTSP 클라이언트-서버 간에 KeepAlive 용도로
많이 사용
18. RTSP 스트리밍 구조(1)
• RTSP 는 TCP Connection 이며 연결종료시까지 유지
• Video/Audio 에 대한 RTP/RTCP 데이터는 각각 서로 다른 UDP 포트
로 전송 (RTCP 포트=RTP 포트+1)
RTSP
Server
RTSP
Client
RTSP/TCP
Video RTP/UDP
Video RTCP/UDP
Audio RTP/UDP
Audio RTCP/UDP
19. RTSP 스트리밍 구조(2)
• TCP 연결을 통해 RTSP 세션을 맺은 뒤 Video/Audio RTP/RTCP 모든
데이터는 같은 RTSP 세션을 통해 전송
• RTPOverRTSP / RTPOverTCP / Interleaved 방식
• 네트웍 딜레이가 있지만 신뢰성있는 전송과 방화벽 문제해결
RTSP
Server
RTSP
Client
RTSP/TCP
RTP/RTCP 모두 전송