💡 TCP
Transmission Control Protocol
(1) 연결형 프로토콜
- 연결을 위해 할당된 논리적인 경로가 있음
3 way handshaking
과정으로 연결, 4 way handshaking
과정으로 해제
(2) Flow Control(흐름 제어)
- 송신측과 수신측의 데이터처리 속도 차이를 해결하기 위한 방법
- 수신자가 패킷을 지나치게 많이 받게 된 경우에 송신자에게 자신의 상태를 피드백하여 송신측의 데이터 전송 속도를 조절하도록 하는 것
Stop and wait
방식, sliding window
기법
(3) Congestion Control(혼잡 제어)
- 송신측 데이터 전달과 네트워크 처리 속도 차이를 해결하기 위한 방법
- 하나의 라우터에 여러 데이터가 몰린 경우 데이터를 모두 처리할 수 없어서 호스트들은 데이터를 다시 전송을 하게 됨
- 따라서 네트워크 혼잡으로 인한 오버플로우, 데이터 손실 발생 위험을 막기 위해서 송신측에서 보내는 데이터의 전송 속도를 조절하도록 하는 것
Slow start
, Fast Recovery
(4) 신뢰성 보장
- 높은 신뢰성을 보장하지만 속도가 느림
- 대량의 연결을 보장하고 올바른 순서로 패킷을 전송하기 위해
IP
의 오버헤드를 처리함
- 통신이 지연될 수 있으며 데이터 변동에 대기 시간이 필요함
- 호스트 간 메시징을 사용하여 안전한 네트워크 환경에서 데이터 패킷을 전송함
IP
헤더를 활성화하여 오류나 손상이 없는 데이터를 순차적으로 생성하여 수신자가 신뢰할 수 있는 데이터를 받을 수 있도록 보장함
(5) 1:1 연결
- 서버와 클라이언트는
1:1
로 연결이 됨
- 전송 데이터의 크기가 무제한
- 그 외
Full-Duplex
(전이중), Point to Point
방식
💡 UDP
User Datagram Protocol
1) 비연결형 프로토콜
- 연결을 위해 할당된 논리적인 경로가 없음
- 각각의 패킷은 독립적인 관계로서 서로 다른 경로로 처리됨
connect()
함수가 필요하지 않기 때문에 서버 소켓과 클라이언트 소켓의 구분이 없고, IP
를 기반으로 데이터를 전송함
- 많은 양의 데이터를 소비하는 웹사이트에서 네트워크의 효율성을 증대시킴
- 비연결형 프로토콜로 연결을 설정하고 해제하는 과정이 없음
- 따라서
TCP
에 비해 속도가 빠르지만 신뢰성이 낮음
2) 빠른 속도
- 빠르고 안정적인 인터넷 어플리케이션 사용과 데이터 전송을 목적으로 함
- 대역폭과 대기 시간이 적어서 특정 시간에 대규모 트래픽이 몰리는 게임이나 비디오 스트리밍, 온라인 화상 회의의 경우에 사용함
3) 1:1, 1:N, N:M
- 서버와 클라이언트는
1:1
, 1:N
, N:M
등으로 연결될 수 있음
Datagram
(메시지) 단위로 전송됨 (크기는 65535 bytes
, 초과하면 잘라서 보냄)
💭 동영상 스트리밍 TCP? UDP?
속도가 안정성보다 중요한 경우 : UDP
- 화상 회의의 경우에는 모든 데이터가 전달될 때까지 기다리는 것보다 실시간으로 상호 작용이 빠르게 되는 것을 선호하기 때문에
- 패킷이 손실될 가능성이 있더라도
UDP
를 사용해야 함
안정성이 속도보다 중요한 경우 : TCP
+) 넷플릭스에서 TCP를 사용하는 이유