Challenge, and Growth ! Who am I
                                                                                                             

Welcome to my blog 🫧

Total

Today

Yesterday













Network

[Network] TCP, UDP 란? - 차이점, 특성

뽀시라운 2024. 4. 15. 12:43
반응형
SMALL

[목차여기]

 

 

TCP와 UDP를 공부하기 전에 OSI 7 LayerTCP/IP 4 Layer 개념을 알고 가야 한다. OSI 모델은 네트워크 통신을 7개의 계층으로 나누며 TCP/IP 모델은 네트워크 통신을 4개의 계층으로 나눈다. OSI 모델의 프로토콜은 거의 사용되고 있지 않지만 모델 자체의 개념은 여전히 사용되고 있다. 반대로 TCP/IP 모델 자체는 거의 사용되고 있지 않지만 프로토콜이 널리 사용되고 있다. 모델은 계층을 나눔으로써 네트워크 문제를 식별하는데 유용하다. 이 글에서는 특히 TCP/IP 모델의 네트워크(Network) 계층들 중에 전송(Transport) 계층에서 사용하는 프로토콜을 알아볼 것이다.

 

혹시 프로토콜에 대한 개념이 확실하지 않다면 반드시 알고 넘어가야 한다. 프로토콜은 일종의 약속🤙🏻 인데, 통신을 할 때 메시지를 주고받는 양식과 규칙이라고 생각하면 된다. OSI 7 Layer에서 각 계층마다 프로토콜이 존재한다. 우리가 잘 아는 HTTP는 응용(Application) 계층의 프로토콜이고, IP는 네트워크 계층의 프로토콜이다. 이 글의 주제인 TCP, UDP는 전송계층의 프로토콜이다.

 

TCP(Transmission Control Protocol)

TCP는 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 전송계층의 프로토콜이다. 전송계층은 송신 측과 수신 측 호스트 상의 피어(peer)들이 메시지를 주고받을 수 있도록 한다.

 

* peer : 계층적 구조의 프로토콜을 사용하는 통신망의 동일 프로토콜 계층에서 대등한 지위로 동작하는 기능 단위 또는 장치.(node와 비슷한 개념)

 

TCP의 특성

1. 연결지향형 서비스

연결지향형이란, 애플리케이션 계층에 메시지(패킷)를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환하여 연결한다. 이 단계를 3-way Handshake라고 말한다. 그리고 연결을 해제하는 단계가 4-way HandShake다.

 

* 패킷 : 데이터를 여러 조각들로 나눈 것 (패킷 = 메시지 = 데이터 같은 개념으로 이해하면 된다.)

 

* 3-way HandShake

  • Client ➡️ Server : TCP SYN
  • Server ➡️ Client : TCP SYN ACK
  • Client ➡️ Server : TCP ACK

SYN은 'synchronize sequence numbers', 그리고 ACK는'acknowledgment'의 약자이다.

3-way Handshake와 4-way HandShake 만을 자세히 설명한 글들을 참고하면 좋을 것 같다.

 

이러한 절차는 양쪽 모두 데이터를 전송할 준비가 되었으며, 실제로 데이터 전달을 시작하기 전에 한쪽이 다른 쪽의 준비가 되었다는 것을 알 수 있도록 한다. TCP 접속을 성공적으로 성립하기 위하여 반드시 필요하다. 이 핸드셰이킹 단계를 지나면, TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 말한다. 그리고 이 연결은 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있기에 전이중(full-duplex) 연결이라고 한다. 또한 1:1 연결이기 때문에 점대점(Point to Point) 방식이라고 한다.

 

2. 신뢰적인 데이터 전송 서비스를 제공한다.

신뢰적인 데이터 전송 서비스란, 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달한다. TCP는 애플리케이션의 송신 측이 바이트 스트림(Byte Stream)을 소켓으로 전달하면 그 바이트 스트림이 손실되거나 중복되지 않게 수신 측이 다시 소켓을 전달한다. 그래서 이러한 기능 때문에 UDP 속도가 느려진다. 그렇지만 연속성보다 신뢰성 있는 전송이 중요할 때 사용하는 프로토콜이라고 할 수 있다.

 

UDP(User Datagram Protocol)

UDP는 데이터를 데이터그램 단위로 처리하는 전송계층의 프로토콜이다. 데이터그램의 의미는 독립적인 관계를 지니는 패킷이라는 뜻이다.

 

UDP 특성

1. 비연결형 서비스

TCP와 달리 UDP는 비연결형 서비스이다. 그래서 미리 송신 측과 수신 측의 연결을 설정하지 않는다.(= 핸드셰이킹을 하지 않는다.) 1:1, 1:N, N:M처럼 다양한 연결이 가능하다.

 

2. 비신뢰적인 데이터 전송 서비스

하나의 프로세스가 UDP 소켓으로 메시지를 보내면 UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다. 즉 흐름제어(flow control)가 없어서 수신 소켓에 도착하는 메시지들의 순서가 뒤바뀔 수도 있다. 대신 TCP보다 속도가 빠르다는 장점이 있다.

 

 

* 흐름제어와 혼잡제어란?

  • 흐름제어는 송신 측과 수신 측의 데이터 처리 속도를 조절하여 수신 측 버퍼의 오버플로우를 방지하는 것이다. 버퍼에 데이터가 가득 찬 상태에서 계속해서 데이터가 들어오게 되면 소실이 일어나기 때문이다.
  • 혼잡제어는 네트워크 내의 패킷 수가 넘치지 않도록 방지하는 것이다. 패킷 스위칭에서 주로 사용한다.

 

TCP vs UDP

  TCP UDP
연결 방식 연결형 서비스 비연결형 서비스
전송 순서 보장 보장 O 보장 X
수신 여부 확인 확인 O 확인 X
통신 방식 1:1 1:1, 1:N, N:M
속도 느리다 빠르다
신뢰성 높다 낮다

 

정리해 보자면 TCP와 UDP는 연결형 서비스, 비연결형 서비스의 차이에서부터 전송 순서 보장, 수신 여부 확인, 통신 방식 등이 달라졌다. TCP는 속도가 느린 대신 신뢰성이 높기 때문에 패킷 손실이 발생하면 안 되는 환경에서 유리하고 UDP는 신뢰성이 낮은 대신 속도가 빠르기 때문에 스트리밍과 같은 환경에서 유리하다.

 

네트워크 공부를 하다 보면 항상 TCP, UDP가 등장하는데 이 글을 적으면서 다시는 헷갈리지 않도록 정리했다. TCP가 어떻게 수신(ACK)을 확인하는지, UDP의 자세한 동작 방식은 무엇인지 깊이 공부하는 것이 다음 포스팅이 될 것 같다. 정리하면 여기에 링크를 달아놓겠다.

반응형
LIST
loading