TCP vs UDP 차이

shin·2023년 6월 5일
1

HTTP Web

목록 보기
6/12

💡 TCP

Transmission Control Protocol

(1) 연결형 프로토콜

  • 연결을 위해 할당된 논리적인 경로가 있음
  • 3 way handshaking 과정으로 연결, 4 way handshaking 과정으로 해제

(2) Flow Control(흐름 제어)

  • 송신측과 수신측의 데이터처리 속도 차이를 해결하기 위한 방법
  • 수신자가 패킷을 지나치게 많이 받게 된 경우에 송신자에게 자신의 상태를 피드백하여 송신측의 데이터 전송 속도를 조절하도록 하는 것
  • Stop and wait 방식, sliding window 기법

(3) Congestion Control(혼잡 제어)

  • 송신측 데이터 전달과 네트워크 처리 속도 차이를 해결하기 위한 방법
  • 하나의 라우터에 여러 데이터가 몰린 경우 데이터를 모두 처리할 수 없어서 호스트들은 데이터를 다시 전송을 하게 됨
  • 따라서 네트워크 혼잡으로 인한 오버플로우, 데이터 손실 발생 위험을 막기 위해서 송신측에서 보내는 데이터의 전송 속도를 조절하도록 하는 것
  • Slow start, Fast Recovery

(4) 신뢰성 보장

  • 높은 신뢰성을 보장하지만 속도가 느림
  • 대량의 연결을 보장하고 올바른 순서로 패킷을 전송하기 위해 IP의 오버헤드를 처리함
    • 통신이 지연될 수 있으며 데이터 변동에 대기 시간이 필요함
  • 호스트 간 메시징을 사용하여 안전한 네트워크 환경에서 데이터 패킷을 전송함
  • IP 헤더를 활성화하여 오류나 손상이 없는 데이터를 순차적으로 생성하여 수신자가 신뢰할 수 있는 데이터를 받을 수 있도록 보장함

(5) 1:1 연결

  • 서버와 클라이언트는 1:1로 연결이 됨
  • 전송 데이터의 크기가 무제한
  • 그 외 Full-Duplex(전이중), Point to Point 방식

💡 UDP

User Datagram Protocol

1) 비연결형 프로토콜

  • 연결을 위해 할당된 논리적인 경로가 없음
  • 각각의 패킷은 독립적인 관계로서 서로 다른 경로로 처리됨
  • connect() 함수가 필요하지 않기 때문에 서버 소켓과 클라이언트 소켓의 구분이 없고, IP를 기반으로 데이터를 전송함
  • 많은 양의 데이터를 소비하는 웹사이트에서 네트워크의 효율성을 증대시킴
  • 비연결형 프로토콜로 연결을 설정하고 해제하는 과정이 없음
    • 따라서 TCP에 비해 속도가 빠르지만 신뢰성이 낮음

2) 빠른 속도

  • 빠르고 안정적인 인터넷 어플리케이션 사용과 데이터 전송을 목적으로 함
  • 대역폭과 대기 시간이 적어서 특정 시간에 대규모 트래픽이 몰리는 게임이나 비디오 스트리밍, 온라인 화상 회의의 경우에 사용함

3) 1:1, 1:N, N:M

  • 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결될 수 있음
  • Datagram(메시지) 단위로 전송됨 (크기는 65535 bytes, 초과하면 잘라서 보냄)

💭 동영상 스트리밍 TCP? UDP?

속도가 안정성보다 중요한 경우 : UDP

  • 화상 회의의 경우에는 모든 데이터가 전달될 때까지 기다리는 것보다 실시간으로 상호 작용이 빠르게 되는 것을 선호하기 때문에
  • 패킷이 손실될 가능성이 있더라도 UDP를 사용해야 함

안정성이 속도보다 중요한 경우 : TCP

  • 넷플릭스 비디오 스트리밍

+) 넷플릭스에서 TCP를 사용하는 이유

  • TCP 시간에 민감하고 포트 포워딩이 필요하지 않기 때문
  • TCP는 네트워크의 전체 대역폭을 활성화하는 데 도움이 됨
  • 더 많은 데이터를 한 번에 압축할 수 있고, 재로딩된 데이터 패킷도 문제가 되지 않음
  • 데이터 패킷의 재전송을 통해서 악성 코드나 장애 발생 시 오류 복구를 보장함
  • 출발지와 목적지 사이의 대역폭을 모니터링하고 그에 따라 스트리밍 프로그램의 비디오 품질을 조정하는 것이 매우 용이함
  • 참고 사이트
    https://www.geeksforgeeks.org/why-does-netflix-use-tcp-but-not-udp-for-streaming-video/
profile
Backend development

0개의 댓글