[Network] TCP vs. UDP

DaeHoon·2023년 6월 17일
0

Network

목록 보기
2/2

TCP(Transmission Control Protocol)

  • TCP는 신뢰성과 흐름 제어 기능을 제공하여 데이터의 안정적인 전달을 보장한다.

신뢰성

  • TCP는 신뢰성 있는 데이터 전송을 제공한다.
  • 데이터를 보내고 받을 때, 수신자가 데이터를 정확하게 수신했는지 확인하고, 필요한 경우 재전송을 수행하여 데이터의 손실을 방지한다.
  • 이를 위해 TCP는 순차적인 번호(Sequence Number)를 사용하여 데이터의 순서를 관리하고, 수신자가 올바른 데이터를 받았는지 확인하는 기능을 제공합니다. 수신자는 올바른 데이터를 받은 경우 다음 TCP 세그먼트 데이터 번호(ACK Number)를 송신자에 보낸다.
  • 이러한 특징으로 인해 TCP는 HTTP 프로토콜, 전자우편, 파일 전송 등 손실이 일어나면 안되는 곳에서 사용 된다.

흐름 제어

  • TCP는 송신자와 수신자 간의 데이터 흐름을 조절하는 기능을 제공한다.
  • 수신자는 자신이 처리할 수 있는 데이터의 양을 알려주는 슬라이딩 윈도우 크기를 송신자에게 전달한다. 송신자는 이를 기반으로 데이터 전송 속도를 조절하여 네트워크 혼잡을 방지하고, 수신자가 데이터를 처리할 수 있도록 한다.

연결 지향성

  • 3-way handshake라는 절차를 거치게 되며, 연결이 성립되면 데이터 전송이 이루어진다.

혼잡 제어

  • TCP는 네트워크 혼잡을 감지하고 조절하는 기능을 제공한다.
  • 혼잡이 발생하면 데이터 전송 속도를 조절하고, 네트워크 상황을 개선하기 위해 패킷 손실을 줄이는 등의 조치를 취한다. 이를 통해 네트워크의 안정성과 효율성을 유지

UDP(User Datagram Protocol)

  • 신뢰성보다는 속도와 효율성을 강조하는 비연결형 프로토콜

비연결형

  • 데이터를 전송하기 전에 송신자와 수신자 사이에 논리적인 연결을 설정하지 않으며 (3 way handshaking 진행 x), 데이터그램(datagram) 단위로 독립적으로 전송함.
  • 즉, 연결 설정에 필요한 오버헤드가 없어 TCP보다 경량화되고 빠른 전송이 가능하다.

신뢰성 부족

  • 데이터그램을 송신한 후에는 수신 확인 응답(ACK)을 기다리지 않고 다음 데이터를 전송한다.
  • 이로 인해 데이터의 손실, 중복, 순서 변경 등의 문제가 발생할 수 있다.
  • UDP는 신뢰성이 중요한 애플리케이션에는 적합하지 않습니다.

높은 속도와 낮은 지연

  • UDP는 데이터를 신속하게 전송하는 데 초점을 맞춰진 프로토콜
  • TCP와 달리 흐름 제어, 혼잡 제어, 재전송 등의 기능이 없기 때문에 데이터 전송에 대한 오버헤드가 적음
  • 이로 인해 UDP는 실시간 스트리밍, 음성 통화, 온라인 게임 등 지연 시간이 중요한 애플리케이션에 많이 사용된다

단순성

  • TCP보다 훨씬 적은 헤더 필드를 가지며, 연결 설정 및 유지 등 복잡한 기능이 없음.
  • 이로 인해 구현과 관리가 비교적 간단하며, 리소스 사용이 적습니다.

정리하자면

profile
평범한 백엔드 개발자

0개의 댓글