본문 바로가기
basement

tcp / udp

by csue 2021. 5. 3.

Protocol

인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데에 쓰이는 통신 규약의 모음을 프로토콜 protocol 이라고 한다.

TCP/IP

TCP/TP 는 인터넷 프로토콜인 IP internet protocol 와 데이터 전송 제어 프로토콜인 TCP transmission control protocol 를 합친 말이다.

IP 가 서로 다른 네트워크를 연결해주면, TCP 는 데이터를 패킷으로 잘게 쪼개어 IP 를 통해 보낸다. 좀 더 풀어서 설명하자면 TCP 는 IP 위에서 동작하는 프로토콜이라 볼 수 있겠다. 그래서 TCP/IP 라고 함께 적는다. TCP 는 단순히 데이터를 보내기만 하는것이 아니라, 모든 패킷이 전부 도착할 수 있도록 패킷마다 번호를 부여하여 유실을 확인하고 유실된 패킷이 있을 경우 재전송을 요청해 데이터의 유실을 막는다.
그렇다면 어떻게 데이터가 전부 도착했음을 알 수 있을까?
TCP 를 통해 데이터를 주고 받는 경우, 받는 쪽에서 정상적으로 모든 데이터를 순서대로 받게 된다면 ACK 라는 메시지를 보내어 잘 받았다고 확인시켜준다. ACK 가 일정 시간 동안 없을 경우 보내는 쪽에서는 유실됐다고 판단하여 원래의 패킷을 재전송한다. 아래의 이미지를 보면 원리를 잘 이해할 수 있다.

 

ref) TCP, 그리고 UDP 쉽게 알아보는 두 개념과 차이점

 

이러한 특징 때문에 TCP 를 이용한 데이터 전송은 데이터의 신뢰성을 보장한다. 다만 많은 패킷의 전송이 동시다발적으로 이루어 질 경우, ACK 를 받고 패킷을 재전송하는 과정 때문에 데이터 전송 속도가 현저하게 느려질 수 있다. 이러한 과부하가 일어나면 패킷의 유실이 더 심해질 수 있기 때문에 TCP 는 한 번에 전송 가능한 패킷의 개수를 정해둔다. 따라서 TCP 는 기본적으로 느리다.

TCP 의 이러한 신뢰성 높은 데이터 전송 기법은 다소 느리다 할지라도 인터넷과 같이 정보를 전달하는 서비스에서는 아주 유용하다. 그렇지만 음성 인터넷 프로토콜 VoIP voice over internet protocol 나 스트리밍과 같이, 조금 끊기더라도 속도가 중요한 서비스에서 TCP 를 쓰게 된다면 TCP 의 느리다는 단점은 신뢰성이 높다는 장점보다 더욱 크게 작용하게 될 것이다. 이러한 TCP 의 단점을 해결하기 위해 등장한 것이 UDP 이다.

 

ref) What's the Default SNMP Port Number? Is SNMP TCP or UDP?

 

위 이미지를 보면 tcp 와 udp 의 차이를 명확하게 볼 수 있다.

 

UDP

UDP user datagram protocol 는 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 데이터그램은 순서화되지 않은, 독립적인 관계를 가진 데이터 패킷을 의미한다. 순서가 정해져있지 않으므로 순서대로 제대로 도착했는지 확인할 필요가 없다. 따라서 UDP 는 비연결 지향적 프로토콜이라고도 한다. 데이터를 주고 받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하기 때문이다.

UDP 를 이용해 주고 받은 데이터는 신뢰도가 낮다. 그러나 UDP 는 그만큼 빠르게 데이터를 보낼 수 있어 빠른 요청과 응답이 필요한 실시간 서비스에 적합하다. 

'basement' 카테고리의 다른 글

객체지향의 사실과 오해  (0) 2021.10.06
로드 밸런싱  (0) 2021.05.07
development process  (0) 2021.04.28
clean architecture  (0) 2021.04.27
OOP  (0) 2021.04.27