전공 컴퓨터 네트워크 수업시간에 분명 들었었던.. 3-way Handshaking 그림도 그렸던 기억이 나는.. 근데 정작 이게 정확히 뭐였는지는 기억이 안났었던 TCP, UDP에 대해서 알아보자 🏃♂️
사진출처
각각에 대해서 다루기 전에 TCP, UDP란 무엇인지에 대해 간단하게 설명해보자면,
네트워크 7계층 중에서 전송계층(Transport Layer)에서 데이터를 전달할 때 사용하는 프로토콜들을 의미한다.
데이터를 전송하는 방식들이 바로 TCP, UDP 인 것이다.
인터넷상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
TCP는 일반적으로 IP와 함께 사용하고, TCP/IP 이런식으로 쓰여있는 것을 본적이 있을 것이다.
IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적하고 관리하게 된다. 이때 TCP는 IP가 처리할 수 있도록 데이터를 여러 개의 패킷으로 나누고 도착지에서는 완전한 데이터로 패킷을 재조립해야한다.
TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다.
⚡
패킷(Packet) : 인터넷상에서 데이터를 전송하기 위해 라우팅을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송하는데 이때 나눠지는 조각을 패킷이라고 한다.
연결형 서비스 : 상대적으로 신뢰성이 높은 서비스로 데이터를 전송하기 위해 전송자와 수신자 사이에 연결을 미리 설정하는 방식을 의미한다.
결국 위와 같은 과정을 가지는 이유는 위에서 언급한 연결형 서비스로 높은 신뢰성을 보장하기 때문이다. 그렇기 때문에 위와 같은 과정을 거치고 데이터 흐름 제어나 혼잡 제어 같은 기능도 가능하게 한다.
하지만 신뢰성을 보장하기 위해 거치는 과정들 때문에 UDP에 비해 상대적으로 속도가 느리다는 단점이 있다.
이러한 특징들 때문에 TCP는 연속성보다 신뢰성이 있는 전송이 중요할 때 사용하는 프로토콜로 예를 들면 파일 전송과 같은 경우에 사용한다.
데이터를 데이터 그램(독립적인 관계를 가지는 패킷) 단위로 처리하는 프로토콜
UDP는 TCP와 달리 비연결형 서비스이며, 따라서 연결을 위해 할당하는 논리적인 경로가 따로 존재하지 않는다는 특징을 가진다.
이로 인해서 각각의 패킷은 하나의 경로가 아닌 서로 다른 경로로 전송되고 데이터를 서로 다른 경로로 독립적으로 처리하게 된다.
또한 TCP와는 다르게 데이터를 여러개의 패킷으로 나누고 반대편에서 재조립하는 과정을 거치지 않으며, 수신 여부를 확인하지 않고 데이터를 보내기만 한다.
비연결형 서비스이기 때문에 연결을 설정하고 해체하는 과정이 존재하지 않는다.
서로 다른 경로로 독립적으로 처리하기 때문에 패킷에 순서를 부여하여 재조립 하거나 흐름 제어 또는 혼잡 제어 같은 기능도 처리하지 않기 때문에 TCP 보다 속도가 빠르지만 신뢰성 있는 데이터의 전송을 보장하지 못한다.
이러한 특징들 때문에 UDP는 신뢰성보다 연속성이 중요한 서비스 예를 들면 실시간 스트리밍 같은 경우에 사용한다.