TCP vs. UDP

TCP란?(Transmission Control Protocol)

  • 인터넷을 경유해 통신하는 연결 지향성 프로토콜
  • 에러 체킹을 지원
  • 데이터의 완전한 전송을 보장
  • 패킷의 전송 순서를 보장
  • TCP는 FLOW CONTROL을 제공함

Flow control

  • 리시버가 데이터를 전송하는 센더를 컨트롤 하는 권한
  • 이는 리시버가 빠르고 연속적인 데이터 전송으로 인해 과부하가 걸리는 것을 막기 위함

UDP란(User Datagram Protocol)?

  • 작동방식은 TCP와 동일
  • 데이터그램을 연속해서 목적지로 전송
  • 전송된 데이터의 신뢰성은 보장되지 않음

UDP와 TCP의 차이점?

  • TCP는 연결지향 프로토콜 vs. UDP는 비연결지향 프로토콜
  • TCP는 전송 전 센더와 리시버 사이의 연결을 성립 vs. UDP는 그딴 거 없음

Reliability

  • TCP는 안정적
    • TCP로 전송된 데이터는 리시버에게 완전히 전달되는 것이 보장됨
    • 데이터 손실이 있으면 데이터는 다시 보내짐
  • UDP는 불안정적
    • UDP는 데이터 전송의 완정성을 보장하지 않음
    • UDP로 전송되는 데이터는 전송 중 데이터가 오염될 수도 누락될 수도 있음

Flow control

  • TCP는 Flow control을 제공함
    • 리시버는 센더에게 가용할 수 있는 남은 리시브 버퍼의 사이즈를 알려줌
    • 리시버가 패킷을 받을 때마다, 센더에게 가용할 버퍼 사이즈를 알리는 메세지가 날아감
  • UDP는 플로우 프로토콜 미사용.
    • UDP는 스트림에 통째로 실려오거나 그 중 몇개가 없음

Ordering

  • TCP는 신뢰도 높은 전송을 위해 패킷의 순서를 정하고 시퀀싱 과정을 거침
  • UDP는 그딴 거 없음

Speed

  • TCP가 연결하고, 에러체크하고, 패킷이 보낸 순서대로 잘 갔는지 확인할 게 많아 느림
  • UDP는 그런 과정이 없기 때문에 데이터 전송이 빠름

Usage

  • TCP는 타이밍가 속도가 중요하지 않으면서 높은 신뢰도와 보안이 중요한 곳에 쓰임
    • World Wide Web (HTTP, HTTPS)
    • Secure Shell (SSH)
    • File Transfer Protocol (FTP)
    • Email (SMTP, IMAP/POP)
  • UDP는 속도와 효율성이 중시되는 곳에 쓰임
    • VPN tunneling
    • Streaming videos
    • Online games
    • Live broadcasts
    • Domain Name System (DNS)
    • Voice over Internet Protocol (VoIP)
    • Trivial File Transfer Protocol (TFTP)