본문 바로가기

네트워크

TCP와 UDP 정리

TCP와 UDP의 차이점을 간단하게 정리하면 이와 같다.

 

TCP : 복잡하기 때문에 신뢰성이 높은 연결지향형 프로토콜

UDP : 단순하기 때문에 신뢰할 수 없는 비연결지향형 프로토콜

 

TCP가 신뢰성이 높은 연결지항형인 이유?

 - 3 way handshaking을 통해 세션연결을 맺은 후 신뢰성이 보장된 후 데이터를 통신하기 때문

 

TCP와 UDP가 나오게 된 이유

 

통신을 IP만으로 하게 되면 여러 문제점들이 발생하기 때문이다.

 

[문제점]

 1) IP의 역할은 Host to Host(장치 to 장치) 만을 지원하기 때문에, 장치에서 장치로의 이동은 IP로 해결이 가능하나 하나의 장비에서 수많은 프로그램들이 통신할 경우, 한계가 발생하게 된다.

 2) IP에서 오류가 발생하면 ICMP에서 알려주지만, ICMP는 알려주기만 할 뿐 오류 대처를 하지 못해 IP보다 상위 계층에서 처리를 해야 한다.

 

1번 문제점의 해결을 위해 포트 번호가, 2번 문제점의 해결을 위해 TCP, UDP 프로토콜이 나오게 되었다.

 

 

TCP, UDP가 어떠한 방법으로 2번 문제점을 해결하는가?

 

 - TCP : 데이터의 분실, 중복, 순서 뒤바뀜 등을 자동으로 보정하여 송/수신 데이터의 정확한 전달을 가능하게 한다.

 - UDP : 매우 간단한 IP 상위계층의 프로토콜로, TCP와는 다르게 에러가 발생할 수 있으며 순서가 뒤바뀌는 경우도 있어 이런 경우 어플리케이션에서 처리해야 하는 번거로움이 있다.

 

 

위의 내용으로 보면 TCP가 UDP보다 성능이 우수한데 왜 굳이 UDP를 사용하는가?

 

UDP의 강력한 장점은 바로 데이터의 신속성이라 할 수 있다. TCP와는 다르게 복잡하지 않아 데이터 처리 속도가 TCP보다 빠르다.

주로 아프리카 TV와 같은 실시간 방송과 온라인 게임 등에서 UDP가 사용되는데, 우리가 온라인 게임을 하다 보면 네트워크 환경이 좋지 않으면 게임이 끊기는 이유가 UDP통신은 데이터를 신속하게 보내지만 데이터가 완벽하게 전달받지 못 하여 끊기는 것이다.

실시간 방송(아프리카 TV) 서비스를 네트워크 신호가 약한 곳에서 시청하면 버퍼링이 계속 발생하는 원리이다.

 

 

마지막으로 개인적인 생각을 간단히 정리하면, TCP는 나와 상대방이 서로 데이터를 정확하게 송수신 할 수 있게끔 하는 프로토콜이고(애초에 TCP통신을 하려면 3-way handshake를 통해 상대방과 세션을 맺어야 함으로), UDP는 상대방이 정확히 받던지 말던지 나만 정확히 보내면 된다 라는 식으로 운용되는 프로토콜인 것 같다.