네트워크 - TCP와 UDP

sebinnnnn·2023년 4월 17일
1
post-thumbnail

💡 TCP와 UDP?

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 OSI 7 layer 표준 모델에서 전송 계층에 등장하는 프로토콜이다.

🔗 프로토콜?
프로토콜은 쉽게 '통신을 위한 표준화된 약속, 규칙'이라고 생각하면 된다.
사전적 의미로는 '여러 컴퓨터나 단말기 사이에서 데이터 통신을 원활하게 하기 위해서 필요로 하는 통신 규약'이라고 설명하고 있는데 이해하기 어려울 수 있으므로 쉽게 쉽게 통신을 위한 약속이라고 이해하면 될 것 같다.

🔗 전송계층?
전송계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위한 오류 점검, 그리고 포트를 통해서 데이터를 전달해야 할 최종적인 목적지인 응용 프로그램을 식별하는 등의 역할을 하는 네트워크 계층이다.
즉, 데이터 전송 과정에서 오류를 검사하고 오류가 발생한 경우 재전송을 요청하고, 최종적인 목적지인 응용 프로그램에 데이터를 전달하는 등의 역할을 한다.

TCPUDP 모두 전송 계층에 속하는 프로토콜의 종류인데 이 둘은 큰 차이점을 가지고 있다.


📍 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번 데이터 보냄(송신자 입장)

즉, UDPTCP와는 다르게 일방적인 통신을 하고 있다.

TCPUDP에 비해 성심성의껏 데이터 송수신을 하기 때문에 UDP가 아닌 TCP를 사용해야 하는 것이 아닐까 하는 생각이 들 수 있다.
하지만, TCP를 사용해야 하는 경우가 있고 반대로 UDP를 사용해야 하는 경우가 있다.

그렇다면, 어떤 경우에 TCP를, UDP를 사용해야 할까?


📍 TCP와 UDP의 사용 예시

앞서 살펴본 대로, TCP는 연결형이기 때문에 UDP에 비해 신뢰성이 높다는 장점이 있고 순서가 보장된다는 특징이 있다. 하지만 신뢰도가 높은 대신에 속도가 비교적 느리다는 단점이 있다. 반대로 UDP속도는 빠르지만, TCP에 비해 신뢰성이 떨어진다는 특징이 있다.
(사실상, TCP와 UDP 모두 속도와 신뢰성 측면에서 아주 큰 차이는 없다고 한다.
다만, 상황에 따라서 더 적합한 프로토콜을 사용하는 것이기 때문에 위에서는 장점과 단점이라고 언급을 했지만 장/단점이 아닌 각각의 특징이라고 이해하면 좋을 것 같다!)

이러한 특징을 바탕으로 TCPUDP의 사용 예시를 살펴보려고 한다.

이미지 출처
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/

profile
🏠 블로그 이전 중 → https://medium.com/@sebinndev

0개의 댓글