TCP(Transmission Control Protocol) vs UDP(User Datagram Protocol)
Mention : 모바일과 동영상을 사랑하는 현대시대는 UDP를 원한다. 하지만 신뢰성은 지켜야지, 트랜드는 UDP+TCP(HTTP/3)🤝
- OSI 7 Layer 중 Layer 4 : 전송 프로토콜 (Transport Layer)
- 전송 프로토콜 중 잘 알려진 것이 바로 TCP와 UDP이다.
- TCP : 웹 어플리케이션의 신뢰성, 성능 개선을 하는 중요한 역할
- 데이터의 소실 방지, 순서 보장
TCP (Transmission Control Protocol)
- 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- TCP는 애플리케이션에게 신뢰적이고 연결지향성 서비스를 제공
- 일반적으로 TCP와 IP는 함께 사용되며 IP는 배달, TCP는 패킷의 추적 및 관리를 한다.
- TCP는 연결형 서비스로 신뢰적인 전송을 보장하기에 handshaking하고 데이터의 흐름제어와 혼잡제어를 수행한다.
- 이로인해 속도가 느리다.
- 흐름 제어 : 보내는 측과 받는 측의 데이터 처리속도 차이를 조절
- 혼잡 제어 : 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
TCP/IP 모델
- Application Layer
- HTTP, 브라우저
- Transport Layer
- TCP/UDP
- Internet Layer
- IP
- Network Access Layer
- 이더넷
TCP 동작과정
- 소켓 생성 → 3 Way Handshake → 데이터 송신, 수신 → 4 Way Handshake
TCP 헤더
컨트롤 비트(플래그) | |
---|---|
SYN | 송신측과 수신측에서 시퀀스 번호를 공유함을 나타냄 |
ACK | 수신 데이터의 시퀀스 번호가 유효함 |
FIN | 연결 끊기를 나타냄 |
시퀀스 번호 | 현재 데이터의 첫 번째 위치가 전체 송신 데이터에 몇 번째 인지를 나타내는 일련번호 |
ACK 번호 | 수신측에 몇 바이트까지 받았는지 송신측으로 보내는 일련번호 |
![https://miro.medium.com/max/1070/1_mOKz1BDse7Vm9eqcfKY9A.png](https://miro.medium.com/max/1070/1_mOKz1BDse7Vm9eqcfKY9A.png)
UDP(User Datagram Protocol)
- Transport Layer 에서 사용하는 규약 (OSI 모델)
Background
- TCP는 데이터 신뢰성을 보장하기 위해 누락된 데이터를 모두 받기 위한 메커니즘
- 이메일 또는 파일전송 분야에서는 필수지만….
- 스트리밍 서비스에서는 걸림돌 (버퍼링 또는 재생 중지)
특징
- TCP에서 신뢰성 기능을 제거
- 데이터를 제대로 받고 있는지 신경을 쓰지 않는다. (손실되는 데이터 발생 가능)
- 동영상에서는 일부 구역만 제대로 안나오는 수준이면 OK
- UDP 헤더에는 목적지 주소, 데이터 순서, checksum과 실데이터만 포함
- 확인응답 X (handshakeX)
- 용량이 가볍고 송신속도가 빠르다
- 비연결형
- 단점
- 스스로 속도제어를 하는 기능이 없다.
- 신뢰도가 떨어진다.
활용
- 스트리밍 분야, VoIP, mVoIP에서 사용 (실시간성 보장)
- 온라인 게임의 서버-클라이언트 통신
- 사용자의 정보나 텍스트 같이 무결성이 중요한 데이터는 TCP 전송을 사용
TCP vs UDP
TCP(Transfer Control Protocol) | UDP(User Datagram Protocol) |
---|---|
연결형 프로토콜 | 비연결형 프로토콜 |
데이터의 경계를 구분하지 않음 | 데이터의 경계를 구분함 |
신뢰성있는 데이터 전송(데이터 재전송 존재) | 비신뢰성 데이터 전송(데이터 재전송 존재X) |
일 대 일(Unicast) 통신 | 일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신 |
Summary
두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되어 있습니다.
TCP는 연결 지향적이며, 연속성보다 신뢰성 있는 전송이 중요할 때 사용되는 프로토콜입니다.
UDP는 비연결 지향적이며, TCP보다 빠르지만 신뢰성 있는 데이터 전송을 보장하지 않습니다.
때문에 신뢰성보다는 연속성이 중요한 실시간 스트리밍, 온라인 게임과 같은 서비스에서 활용됩니다.
Additionally
- 2022년 6월 6일 표준화된 HTTP3는 UDP 기반의 QUIC 프로토콜을 사용하여 통신
- QUIC 프로토콜 → 구글 자체 프로토콜
- 모바일 기기처럼 인터넷 상태가 고르지 못한경우, WiFi 사용 시 셀룰러 신호로 바뀌더라도 HTTP3로 연결되어 있으면 끊김없이 시청할 수 있다.
- 패킷 전송에 있어 제약이 없는 비연결성 전송 계층을 기반 (UDP) + TCP 프로토콜의 무결성 보장 알고리즘과 SSL이 이식
- 주요 지원 웹사이트
- 구글, 유튜브, 네이버, 페이스북, 인스타그램, 디스코드
Reference 📚
https://velog.io/@averycode/네트워크-TCPUDP와-3-Way-Handshake4-Way-Handshake
Leave a comment