티스토리 뷰

개발지식/Network

TCP and UDP

kimty1121 2023. 3. 25. 22:13

TCP (Transmission Control Protocol)

특징

  • 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
  • 연결을 통한 높은 신뢰성(Sequence Number, Ack Number를 통한 신뢰성 보장)
  • 1:1 통신
  • 데이터 흐름 제어(수신자 버퍼 오버플로우 방지)
  • 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지)

소켓 통신 과정

  • 서버 : 소켓을 생성, 주소 할당, 연결 요청 기다림, 요청에 대한 응답
  • 클라이언트 : 소켓을 생성, 주소 할당, 연결 요청

사용예

  • 데이터 송수신

UDP (User Datagram Protocol)

특징

  • 비연결형(port만 확인하여 소켓을 식별하고 송수신)
  • 비신뢰성
  • 1:1, 1:N, N:N 통신
  • TCP의 handshaking 같은 연결 설정이 없다

소켓 통신 과정

  • 서버 : 소켓을 생성, 주소 할당, 데이터를 송수신
  • 클라이언트 : 소켓 생성 후 데이터 수신

사용예

  • 인터넷 스트리밍 서비스
  TCP UDP
연결방식 연결형 프로토콜
연결 후 통신
1:1 통신 방식
비연결형 프로토콜
연결 없이 통신
1:1, 1:N, N:N 통신 방식
특징 - 데이터의 경계를 구분 안함
- 신뢰성 있는 데이터 전송
- 데이터의 전송 순서 보장
- 데이터의 수신 여부 확인
- 패킷을 관리할 필요 없음
- UDP보다 전송속도가 느림
- 데이터의 경계를 구분함
- 신뢰성 없는 데이터 전송
- 데이터의 전송 순서가 바뀔 수 있음
- 데이터의 수신 여부를 확인 암함
- 패킷을 관리해야함
- TCP보다 전송속도가 빠름

정리

TCP와 UDP는 개념을 어렵지 않은 개념이라 개발자라면 배경지식으로 알아두면 좋다.

면접에서는 물어보는 듯하나, 나는 아직까진 질문받아본 적이 없다.

연결형, 신뢰성 등 핵심 용어를 기억해 두면 될듯 하다.

사용예를 생각하면 이해하기 쉽다.

원문 또는 참고

'개발지식 > Network' 카테고리의 다른 글

Proxy  (0) 2023.03.28
Load Balancing  (0) 2023.03.26
OSI 7 Layers  (0) 2023.03.26
TCP-HandShake  (0) 2023.03.26