본문 바로가기
TIL/기술면접 대비

TCP/UDP

by J1-H00N 2023. 8. 25.

TCP와 UDP = 전송 계층에서 데이터를 보내기 위해 사용하는 프로토콜

전송 계층 = 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층

 

TCP

인터넷 상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

IP가 데이터의 배달 처리를 담당한다면 TCP는 패킷을 추적 및 관리한다.

연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용된다.

 

TCP의 특징

  • 연결 지향 방식(패킷을 전송하기 위한 논리적 경로를 배정)으로 패킷 교환 방식 사용
  • (연결형 서비스로) 높은 신뢰성 보장
    • 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제
    • 흐름 제어 및 혼잡 제어
    • UDP보다 느림
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식
  • 연속성보다 신뢰성이 중요할 때(ex) 파일 전송) 사용하는 프로토콜

 

TCP 서버의 특징

  • 서버소켓은 연결만 담당
  • 연결과정에서 반환된 클라이언트 소켓은 데이터 송수신에 사용됨
  • 서버와 클라이언트는 1대1로 연결
  • 스트림 전송으로 전송 데이터의 크기가 무제한
  • 패킷에 대한 응답을 해야하기 때문에 성능이 낮다.(시간 지연, CPU 소모)
  • 손실된 경우 재전송 요청을 하므로 스트리밍 서비스에 불리

 

UDP

데이터를 데이터그램 단위로 처리하는 프로토콜

데이터그램 = 독립적인 관계를 지니는 패킷

비연결형 서비스를 지원하는 프로토콜로 연결을 위해 할당되는 논리적 경로가 없음

=> 패킷은 각기 다른 경로로 전송됨 => 패킷이 독립적인 관계를 가지게 됨

 

UDP 특징

  • 비연결형 서비스로 데이터그램 방식을 제공
  • 정보를 주고 받을 때 정보를 보내거나 받는 신호절차를 거치지 않음
    • 신뢰성이 낮다
    • TCP 보다 빠르다
  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
  • 신뢰성보다 연결성이 중요한 스트리밍 서비스에 주로 사용

 

UDP 서버 특징

  • UDP는 연결 자체가 없어 서버 소켓과 클라이언트 소켓의 구분이 없다
  • 소켓 대신 IP를 기반으로 데이터를 전송
  • 서버와 클라이언트가 1대1, 1대N, N대M 등으로 연결될 수 있다.
  • 데이터그램 단위로 전송하며 65535바이트를 초과하면 잘라서 보낸다
  • 흐름제어가 없어서 패킷이 제대로 전송되었는지, 오류가 있는지 확인 불가

 

 

정리

TCP와 UDT 모두 수신자와 송신자를 연결하는 통신서비스를 제공하는 전송 계층에서 사용하는 프로토콜이다.

TCP는 연결형 서비스를 지원해 3-way handshaking 과정을 통해 연결하며 흐름 제어 및 혼잡 제어를 통해 높은 신뢰성을 보장한다. 하지만 그만큼 패킷에 대한 응답을 해야 하기 때문에 느리고 CPU를 소비한다는 단점이 있어 연결성보다는 신뢰성이 중요할 때 사용한다. 

TCP 서버는 서버와 클라이언트가 1대1로 연결되며 스트림 전송을 사용해 전송 데이터의 크기가 무제한이다.

UDP는 반대로 비연결형 서비스로 데이터그램 방식을 사용한다. 비연결형 방식이기 때문에 연결을 위한 논리적 경로를 제공하지 않아서 패킷은 각기 다른 경로로 전송된다. 따라서 패킷이 독립적인 관계를 지니게 된다.

정보를 주고받을 때 정보를 주거나 받는다는 신호절차를 거치지 않는다. 즉, 흐름 제어나 혼잡 제어도 하지 않기에 신뢰성이 낮지만 TCP 보다 빠르다. 신뢰성보다 성능이 중요한 스트리밍 서비스에서 주로 사용한다.

UDP 서버는 서버 소켓과 클라이언트 소켓의 구분이 없고, 소켓 대신 IP를 기반으로 데이터를 전송한다.

서버와 클라이언트가 1대1, 1대N, N대M 등으로 연결될 수 있으며 데이터그램 단위로 전송하기 때문에 65535 바이트를 초과하면 잘라서 보낸다.

 

 

'TIL > 기술면접 대비' 카테고리의 다른 글

DI, IoC  (0) 2023.08.28
http, https 차이점  (0) 2023.08.26
쿠키, 세션의 개념과 차이  (0) 2023.08.24
브라우저의 작동방식  (0) 2023.08.23
CORS(Cross Origin Resource Sharing)  (0) 2023.08.22