네트워크

TCP vs UDP

개발자doc 2024. 5. 26. 18:06
목차
1. TCP
2. UDP
3. 뭐가 더 좋을까?

 

1. TCP
  • Transmission Control Protocol
  • 데이터의 순서를 설정하여 순서대로 데이터를 전송하며 응답에 따라 통신하는 방식
  • 데이터의 신뢰성이 보장됨

TCP는 데이터 통신시 발신자가 수신자에게 연결 요청을 한 후 연결이 이루어지면 통신을 하게 된다. 데이터의 신뢰성을 위해 발진자는 데이터의 순서를 결정하여 전송을 하게 된다. 수신자가 데이터를 받고 확인 응답을 했을 때 다음 데이터를 전송한다. 그리고 통신이 끝나면 서로 확인하고 연결을 종료한다. 이 과정은 통신이 끝날 때까지 연결이 유지되어야 하므로 연결 지향 프로토콜이라고 할 수 있다.

 

만일 데이터를 전송하였지만 수신자에게 응답이 오지 않으면 일정시간을 기다렸다가 이전 데이터를 다시 전송한다. 

 

연결과 종료 위해 먼저 3-way-handshake와 4-way-handshake라는 과정을 필요로 한다.

1 ) 3-way-handshake

  • 통신을 원하는 두 기기사이에 연결을 위한 확인과정으로 통신할 준비가 되었다는 것을 보장

  1. 데이터를 전송할 발신자가 수신자에서 먼저 통신이 가능한지 확인한다.
  2. 수신자는 데이터를 받을 준비가 되었다는 응답을 보내면 발신자는 응답을 확인한다.
  3. 연결을 진행하겠다는 응답을 하게 된다. 

 

2 ) 4-way-handshake

  • 모든 통신이 완료되어 연결을 종료하는 확인과정

  1. 발신자가 모든 데이터를 전송하게 되면 수신자에게 연결을 종료하겠다는 신호를 보낸다.
  2. 수신자는 일단 연결 종료에 대한 확인응답을 보내게 된다.
  3. 이후 수신자가 모든 작업을 마치면 연결을 종료해도 좋다는 신호를 발신자에게 보낸다.
  4. 발신자는 수진자의 신호에 대한 응답을 보내고 종료한다. 
2. UDP
  • User Datagram Protocol
  • 정상적인 수신여부 확인없이 데이터를 전송하는 방식
  • 전송속도가 빠름

UDP는 TCP와 달리 논리적인 연결을 하지않고 수신자에게 데이터를 전송한다. 정상적인 수신여부도 확인하지 않기 때문에 전송속도는 빠르다. 하지만 통신이 정상적으로 이루어지지 않았을 경우 데이터 손실이 발생할 가능성이 있어 신뢰성은 떨어지는 편이다.

수신자가 누구인지, 연결이 되었는지는 중요하지 않고 데이터를 전송하는 것을 우선하기에 비연결성 프로토콜이라고 한다. 1:1 뿐 아니라 1:N으로 통신이 이루어진다.

 

3. 뭐가 더 좋을까?

두 데이터 전송에 대한 프로토콜을 알아보았다. 어떤 방식이 더 좋을까?

얼핏 보기에는 TCP가 조금 더 나아보이지만 방식의 차이가 있을 뿐 더 어느 것이 더 낫다고 하기는 힘들다. TCP는 데이터의 신뢰성이 보장되는 대신 속도가 느리고 UDP는 TCP와 정반대 되는 특징을 가진다. 그 특징들에 맞게 필요한 곳에 사용하면 된다.

 

TCP는 순서와 정확성이 중요한 이메일 전송같은 곳에 사용되는 것이 좋고 UDP는 스트리밍이나 온라인 게임같이 지연시간이 짧아야하는 경우 사용되는 것이 적합하다.