[개발자 인터뷰] TCP vs UDP

Joey Hong·2020년 10월 7일
0

TCP/UDP

  • 전송계층(데이터의 전달을 담당하며 통신 서비스를 제공하는 계층)에서 사용하는 프로토콜
    • 데이터를 보내기 위해 사용하는 프로토콜
  • 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현

패킷 (Packet)

인터넷에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하며 이 조각을 패킷이라 함

🐳 TCP (Transmission Control Protocol)

TCP는 신뢰성을 보장하는 연결형 서비스
안정적으로, 순서대로, 에러없이 데이터 전송

  • TCP/IP

    • 인터넷 환경에서 기본으로 사용
    • 일반적으로 IP와 함께 사용하는 프로토콜
      • IP가 데이터의 배달을 처리
      • TCP는 패킷의 추적 및 관리 (패킷에 번호를 부여하여 패킷의 분실 등 확인)
  • 제어

    • 흐름 제어 (Flow Control)
      • 수신자가 감당할 수 있도록 데이터 처리 속도 조절
    • 혼잡 제어(Congestion Control)
      • 네트워크 내 패킷 수가 넘치게 증가하는 것 방지
  • 연결형 서비스 (Connection-oriented)

    • 3-way handshaking으로 연결 설정
      • 목적지와 수신지를 확실히 하여 정확한 전송 보장
    • 4-way handshaking으로 연결 해제
  • 신뢰성 보장 (Reliable)

    • 패킷을 성공적으로 전송하면 Acknowledgement(ACK) 신호
    • 제시간에 도착하지 않으면 Timeout 발생
    • 손실된 패킷은 재전송
  • UDP보다 느림

    • 패킷에 대한 응답을 해야하기 때문에 느리다 (손실시 재전송)
    • 순서 보장을 해야해서 느리다
    • 흐름제어, 혼잡제어를 해야해서 느리다
  • 데이터의 경계 구분 X

    • Byte-Stream Service
    • 데이터가 10, 10, 10 왔을 때 TCP는 경계를 구분하지 못해 30으로 한 번에 받거나 25, 5로 받는 등 보낸 것과 다르게 끊어받을 수 있다
  • 데이터의 전송 순서 보장

    • 패킷들에 번호 부여하여 재조립

🐳 UDP (User Datagram Protocol)

TCP보다 빠른 속도와 적은 네트워크 부하가 장점
신뢰성보다는 연속성이 중요한 실시간 서비스(streaming)에 자주 사용

  • 데이타 단위
    • 데이타를 데이터그램 단위로 처리
    • 데이타그램 - 독립적인 관계를 지니는 패킷
  • 비연결형 서비스 (Connectionless)
    • TCP와 달리 연결 설정이 없다
  • 신뢰성X
    • 데이터 전송에 대한 보장X
      • 패킷 손실 발생 가능
    • 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜
  • 빠른 전송속도
    • 혼잡제어를 하지 않아 빠르다
    • 확인 응답, 재전송 등 신경 안 씀
    • 순서를 보장하지 않아 빠르다
  • 데이터의 경계 구분
    • Datagram Service
    • 데이타가 10, 10, 10 왔을 때 UDP는 무조건 10, 10, 10으로 받아야한다
  • 데이터의 전송 순서 보장X
    • 데이터그램이라는 패킷으로 데이터를 조각내서 전송하지만 패킷 순서나 재조립 등의 서비스는 제공X

TCPUDP
속도느림빠름
신뢰성신뢰성 보장신뢰할 수 없음
연결 형태연결형 서비스(연결을 성공해야 통신 가능)비연결형 서비스(연결 없이 통신 가능)
연속성연속성X연속성O
사용 예시HTTP, 이메일, 웹 브라우징, 파일 전송DNS, 게임, 화상 회의, 스트리밍
통신 방식1:1 (Unicast) 통신1:n (Broadcast), n:n (Multicast) 통신
전송 순서전송 순서 보장전송 순서 바뀔 수 있음
profile
개발기록

0개의 댓글