2 minute read

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)

https://t1.daumcdn.net/cfile/tistory/99229C485C1D90C038

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일 표준화된 HTTP3UDP 기반의 QUIC 프로토콜을 사용하여 통신
    • QUIC 프로토콜 → 구글 자체 프로토콜
    • 모바일 기기처럼 인터넷 상태가 고르지 못한경우, WiFi 사용 시 셀룰러 신호로 바뀌더라도 HTTP3로 연결되어 있으면 끊김없이 시청할 수 있다.
    • 패킷 전송에 있어 제약이 없는 비연결성 전송 계층을 기반 (UDP) + TCP 프로토콜의 무결성 보장 알고리즘과 SSL이 이식
    • 주요 지원 웹사이트
      • 구글, 유튜브, 네이버, 페이스북, 인스타그램, 디스코드

Reference 📚

https://velog.io/@averycode/네트워크-TCPUDP와-3-Way-Handshake4-Way-Handshake

https://cocoon1787.tistory.com/757

https://namu.wiki/w/UDP

Leave a comment