프로그래밍/ETC

[기술면접] TCP/UDP 의 차이

TCP (Transmission Control Protocol):

  • 연결 지향성 (Connection-Oriented): TCP는 연결을 성립하고 데이터를 전송한 후에는 연결을 종료하는 과정이 포함됩니다. 이는 신뢰성 있고 정확한 전송을 보장합니다.
  • 신뢰성 및 흐름 제어: TCP는 데이터를 세그먼트로 분할하여 전송하고, 수신측에서는 세그먼트를 재조립하여 상위 계층에 전달합니다. 또한, 흐름 제어 기능을 통해 수신측의 처리 속도를 조절하여 과도한 데이터 손실을 방지합니다.
  • 순서 보장: TCP는 데이터의 전송 순서를 보장하여 수신측에서는 정확한 데이터 순서로 재조립합니다.
  • 높은 신뢰성: 오류 복구 기능과 재전송 메커니즘을 제공하여 안정적인 데이터 전송을 보장합니다.
  • 사용 예시: 웹 브라우저의 HTTP 통신, 이메일의 SMTP 통신 등에 주로 사용됩니다.

UDP (User Datagram Protocol):

  • 비연결성 (Connectionless): UDP는 연결을 성립하거나 종료하지 않고 데이터를 전송합니다. 이는 빠른 데이터 전송을 가능하게 합니다.
  • 비신뢰성 및 흐름 제어 없음: UDP는 데이터를 그대로 전송하며, 오류 복구 기능이나 흐름 제어가 없습니다. 따라서 빠른 전송이 중요한 상황에서 사용됩니다.
  • 순서 보장 없음: UDP는 데이터의 전송 순서를 보장하지 않습니다. 따라서 순서가 중요한 응용 프로그램에서는 별도의 처리가 필요합니다.
  • 낮은 신뢰성: 오류 발생 시 재전송이나 복구가 이루어지지 않기 때문에 일부 데이터 손실이 허용되는 상황에서 사용됩니다.
  • 사용 예시: 실시간 스트리밍 서비스, DNS 등에서 사용됩니다.



차이점 요약:

  • TCP는 연결 지향성이며 신뢰성 있는 전송을 제공하고, UDP는 연결 없이 비신뢰성 있는 전송을 합니다.
  • TCP는 신뢰성 및 흐름 제어, 순서 보장이 가능하며, UDP는 이러한 기능이 없습니다.
  • TCP는 오류 복구 및 재전송 기능을 제공하며, UDP는 이러한 기능이 없어 속도가 빠릅니다.
  • TCP 속도보단, 데이터의 안정성, 신뢰성이 중요한 통신에 사용되고, UDP 실시간 통신이 필요한 경우나 속도가 중요한 경우에 사용됩니다.

다만 제가알기로는 최근 통신망의 속도가 좋아 웬만하면 TCP로 통신하는 것으로 알고있습니다.

우리가 사용하는 http 프로토콜도 tcp 프로토콜 위에 얹어진 프로토콜..

 

여담

http/3 버전은 tcp 대신 udp 통신 방식으로 한다고합니다.

- 이유

    1. 연결 설정 시 레이턴시 감소 - hand shake를 안함

    2. 패킷 손실 감지하는 속도가 빨라짐

    3. 클라이언트의 IP 가 바뀌어도 연결이 유지됨 

       - TCP 는 IP 기반 연결 방식이므로 클라이언트의 IP가바뀌는상황이오면 다시 handshake를 거쳐야함..

        => 해당문제는 요즘 모바일을 많이 사용하면서 와이파이, 셀룰러 환경을 바꾸는 상황에서 더 자주 일어남

 

    4. 이번 HTTP/3 에서는 ip 대신 랜덤한 connection id 값을 통해 연결을 유지하게 하므로 써

        클라이언트의 ip가 바뀌어도 연결유지가 가능

 

728x90