TCP vs UDP
본문 바로가기
DevOps 부트캠프/네트워크

TCP vs UDP

by liveloper jay 2022. 3. 14.

TCP와 UDP는 전송계층에서 사용되는 프로토콜입니다. 전송계층은 IP에 의해 전달되는 패킷의 제어를 담당하는 계층입니다. 그렇다면 TCP와 UDP는 무엇일까요?

 

 

TCP(Transmission Control Protocol)


TCP는 인터넷상에서 데이터를 메세지의 형태로 보내기위해 IP와 함께 사용하는 프로토콜로, 연결 지향 데이터 통신방식의 일종입니다. TCP는 거의 모든 네트워크에서 안정적인 연결을 설정하는데 도움이 되도록 설계되었습니다. 그러면 이러한 TCP는 어떤 특징을 가지고 있을까요? 

 

1. 연결지향 프로토콜이다

TCP는 장치들 사이에 논리적인 접속을 위해 3-way-handshake 방식을 사용하는 연결지향형 프로토콜입니다. 

💡 3-way-handshake란?

 

 

3-way-handshake란 TCP/IP 프로토콜을 이용해서 통신하는 응용프로그램이 데이터를 전송하기전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨턷와 사전에 세션을 수립하는 과정을 의미합니다. 이 과정은 3단계로 나누어 볼 수 있습니다.

  1. 클라이언트는 서버에 접속 요청하는 SYN 패킷을 보낸 후 응답을 기다립니다.(#1)
  2. 요청을 받은 서버는 클라이언트에게 수락한다는 SYN+ACK을 보내고 다시 클라이언트로 부터 응답이 오기를 기다립니다.(#2)
  3. 클라이언트는 서버에게 다시 ACK를 보내고 연결이 됩니다. 이때 서버의 상태는 established입니다. 

 

2. 데이터 전달이 보증된다.

  • IP 프로토콜의 경우 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트 측에서 확인할 수 있는 방법이 없는 한계인 비연결성을 가지고 있습니다.
  • 그러나 TCP의 경우 데이터 전송이 있을 때 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 이 한계를 극복할 수 있습니다.

3. 순서를 보장한다.

  • IP 프로토콜의 경우 클라이언트 측에서 보낸 패킷이 서버에 순서대로 도착한다는 보장이 없는 한계인 비신뢰성을 가지고 있습니다.
  • TCP의 경우 패킷이 순서대로 도착하지 않는다면 TCP Segment에 있는 정보를 토대로 순서가 바뀐 패킷부터 재전송 요청을 하기 때문에 한계점을 극복할 수 있습니다.

4. 신뢰성이 있는 프로토콜이다.

  • 위의 3가지의 특징으로 보아 TCP는 안정적이고 신뢰성이 있는 프로토콜임을 알 수 있습니다.

 

 

 

UDP(User Datagram Protocol)


UDP는 IP 프로토콜에 Port, Checksum 필드 정보만 추가된 단순한 필드로, 인터넷 프로토콜 제품군을 구성하는 주요 프로토콜 중 하나입니다. UDP는 TCP 보다 안정성은 떨어지지만 훨씬 간단합니다. 그러면 이러한 UDP는 어떤 특징을 가지고 있을까요?

✅ checksum은 중복 검사의 한 형태로, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 방법입니다.

 

1. 기능이 거의 없다.

  • 여러 기능이 구현된 TCP와 다르게 기능이 거의 없어 커스터마이징이 가능합니다.

2. 비연결지향 프로토콜이다.

  • 3-way-handshake 방식을 사용하지 않는 비연결지향 프로토콜입니다.

3. 데이터 전달 보증 및 순서가 보장되지 않는다.

  • 데이터가 정상적으로 수신되었는지 여부를 확인할 수 없으며, 순서 또한 보장되지 않습니다.

4. 단순하고 빠르다.

  • 최소한의 오류검출과 최소한의 기능만을 가지고 있으므로, 단순하고 빠르다는 장점을 가지고있습니다.
  • 따라서 신뢰성보다는 연속성이 중요한 실시간 스트리밍 서비스 등에 자주 사용됩니다.

 

 

 

정리


TCP, UDP에 관련된 내용을 정리하면 다음과 같습니다.

 

공통점

  1. 포트 번호를 이용하여 주소를 지정합니다.
  2. 데이터 오류 검사를 위한 checksum이 존재합니다.

차이점

TCP UDP
연결지향형 프로토콜이다. 비연결지향형 프로토콜이다.
데이터의 전송 순서를 보장한다. 데이터의 전송순서가 보장되지 않는다.
데이터가 정상적으로 수신되었는지 확인한다. 데이터가 정상적으로 수신이 되었는지 확인하지 않는다.
신뢰성이 높지만 속도가 느리다. 신뢰성이 낮지만 속도가 빠르다.

 

 

 

 

참고자료:

https://www.freecodecamp.org/news/tcp-vs-udp/

https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake

댓글