[CS] Network - TCP vs UDP

ZenTechie·2023년 5월 9일
0

CS

목록 보기
1/16

UDP

UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)비연결형 프로토콜이다.
IP 데이터그램을 캡슐화하여 보내는 방법연결 설정을 하지 않고 보내는 방법을 제공한다.
UDP 는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.
이 모두가 사용자 프로세스의 몫이다. UDP 가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것이다.

종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다. 만약 요청 또는 응답이 손실된다면, 클라이언트는 TIME_OUT되고 다시 시도할 수 있으면 된다. 코드가 간단할 뿐만 아니라 TCP 처럼 초기설정(initial setup)에서 요구되는 프로토콜보다 적은 메시지가 요구된다.

UDP 를 사용하는 것들에는 DNS 가 있다. 어떤 호스트 네임(Hostname)의 IP주소를 찾을 필요가 있는 프로그램은, DNS 서버로 호스트 네임(Hostname)을 포함한 UDP 패킷을 보낸다.
이 서버는 호스트(Host)의 IP주소를 포함한 UDP 패킷으로 응답한다.
사전에 설정이 필요하지 않으며, 그 후에 해제가 필요하지 않다.

UDP 통신이란

  • User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다.
  • 비연결형, 신뢰성 없는 전송 프로토콜이다.
  • 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층이다.
  • Transport layer에서 사용하는 프로토콜이다.

UDP는 왜 사용하는가?

  • UDP의 결정적인 장점은 데이터의 신속성이다. 데이터의 처리가 TCP보다 빠르다.
  • 주로 실시간 방송과 온라인 게임에서 사용된다. 네트워크 환경이 안 좋을때, 끊기는 현상을 생각하면 된다.

DNS(Domain Name System)에서 UDP를 사용하는 이유

  • Request의 양이 작음 → UDP Request에 담길 수 있다.
  • 3 way handshaking으로 연결을 유지할 필요가 없다. (오버헤드 발생)
  • Request에 대한 손실은 Application Layer에서 제어가 가능하다.
  • DNS : port 53번
  • But, TCP를 사용할 때가 있다! 크기가 512(UDP 제한)이 넘을 때, TCP를 사용해야한다.

TCP

대부분의 인터넷 응용 분야들은 신뢰성순차적인 전달을 필요로 한다.
UDP는 신뢰성과 순차적인 전달을 제공하지 않아서, 이를 만족시키기 위해 만들어진 것이 TCP 이다.

TCP(Transmission Control Protocol, 전송제어 프로토콜) 는 신뢰성이 없는 인터넷을 통해 종단간에 신뢰성 있는 바이트 스트림전송한다.
TCP 서비스는 송신자와 수신자 모두가 소켓(Socket)이라고 부르는 종단점을 생성함으로써 이루어진다.
TCP에서 연결 설정(Connection-Establishment)3-way-handshake 를 통해 수행된다.

모든 TCP 연결은 전이중(full-duplex) , 점대점(point-to-point) 방식이다.

  • 전이중 이란, 전송이 양방향으로 동시에 일어날 수 있음을 의미한다.
  • 점대점 이란, 각 연결이 정확히 2개의 종단점을 가지고 있음을 의미한다.

TCP는 멀티캐스팅이나 브로드캐스팅지원하지 않는다.

TCP 통신이란

  • 네트워크 통신에서 신뢰적인 연결방식을 의미한다.
  • TCP는 기본적으로 Unreliable Network 에서, Reliable Network 를 보장할 수 있도록 하는 프로토콜이다.
  • TCP는 혼잡 방지 알고리즘(Network Congestion Avoidance Algorithm) 을 사용한다.

Reliable Network를 보장한다는 것은 4가지 문제점이 존재한다.

  • 손실 : 패킷이 손실될 수 있는 문제
  • 순서 바뀜 : 패킷의 순서가 바뀌는 문제
  • 혼잡 : 네트워크가 혼잡한 문제
  • Overload : Receiver가 Overload되는 문제

흐름제어(Flow Control)

  • 송신측과 수신측의 데이터 처리 속도 차이해결하기 위한 기법
  • 흐름제어는 수신자가 패킷을 지나치게 많이 받지 않도록 조절하는 것
  • 기본 개념은 수신자가 송신자에게 현재 자신의 상태를 Feedback하는 것

