TCP와 UDP의 비교
목차
TCP와 UDP는 TCP/IP의 전송계층에서 사용되는 프로토콜이다. 전송계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다.
++ https://www.youtube.com/watch?v=1pfTxp25MA8
TCP (Transmission Control Protocol, 전송제어 프로토콜)
대부분의 인터넷 응용 분야들은 신뢰성과 순차적인 전달을 필요로 한다.
TCP는 신뢰성이 없는 인터넷을 통해 종단간에 신뢰성 있는 바이트 스트림을 전송 하도록 특별히 설계되었다.
TCP 서비스는 송신자와 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어진다.
모든 TCP 연결은 전이중, 점대점 방식이다.
전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미하며 점대점이란 각 연결이 정확히 2 개의 종단점을 가지고 있음을 의미한다.
1:1 통신만 가능하다.
TCP의 특징
- 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다.
- 사전에 3-way handshake라는 과정을 통해 연결을 설정하고 통신을 시작한다.
- 4-way handshake 과정을 통해 연결을 해제(가상 회선 방식)한다.
- 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장한다. 그러나 이 때문에 UDP보다 전송 속도가 느리다는 단점이 있다.
- 여기서 흐름 제어란, 송신(송신전송률) 및 수신(수신처리율) 속도를 일치시키는 것. 즉, 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것입니다.
- 혼잡 제어란, 네트워크가 혼잡하다고 판단될 때 송신률을 감속함. 즉, 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 하여 혼잡 붕괴 현상이 일어나는 것을 방지하는 것입니다.
- 오류 제어 : 패킷 손실, 중복, 순서바뀜 등이 없도록 보장합니다. 수신 여부를 확인할 수 있다.
- 훼손된 패킷을 감지 하고 중복 수신된 확인 후 폐기하며, 손실된 패킷은 재전송하고 순서에 맞지 않는 세그먼트를 버퍼에 저장하는 일을 한다.
- 데이터의 경계를 구분하지 않는다. (바이트 스트림 서비스)
- TCP를 사용하는 예로는 대부분의 웹 HTTP 통신, 이메일, 파일 전송에 사용된다.
TCP는 패킷을 어떻게 추적 및 관리하는가?
데이터는 패킷 단위로 나누어 같은 목적지(IP 계층)으로 전송된다.
Ex) 한 줄로 서야 하는 A, B, C라는 사람(패킷)이 서울(송신측)에서 출발하여 부산(수신측)으로 가야한다고 가정하자.
A,B,C가 순차적으로 가는 상황에서 B가 길을 잘못 들어서 분실되었다.
하지만 목적지에서는 A,B,C가 모두 필요한지 모르고 A,C만 보고 다 왔다고 착각할 수 있다. 그렇기 때문에 A, B, C라는 패킷에 1, 2, 3이라는 번호를 부여하여 패킷의 분실 확인 처리를 하기 위해 목적지에서 패킷을 재조립한다.
이런 방식으로 TCP는 패킷을 추적하며, 나누어 보내진 데이터를 목적지에서 받고 재조립할 수 있게 된다.
UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)
UDP는 비연결형 프로토콜 이다.
IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다.
데이터 그램 : 독립적인 관계를 지니는 패킷
UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.
이 모두가 사용자 프로세스의 몫이다.
종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다.
만약 요청 또는 응답이 손실된다면, 클라이언트는 time out 되고 다시 시도할 수 있으면 된다.
코드가 간단할 뿐만 아니라 TCP의 초기설정에서 요구되는 프로토콜보다 적은 메시지가 요구된다.
UDP의 특징
- 데이터를 데이터 그램 단위로 처리하는 프로토콜.
- 비연결형 프로토콜로 사전에 연결 설정 없이 데이터를 전달한다.
- 사전에 연결 설정을 하지 않은 데이터 그램 방식을 통해 데이터를 전달하기 때문에 하나의 메시지에서 분할된 각각의 패킷은 서로 다른 경로로 전송될 수 있다.
- 송신측에서 전송한 패킷의 순서와 수신측에 도착한 패킷의 순서가 다를 수 있다. 그러나 서로 다른 경로로 패킷을 처리함에도 불구하고 순서를 부여하거나 재조립하지 않는다.
- 흐름 제어, 혼잡 제어, 오류 제어를 하지 않으므로 손상된 세그먼트에 대한 재전송을 하지 않는다.
- 이로 인해 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만, 신뢰성 있는 데이터 전송을 보장하지 못한다.
- UDP는 DNS(누군가 DNS 서비스를 요청할 때마다 TCP처럼 Session을 맺고 통신한다면 속도도 느리고, 서버 리소스도 엄청나게 소모될 것이다.) 등에서 사용된다
그림으로 비교하는 TCP vs UDP
먼저, TCP의 데이터 송신 과정을 살펴보자.
반면, UDP는 일방적이다.
즉, 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용한다.
HTTP3 와 UDP
많은 기능이 들어있는 무거운 TCP 보다는 필요한 기능만 들어있는 가벼운 UDP 를 선택
'CS > Network' 카테고리의 다른 글
패캠 CS 강의 - 네트워크 - Part 1. 컴퓨터 네트워크 소개 (0) | 2023.01.21 |
---|---|
TCP 3-way handshake (0) | 2021.12.28 |
SSL (0) | 2021.12.28 |
REST,REST API, RESTful (0) | 2021.12.28 |
OSI 7계층과 TCP/IP 4계층 (0) | 2021.12.28 |