TCP
(Transmission Control Protocol)와 UDP
(User Datagram Protocol)는 OSI 7 layer 표준 모델에서 전송 계층에 등장하는 프로토콜이다.
🔗 프로토콜?
프로토콜은 쉽게 '통신을 위한 표준화된 약속, 규칙'이라고 생각하면 된다.
사전적 의미로는 '여러 컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해서 필요로 하는 통신 규약'이라고 설명하고 있는데 이해하기 어려울 수 있으므로 쉽게 쉽게 통신을 위한 약속이라고 이해하면 될 것 같다.🔗 전송계층?
전송계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위한 오류 점검, 그리고 포트를 통해서 데이터를 전달해야 할 최종적인 목적지인 응용 프로그램을 식별하는 등의 역할을 하는 네트워크 계층이다.
즉, 데이터 전송 과정에서 오류를 검사하고 오류가 발생한 경우 재전송을 요청하고, 최종적인 목적지인 응용 프로그램에 데이터를 전달하는 등의 역할을 한다.
TCP
와 UDP
모두 전송 계층에 속하는 프로토콜의 종류인데 이 둘은 큰 차이점을 가지고 있다.
흔히, TCP를 연결형 프로토콜이라고 말하고 UDP는 그 반대로 비연결형 프로토콜이라고 말한다.
즉, 송신과 수신이 서로 연결이 되어있는 것이 TCP
이고 연결되어 있지 않은 일방적인 방식이 UDP
인 것인데, 말로서 설명하기에는 이해하는데 어려움이 있을 수 있음으로 아래 그림을 먼저 살펴보면 좋을 것 같다.
✅ 이미지 출처
https://cheapsslsecurity.com/blog/tcp-vs-udp-how-are-they-different/
위의 이미지와 같이 TCP
는 서로 연결되어 통신에 대한 요청과 전달 과정을 서로 공유하는 듯한 방식으로 이루어져 있으며, 반면에 UDP
는 요청이 들어오면 전달 여부와 관계없이(전달이 잘 되었건 잘되지 않았건) 일방적으로 필요한 데이터를 보내기만 한다.
1️⃣ TCP
: 지금 수신 가능하실까요?(송신자 입장) -> 네, 가능합니다. 데이터 보내주세요!(수신자 입장) -> 네! 지금 데이터 보냈습니다.(송신자 입장) -> 데이터가 잘 도착했네요 😀(수신자 입장)2️⃣ UDP
: 1번 데이터 보냄(송신자 입장) -> 2번 데이터 보냄(송신자 입장) / 2번 데이터 중간에 일부 유실 -> 3번 데이터 보냄(송신자 입장)
즉, UDP
는 TCP
와는 다르게 일방적인 통신을 하고 있다.
TCP
가 UDP
에 비해 성심성의껏 데이터 송수신을 하기 때문에 UDP
가 아닌 TCP
를 사용해야 하는 것이 아닐까 하는 생각이 들 수 있다.
하지만, TCP
를 사용해야 하는 경우가 있고 반대로 UDP
를 사용해야 하는 경우가 있다.
그렇다면, 어떤 경우에 TCP를, UDP를 사용해야 할까?
앞서 살펴본 대로, TCP
는 연결형이기 때문에 UDP
에 비해 신뢰성이 높다는 장점이 있고 순서가 보장된다는 특징이 있다. 하지만 신뢰도가 높은 대신에 속도가 비교적 느리다는 단점이 있다. 반대로 UDP
는 속도는 빠르지만, TCP에 비해 신뢰성이 떨어진다는 특징이 있다.
(사실상, TCP와 UDP 모두 속도와 신뢰성 측면에서 아주 큰 차이는 없다고 한다.
다만, 상황에 따라서 더 적합한 프로토콜을 사용하는 것이기 때문에 위에서는 장점과 단점이라고 언급을 했지만 장/단점이 아닌 각각의 특징이라고 이해하면 좋을 것 같다!)
이러한 특징을 바탕으로 TCP
와 UDP
의 사용 예시를 살펴보려고 한다.
✅ 이미지 출처
https://cheapsslsecurity.com/blog/tcp-vs-udp-how-are-they-different/
TCP
의 경우 상호 소통이 중요한 메일, 혹은 채팅 프로그램에 많이 사용된다.
채팅의 경우 상대방이 보낸 메시지가 나에게 온전히 도착해야지만 원활한 소통이 가능하기 때문에 중간에 데이터가 깨져버리면 프로그램을 제대로 사용할 수 없게 된다.
즉, 중간에 데이터가 깨지거나 유실이 일어나면 안 되는 프로그램은 신뢰성이 가장 중요하기 때문에 TCP
를 사용하게 된다.
UDP
의 경우에는 빠른 속도가 큰 특징이기 때문에 속도가 중요한 프로그램에 사용하겠거니 생각하겠지만 속도보다는 실시간 데이터 통신이 중요한 프로그램에 사용된다. 실시간 스트리밍이나 게임 등이 해당되는데, 이러한 프로그램은 데이터의 순서가 보장되기보다는 실시간으로 반응할 수 있어야 하기 때문에 TCP
가 아닌 UDP
를 사용하게 된다.
TCP는 양방향통신이 중요한 프로그램에, UDP는 실시간 반응이 중요한 프로그램에 사용된다.
✅ 참고
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://cheapsslsecurity.com/blog/tcp-vs-udp-how-are-they-different/