방법

  • Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송

  • Sliding Window (Go Back N ARQ)
    • 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답없이 세그먼트를 전송할 수 있게하여 데이터 흐름을 동적으로 조절
    • 동작 방식
      • 먼저 윈도우에 포함된느 모든 패킷을 전송하고, 그 패킷들의 전달이 확인되는대로 이 윈도우를 옆으로 옮김으로써 그 다음 패킷들을 전송한다.
    • Window : TCP/IP 를 사용하는 모든 호스트들은 송신하기 위한 것수신하기 위한 2개의 Window를 가지고 있다. 호스트들은 실제 데이터를 보내기 전에 3-way-handshake 를 통해 수신 호스트receive window size자신send window size 를 맞추게 된다.

혼잡제어 (Congestion Control)

  • 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송속도강제로 줄이는 방법
    (송신측의 데이터는 지역망이나 인터넷으로 연결된 대형 네트워크를 통해 전달된다. 만약 한 라우터에 데이터가 몰릴 경우, 자신에게 온 데이터를 모두 처리할 수 없게된다. 이 경우 호스트들은 다시 재전송을 하게되고 결국 혼잡만 늘어나서 오버플로우나 데이터 손실을 발생시킨다.)
  • 네트워크 내에 패킷의 수가 과도하게 증가하는 현상혼잡이라고 한다.
  • 혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서의 전송 문제를 다룬다.

    흐름제어송신측과 수신측 사이의 전송속도를 다룬다.

방법

  • AIMD(Additive Increase / Multiplicative Decrease)
    • 처음에 패킷을 하나씩 보내고 문제없이 도착하면 window 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시키며 전송하는 방법
    • 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷 전송 속도를 절반으로 줄인다.
    • 여러 호스트가 한 네트워크를 공유하고 있으면 나중에 진입하는 쪽이 불리하지만, 시간이 흐를수록 평형상태로 수렴하는 특징이 있다.(공평한 방식)
    • 문제점으로는 초기에 네트워크의 높은 대역폭을 사용하지 못하여 오랜 시간이 걸리게 되고, 네트워크가 혼잡해지는 상황을 미리 감지하지 못한다.
      즉, 네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식이다.
  • Slow Start (느린 시작)
    • AIMD와 마찬가지로 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 window 크기를 1씩 늘려준다. 한 주기가 지나면 window 크기가 2배가 된다.
    • 전송속도는 AIMD에 반해 지수함수 꼴로 증가한다. 대신에 혼잡 현상이 발생하면 window 크기를 1로 떨어뜨린다.
    • 처음에는 네트워크 수용량을 예상할 수 있는 정보가 없지만, 한번 혼잡 현상이 발생하면 네트워크의 수용량을 어느 정도 예상할 수 있다.
    • 그러므로 혼잡 현상이 발생했던 window 크기의 절반까지는 이전처럼 지수 함수 꼴로 window 크기를 증가시키고 그 이후부터는 완만하게 1씩 증가시킨다.
  • Fast Retransmit (빠른 재전송)
    • 빠른 재전송은 TCP의 혼잡 제어에 추가된 정책
    • 패킷을 받는 쪽에서 먼저 도착해야할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보낸다.
    • 단, 순서대로 잘 도착한 마지막 패킷의 다음 패킷의 순번을 ACK 패킷에 실어서 보내게 되므로, 중간에 하나가 손실되면 송신 측에서는 순번이 중복된 ACK 패킷을 받는다.
      이것을 감지하는 순간 문제가 되는 순번의 패킷을 재전송할 수 있다.
    • 중복된 순번의 패킷을 3개 받으면 재전송을 수행한다. 이때 혼잡을 감지하고 window 크기를 줄인다.
  • Fast Recovery (빠른 회복)
    • 혼잡한 상태가 되면 window 크기를 반으로 줄이고 선형증가시키는 방법.
    • 혼잡한 상황을 한번 겪고 나서부터는 순수한 AIMD 방식으로 동작한다.

총 정리

프로토콜TCPUDP
신뢰성높다낮다
연결 방식연결형 서비스비연결형 서비스
전송 순서전송 순서 보장전송 순서가 바뀔 수 있다
통신 방식1:11:1 / 1:N / N:N
패킷 교환 방식가상 회선 방식데이터그램 방식
수신 여부 확인수신여부 확인수신여부 확인하지 않음
속도느리다빠르다
profile
데브코스 진행 중.. ~ 2024.03

0개의 댓글