CS스터디

[네트워크] TCP, UDP

Codult 2024. 1. 28. 20:04
728x90

인터넷 프로토콜 스위트 (Internet Protocol Suite)

인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음

그 중 TCP와 IP가 가장 많이 쓰이기 때문에, 주로 TCP/IP 프로토콜 스위트라고 부른다.

  • 애플리케이션 계층 (Application Layer): 기존 OSI 7계층의 애플리케이션/표현/세션 계층을 포함한다.
  • 전송 계층 (Transport Layer)
    : 송신자와 수신자를 연결하는 통신 서비스를 제공하여, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다.
    : TCP와 UDP가 대표적인 프로토콜이다.
  • 인터넷 계층
  • 네트워크 인터페이스 (링크 계층)

 

TCP (Transmission Control Protocol)

전송을 제어하는 프로토콜로, 일반적으로 인터넷 상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용한다.
(IP가 데이터의 배달을 처리, TCP는 패킷을 추적 및 관리)

  • 세그먼트: TCP 프로토콜 데이터 유닛 (PDU)
  • 애플리케이션 계층으로 전달받은 데이터를 청크 단위로 분할한 뒤, TCP 헤더를 덧붙여 TCP 세그먼트를 생성한다.
  • TCP 세그먼트는 IP 데이터그램에 패킷화 되어 상대방과 주고 받게 된다.
    (데이터 그램: IP의 PDU)

TCP 헤더

: 검증 절차에 필요한 정보 때문에, UDP에 비하여 상대적으로 복잡한 헤더를 갖는다.

  • 일련 번호 (sequence number): 순서를 보장
  • 6비트의 코드 비트(= TCP 플래그)는 Urgent, Acknowledge, Push, Reset, Synchronize, Finish의 총 6개의 플래그로 구성되어 있다. (각 1비트, 초기값:0)
  • 코드 비트는 클라이언트와 서버가 통신을 위해 연결하고 끊을 때 사용된다.

TCP의 3 way 핸드쉐이크 (연결)

패킷 요청을 3번 교환하여 연결을 확립한다.

 

  1. SYN - 송신자가 수신자에게 통신을 위한 연결 확립에 대한 요청을 보낸다.
    : SYN 비트가 활성화(1)된 세그먼트를 전송한다.
  2. SYN+ACK -  송신자에게 데이터 전송에 대한 허가를 받기 위해 연결 확립에 대한 요청(SYN) & 수신자가 송신자의 연결 확립 요청에 대한 응답을 보낸다.
    : SYN, ACK 비트가 활성화된 세그먼트를 전송한다.
  3. ACK - 송신자가 수신자의 요청에 대한 응답을 보낸다.
    : ACK 비트가 활성화된 세그먼트를 전송한다.

TCP의 4 way 핸드쉐이크 (연결 종료)

패킷 요청을 4번 교환하여 연결을 종료한다.

 

  1. FIN - 송신자가 수신자에게 연결 종료를 위한 요청을 보낸다.
    : FIN 비트가 활성화(1)된 세그먼트를 전송한다.
  2. ACK -  수신자가 송신자의 연결 종료 요청에 대한 응답을 보낸다.
    : ACK 비트가 활성화된 세그먼트를 전송한다.
  3. FIN - 수신자가 송신자에게 연결 종료를 위한 요청을 보낸다.
    : FIN 비트가 활성화(1)된 세그먼트를 전송한다.
  4. ACK - 송신자가 수신자의 요청에 대한 응답을 보낸다.
    : ACK 비트가 활성화된 세그먼트를 전송한다.

 

TCP의 연결 지향 방식

= 패킷을 전송하기 위한 논리적 경로를 배정한다는 뜻

장점

  • TCP는 연결형 서비스로 신뢰성을 보장한다. ( 3-way 핸드쉐이크를 통해, 정확한 전송을 보장하기 위한 세션을 수립)
  • 데이터의 흐름제어, 혼잡제어 등의 기능도 한다.

단점

  • UDP보다 속도가 느리다.

따라서, TCP는 연속성보다 신뢰성있는 전송이 중요할 때 사용하는 프로토콜이다. (ex. 파일 전송)

 

UDP (User Datagram Protocol)

데이터를 데이터그램 단위로 처리하는 프로토콜로, 수신여부와 상관없이 데이터를 전송하는 방식이다.

  • 애플리케이션 계층으로 전달받은 데이터에 UDP 헤더를 추가하여 User Datagram을 생성한다. (분할X)

UDP 헤더

  • 출발지 포트 번호
  • 목적지 포트 번호
  • 길이(Length) 필드: 헤더와 데이터 필드를 합친 길이
  • 체크섬(CheckSum)
    : 비트 오류 검증 (UDP 데이터의 무결성을 검증)
    : UDP는 데이터 무결성을 보장하는 방식이 아니므로, TCP 체크섬과 달리 UDP 체크섬은 필수가 아니다.
    : 0으로 채워 보내도 문제가 되지 않으며, 이 경우 수신자가 데이터 무결성을 체크하지 않는다.

UDP의 통신 과정

UDP는 접속과 해제가 없는 비연결성 방식이다. (전송하면 끝)

장점

  • 전송량이 제한되어 있는 TCP와 달리, UDP는 대용량의 데이터 전송이 가능하다.
  • 스트리밍 같은 미디어 처리에 유용하다.
  • 속도가 빠르다.

단점

  • TCP와 달리, 수신을 확인하지 않기 때문에 손실/중복 방지, 흐름제어, 혼잡제어 등의 기능이 없다.

 

※ 정확성이 필요한 상황에서는 TCP를, 스트리밍과 같이 연속성이 필요한 상황에서는 UDP를 사용한다.

 

출처:

https://www.canva.com/design/DAF6h9AaRI0/cGMBM6MYsui21GUH-uwJQw/view?utm_content=DAF6h9AaRI0&utm_campaign=designshare&utm_medium=link&utm_source=editor#24

https://velog.io/@nnnyeong/Network-TCP-3-way-4-way-Handshake

728x90

'CS스터디' 카테고리의 다른 글

[SW] REST API  (0) 2024.01.29
[Web] 브라우저 저장소 - LocalStorage, SessionStorage, Cookie  (0) 2024.01.29
[네트워크] OSI 7계층  (0) 2024.01.28
[Web] 웹 동작 방식  (0) 2024.01.28
[네트워크] IP 주소  (1) 2024.01.25