멈추지 않고 끈질기게

[네트워크] TCP vs UDP 본문

네트워크

[네트워크] TCP vs UDP

sam0308 2023. 3. 10. 15:55

※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.

※ 해당 포스팅은 하기 출처들의 내용을 참고하였습니다.

- https://mangkyu.tistory.com/15

- https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake

- https://www.cloudflare.com/ko-kr/learning/ddos/glossary/user-datagram-protocol-udp/

 

 

이번 포스팅에서는 TCP와 UDP에 대해 알아보겠습니다.

서론

 네트워크 계층마다 사용하는 프로토콜이 존재하며, 제 4계층인 전송 계층은 데이터 전송을 위한 프로토콜을 포함하고 있습니다. 이러한 데이터 전송을 위한 프로토콜에는 대표적으로 TCP와 UDP가 있습니다. 

 

1. TCP(Transmission Control Protocol)

 TCP(Transmission Control Protocol)는 직역하면 전송 제어 규약으로, IP와 함께 사용하는 프로토콜입니다.  IP가 데이터 전송을 담당하고, TCP는 패킷의 추적 및 관리를 시행합니다.  TCP는 다음과 같은 특징을 지닙니다.

 

1) 연결 지향 방식

 TCP에서는 서버와 클라이언트가 1:1로 연결되며, 패킷을 전송하기 위한 경로를 설정한 다음 전송합니다. 수신지를 정확히 하기 위하여 TCP에서는 3-way handshaking 방식을 통해 서버와 연결, 4-way handshaking 방식으로 해제합니다. 해당 방식은 각각 클라이언트와 서버가 3번, 4번에 걸쳐 신호를 주고받으며 서로 상대방이 준비가 되었음을 확인하여 신뢰성 있는 연결을 보장합니다. 다만 이러한 과정 때문에 UDP 방식에 비해 상대적으로 속도는 떨어지게 됩니다. 

 

그림 1. TCP의 연결 설정과 해제

 

2) 데이터의 흐름 제어 및 혼잡 제어

 TCP에서는 패킷에 번호를 부여하여 패킷의 순서 및 누락 여부를 확인할 수 있게 처리합니다. 예를 들어 패킷을 A, B, C 순서대로 전송했다면 수신지에서 A, B, C로 들어왔는지 확인하고, B가 누락되거나 A, C, B와 같이 잘못된 순서로 수신되는 경우 데이터를 재전송하는 과정을 거칩니다. 이와 같은 방식으로 TCP는 패킷을 추적, 관리하여 데이터의 순서를 보장합니다.

 

3)전이중(full duplex), 점대점(point to point) 방식

 TCP는 송신자와 수신자가 3-way handshaking과 같은 연결 설정 과정을 거쳐 서로 연결된 상태로 데이터를 주고받으므로, 전이중 방식(한 경로로 서로 정보를 주고 받음)이자 점대점 방식(1:1 연결)이라고 할 수 있습니다.

 

2. UDP(User Datagram Protocol)

 UDP(User Datagram Protocol)는 직역하면 사용자 데이터그램 프로토콜로, 데이터를 데이터그램 단위로 처리하는 프로토콜을 말합니다. UDP는 다음과 같은 특징을 가집니다.

 

1) 비연결형 서비스

 UDP는 TCP와 달리 고정된 포트를 가지지 않고, 각 패킷은 서로 다른 경로로 전송되어 독립적으로 처리하게 됩니다. 또한 3-way handshaking과 같은 연결 설정, 해제 과정을 거치지 않으므로, 이 과정에서 시간을 소요하는 TCP에 비하여 상대적으로 속도가 빠르고 네트워크 부하가 적습니다. 단, 패킷들이 서로 독립적으로 전송되어 처리되는 만큼 데이터의 신뢰성을 보장하기 어렵습니다.

 

그림 2. UDP의 데이터 전송

 

2) 최소한의 오류 검출

 UDP에서는 TCP와 같은 패킷의 추적 및 관리는 시행하지 않습니다. 대신 UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출합니다. CheckSum은 무결성 검사를 위한 값으로, 데이터를 16비트 단위로 나누어 모두 더하고 발생한 오버플로우 값까지 전부 더한 다음 1의 보수를 취한 값을 뜻합니다. 서버와 클라이언트 쪽에서 각각 CheckSum을 구한 뒤 동일하다면 정상, 다르다면 데이터 손상이 일어난 것으로 판단하는 식입니다. 다만 이 방식은 클라이언트 쪽에서 계산한 CheckSum이 송신 중에 변형될 수도 있고, 확률적으로 데이터가 변경되었는데 CheckSum은 동일한 경우도 발생할 수 있으므로 신뢰도가 높은 방법은 아닙니다.

 

3. TCP vs UDP

 TCP와 UDP 의 특징을 정리하자면 다음과 같습니다.

 

그림 3. TCP vs UDP

 TCP의 경우 데이터의 신뢰성이 높은 대신 데이터 전송 속도는 UDP에 비해 상대적으로 느립니다. 따라서 속도보다 데이터의 신뢰성이 중요한 파일 전송 등에 사용됩니다. 반면 UDP는 전송 속도가 빠른 대신 별도의 패킷 검사를 시행하지 않으므로 TCP에 비해 데이터의 신뢰성이 상대적으로 떨어집니다. 따라서 데이터의 신뢰성보다 속도가 중요한 동영상 스트리밍 서비스 등에 사용됩니다.

 

 다만 이러한 분류는 반드시는 아니며, 대표적으로 넷플릭스의 경우 스트리밍 서비스에 TCP를 사용한다고 합니다. 따라서 각 프로토콜의 특징을 이해하고 프로젝트에 어떤 프로토콜이 더 적합한지 분석할 필요가 있겠습니다.

 

'네트워크' 카테고리의 다른 글

[네트워크] OSI 참조 모델  (0) 2023.03.10