TCP vs UDP

임지원·2024년 5월 28일
post-thumbnail

OSI 7계층, TCP/IP 4계층

TCP, UDP는 네트워크 계층 중 전송 계층(OSI 4계층, TCP/IP 3계층)에서 사용하는 프로토콜이다.
전송계층은 송신자와 수신자를 연결하는 통신 서비스로 데이터의 전달을 담당한다.

따라서 데이터 통신을 표현한 OSI 7계층과 TCP/IP4계층을 먼저 알아보도록 하겠다.

둘 다 데이터 통신을 표현하였지만 OSI는 계층과 역할을 정확하게 표현한 모델이고, TCP/IP는 현재 인터넷에 사용되는 프로토콜로 실무적이며 단순화된 모델이다.

OSI

Open System Interconnection으로 다른 컴퓨터간의 통신 시 네트워크 구조에 상관없이 통신할 수 있도록 만든 모델.
물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용으로 7개의 레이어로 구성되어있다.

1계층 - 물리계층(Physical Layer)
전기적,기계적, 기능적인 특성을 이용하여 통신 케이블로 데이터를 전송.
이계층에서는 데이터를 전송만 할 뿐, 데이터가 무엇인지, 에러가 있는지 신경쓰지 않음
대표적 장비로 통신 케이블, 리피터, 허브 등이 있다.

2계층 - 데이터 링크계층(DataLink Layer)
물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행
통신의 오류찾기, 재전송 기능이 있다.
맥(media access control) 주소를 갖고 통신을 한다.
대표적 장비로 브릿지, 스위치 등이 있다.

3계층 - 네트워크 계층(Network Layer)
라우팅(데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능) 하는 계층
주소부여(IP), 경로설정(Route)을 한다.

4계층 - 전송 계층(Transport Layer)
통신을 활성화 하기 위한 계층
보통 TCP프로토콜을 이용한다. 만약 데이터가 왔다면 4계층에서 해당 데이터를 하나로 합쳐 5계층으로 전달한다.
패킷 생성 및 전송에 해당한다.

5계층 -세션 계층(Session Layer)
데이터가 통신하기 위한 논리적 연결
세션 설정, 유지, 종료, 복구 등의 기능이 있다.
통신하는 사용자들을 동기화하고 오류복구 명령을 일괄적으로 다룸

6계층 - 표현 계층(Presentation Layer)
데이터 표현이 상이한 응용 프로세스의 독립성을 제공, 암호화
사용자의 명령어를 완성 및 결과 표현화는 계층

7계층 - 응용 계층(Application Layer)
사용자의 데이터와 직접 상호작용하는 계층
HTTP뿐 아니라 SMTP(이메일 통신을 가능하게 하는 프로토콜)도 포함이다.

TCP/IP

L1 - 네트워크 연결 계층(Network Access Layer)
물리적인 데이터의 전송을 담당하는 계층으로, 여기서는 인터넷 계층과 달리 같은 네트워크 안에서 데이터가 전송된다. 노드 간의 신뢰성 있는 데이터 전송을 담당하며, 논리적인 주소가 아닌 물리적인 주소인 MAC을 참조해 장비간 전송을 하고, 기본적인 에러 검출과 패킷의 Frame화를 담당한다.

L2 - 인터넷 계층(Internet Layer)
네트워크 상에서 데이터의 전송을 담당하는 계층으로 서로 다른 네트워크 간의 통신을 가능하게 하는 역할을 수행한다

L3 - 전송 계층(Transport Layer)
통신 노드간의 데이터 전송 및 흐름에 있어 신뢰성을 보장
전송계층에 사용되는 대표적 프로토콜로 TCP, UDP가 있다.

L4 - 응용 계층(Application Layer)
사용자와 가장 가까운 계층으로 사용자-소프트웨어의 소통을 담당하는 계층
웹 프로그래밍을 하면서 흔히 접하는 여러 서버나 클라이언트 관련 응용 프로그램들이 동작하는 계층
응용 프로그램들끼리 데이터를 교환하기 위한 계층


TCP(Transmission Control Protocol)

TCP는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용하여 신뢰성을 구축한다.

  • 가상회선 패킷 교환 방식(순서 보장)

    각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상 회선이 해제되고 전송된 순서대로 도착하는 방식이다.

  • 3-way handshaking(신뢰성 확보)

    1단계 : SYN 단게 = 클라이언트가 서버에게 연결을 요청
    2단계 : SYN + ACK 단계 = 클라이언트의 연결 요청을 수락하고 서버도 클라이언트에게 연결 요청
    3단계 : ACK 단계 = 클라이언트도 연결 요청 수락

이렇게 3단계를 거쳐 신뢰성 있는 데이터 전송을 시작한다.

특징

  • 연결형 서비스로 가상 회선 방식을 제공한다.
  • 3-way handshaking을 통해 연결을 설정한다.
  • 흐름 제어 및 혼잡을 제어한다.
  • 높은 신뢰성을 보장한다.
  • UDP보다 속도가 느리다.
  • 전이중(양방향으로 전송이 동시에 일어날 수 있음), 점대점 방식(연결이 2개의 종단점을 가지고 있음)이다.

패킷 추적 및 관리

데이터는 패킷 단위로 나누어 같은 목적지(IP계층)로 전송
각 패킷에 번호를 붙여 분실 확인 및 패킷을 추적하고 조립함.
ex) A,B,C 패킷에 1,2,3번호를 부여하여 A,C만 왔으면 2번이 비었기에 분실을 확인 할 수 있다.

느린 이유


UDP(User Datagram Protocol)

UDP는 순서를 보장하지 않고 수신여부를 호가인하지 않으며 단순히 데이터만 주는 방식이다.

  • 데이터그램 패킷 교환 방식

패킷이 독립적으로 이동하며 최적의 경로를 선택하여, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 순서가 다를 수 있다.

특징

  • 비연결형 서비스로 데이터그램 방식을 사용
  • 정보를 주고 받을 때 신호 절차를 거치지 않음
  • 최소한의 오류만 검출
  • 신뢰성이 낮다.
  • 속도가 빠르다.

빠른 이유


TCP vs UDP

profile
백엔드 새싹

0개의 댓글