TCP/UDP 통신 방식 (WireShark)

 📌TCP/UDP?


 📍​ TCP

  • TCP(Transmission Control Protocal) 전송 제어 프로토콜

  • 3 - way handshake를 통해 연결 설정, 4 - way handshake를 통해 연결 해제

  • Client 와 Server는 1:1 연결

  • TCP는 데이터를 전송할 때 오류를 검사하여 전송된 데이터가 목적지에 온전하게 도달하도록 보장 (신뢰성이 높음)

  • TCP는 전송이 실패한 경우 재전송 시도

  • TCP는 운영체제와 독립적으로 작동하므로 시스템과 디바이스 간 상호 운용성이 높음

  • 전송단위는 Segment

            Segment 
    • Header 의 구성요소

      • Source Port / Destination Port
      • Sequence Number 
      • Acknowledgment Number 
      • Flags (SYN, ACK, FIN)
      • Window Size
      • Checksum
      • Urgent Pointer

    • Data

      • 실제로 전송되는 애플리케이션 데이터

    • ✅ 정리하면 "Header(최소 20바이트)" + "DATA" 로 이루어져 있음 

 📍​ UDP

  • UDP(User Datagram Protocal) 유저 데이터그램 프로토콜

  • UDP는 패킷을 더 적은 오버헤드로 전송하여 End to End 지연을 줄임

  • UDP는 일부 패킷이 누락되더라도 데이터를 전송 

  • 브로드캐스트 및 멀티캐스트 기능을 통해 하나의 UDP 전송을 여러 수신자에게 한 번에 전송

  • 전송 단위는 Daragram
            Datagram 
    • Header의 구성요소

      • Source Port / Destination Port
      • Length
      • Checksum ( IPv6 에선 필수로 Checksum이 들어가야 함)

    • Data

      • 실제로 전송되는 애플리케이션 데이터

    • 정리하면 "Header(최소 8바이트)" + "DATA" 로 이루어져 있음 

 📍​ TCP/UDP Layer



📌TCP vs UDP



    📍​ 속도

  • TCP의 전송 단위는 Segment, UDP의 전송단위는 Datagram

  • Datagram보다 Segment는 더 많은 제어 정보를 포함하고 상대적으로 더 크고 복잡함

  • TCP의 전송 방식은 패킷이 순차적으로 전달하는 반면 UDP는 패킷이 스트레이트로 전달

  • UDP는 Datagram 방식이므로 독립적인 패킷을 사용하므로 TCP처럼 연결 설정이 필요가 없다
        UDP 승 🎯​


    📍​ 신뢰도

  • TCP은 연결형 서비스를 지향 UDP는 비연결형 서비스

  • TCP는 전송 순서를 보장하고 UDP는 그렇지 않음

  • UDP의 오류가 TCP보다 많이 발생할 확률이 높

  • handshake 방식을 통해 신뢰도 향상

  • TCP의 헤더가 복잡한 대신 서버와 클라이언트 간의 신뢰를 높임
        TCP 승 🎯​


   ✅​ 정리하면

  • TCP는 연결 지향적이므로 데이터를 신뢰성 있게 전송하는데 포커싱을 두고 있음

    • 웹 페이지 로딩(HTTP/HTTPS)

    • 파일 전송 (FTP)

    • 데이터베이스 연결

  • UDP는 비연결 지향적 이므로 데이터 전송의 신뢰성을 보장하지 않음 그대신 속도단순성을 중시하는 경우에 사용됨 

    • 동영상 스트리밍

    • 온라인 게임

    • DNS ( 도메인 이름을 IP 주소로 변환할 때 사용)

    • TFTP ( 작은 파일을 간단하고 빠르게 전송할 때) 
  

📌3 - way handshake, 4 - way handshake 

    
    

 📍​ TCP

  • WireShark로 실제 데이터 플로우를 비교한 것

  • 3 - way handshake로 통신을 시작하고 4 - way handshake로 통신을 끝내는 것을 알 수 있다.

  • 🟩 초록색 = 3 - way handshake 연결 과정

  • 🟥​ 빨간색 🟦​ 파란색 = Transmitting Data 데이터 전송 과정

  • ⬛​ 검은색 =  4 - way handshake 연결 과정

  • Client Data가 요청 헤더에 담긴 데이터를 먼저 통신하고 이후에 서버가 응답을 하는 것을 알 수 있다.

    • 실험을 진행하면서 생긴 의문점 ❓

      • 대부분의 정보글은 클라이언트가 먼저 FIN을 보낸다고는 하는데 실제 결과는 많이 달랐다.

      • 서버가 먼저 [FIN, ACK] 보내고 이 후에 클라이언트가 [FIN, ACK]를 보낸다.

      • Gpt - 4o 호출 🤖​

        •  TCP는 양방향 통신이므로 서버가 먼저 FIN을 보낼 수 있다고 함.

        • 서버가 먼저 보내는 경우는 클라이언트의 요청을 모두 처리하고 더 이상 받지 않겠다고 [FIN, ACK]를 전송 

        • 이 후에 클라이언트는 확인 ACK를 보냄 이어서 클라이언트도 [FIN, ACK] 전송
  

 📍​ UDP의 QUIC 프로토콜


  • Youtube 영상 스트리밍을 WireShark로 관찰

  • initial(1-RTT)로 시작해서 이미 접속했던 IP라면 Suceesful 0-RTT로 요청 !

  • 이후에 handshake 하고 지속적으로 서버에서 protected Payload를 보내줌

 📍QUIC 

    • Google에서 개발한 QUIC(Quick UDP Internet Connections)

    • 기존의 TCP와 TLS를 개선하려는 목적에서 만들어짐

    • 내장된 TLS 암호화 보유

    • UDP기반의 QUIC 프로토콜은 TCP기반의 HTTPS보다 월등히 빠름

    • 특히 모바일 네트워크 환경에서 큰 성과를 거둠 (특히 Youtube 영상 버퍼 스트리밍)

    • HTTP/3 통신 기반임 (내장된 TLS 인증서를 가지고 있으므로 보안되어 있음 == HTTPS)

  ✅​ 정리하면

  • HTTP통신 위에 TCP 기반으로 구현된 SSL/TLS 인증서 얹음  => HTTPS

  • HTTP/3 통신 위에 UDP기반으로 구현된 QUIC!









함께보면 좋은글--------------------------------------------------

참고--------------------------------------------------------------

TCP UDP 차이: 두 프로토콜 비교 | NordVPN

🌐 아직도 모호한 TCP / UDP 개념 ❓ 쉽게 이해하자

[TCP/UDP] TCP와 UDP의 특징과 차이 - MangKyu's Diary

OSI 7계층과 TCP/IP 4계층을 비교 설명해 주세요.

TCP vs. UDP: Optimising Video Streaming Performance - Gumlet

TCP vs. UDP : r/ProgrammerHumor

QUIC 프로토콜 | 구글 또 너야?. QUIC 프로토콜은 2012년 구글이 처음 발표한 범용 전송 계층… | by scalalang2 | 취미로 논문 읽는 그룹 | Medium

댓글

이 블로그의 인기 게시물

[보안] CA인증서, 서버인증서, 클라이언트 인증서와 Openssl

HTTP/HTTPS 프로토콜의 개념과 작동 원리 (WireShark)