[Network] TCP vs UDP

·2021년 7월 18일
0

Network

목록 보기
4/7

1. 전송계층 (Transport Layer)

TCP와 UDP는 Transport Layer에서 데이터를 전송하기 위해 사용하는 프로토콜이다.
전송계층에서는 두 호스트 간에 연결을 맺고 최종적인 통신 목적지까지 데이터를 전달하는 기능을 한다. (OSI 7계층 자세히보기)

img

2. UDP vs TCP

두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되어 있지만, 서로 다른 특징을 가지고 있다.

TCP (Transmission Control Protocol)

  • 연결 지향성으로, 가상 회선 방식 을 제공한다.
  • 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking 과정을 통해 해제한다.
  • 높은 신뢰성을 보장한다.
  • UDP 보다 속도가 느리다.
  • 따라서, 연속성보다 신뢰성있는 전송이 중요할 때 주로 사용한다.
  • ex) 파일 전송

UDP (User Datagram Protocol)

  • 비 연결성으로, 데이터 그램 방식 을 제공한다.
  • 정보를 주고 받을 때, 정보를 보내거나 받는다는 신호 절차를 거치지 않는다.
  • 연결 자체가 없기에 서버 소켓과 클라이언트 소켓의 구분이 없다.
  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 신뢰성이 낮다.
  • TCP 보다 속도가 빠르다
  • 따라서, 신뢰성보다도 연속성이 중요한 서비스에서 주로 사용된다.
  • ex) 스트리밍 서비스(유튜브...)

UDP Header 구조

img

Source Port		: 출발지 포트 번호
Destination Port	: 도착지 포트 번호
Total Length		: Header + Data ⇒ 사용자 데이터그램의 전체 길이
CheckSum		: 오류 검출
  • CheckSum: UDP 세그먼트 안의 비트에 대한 변경사항이 있는지 검사하는 역할! network를 통해 패킷을 송/수신하는 중에 헤더나 데이터가 손상되지 않았다는 것을 보증하기 위해 사용된다.


3. UDP와 TCP의 탄생 배경

  1. IP의 역할은 host to host 만을 지원하는데, host 에서 host 이동은 IP 로 가능하지만 하나의 장비 안에서 수많은 프로그램들이 통신하는 것은 IP 만으로 한계가 있었다. (같은 IP 주소를 사용하니까!)
  2. IP에서 오류가 발생한다면 ICMP에서 '알려주기만' 할 뿐 대처를 못하기 떄문에 오류를 처리해주는 방법이 필요했다. (다시 보내준다거나,,,)
  • ICMP: 인터넷 제어 메시지 프로토콜, 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메세지를 전송받는데 주요 쓰임

1번을 해결하기 위해 port 번호가 탄생했고, 2번을 해결하기 위해 TCP/UDP가 탄생하였다!


4. 오류 해결 방법

  • TCP: 데이터의 분실, 중복, 순서 등을 자동으로 보정하기 때문에 송수신 데이터의 정확한 전달을 할 수 있도록 해준다.
  • UDP: TCP와 달리 오류가 날 수도 있고, 재전송이나 순서가 뒤바뀔 수 있어 어플리케이션에서 재처리해야 한다.


출처

https://github.com/haewon-park/csStudy/edit/main/Network/UDP.md

profile
당근먹고 자라나는 개발자

0개의 댓글