Post

TCP & UDP 개념

전송계층에서 어플리케이션 간 데이터 송수신을 위해 사용하는 프로토콜

1.1 TCP의 특징

TCP - 연속성보다 신뢰성있는 전송이 중요할 때 사용합니다

  • 신뢰성 있는 데이터 전송을 지원합니다
    • 데이터가 목적지에 순서대로, 에러 없이 도달하도록 합니다
    • 송신자와 수신자 사이에 연결을 설정하고 데이터가 손실되거나 손상될 경우 재전송을 수행합니다
  • 연결 지향 방식으로 패킷 교환 방식을 지원합니다
    • 통신을 시작하기 전에 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다
  • 흐름 제어 및 혼잡 제어 기능을 통해 높은 신뢰성을 보장합니다
    • TCP는 네트워크의 혼잡 상황이나 수신 측의 처리 능력을 고려하여 데이터 전송 속도를 조절합니다
  • 단점
    • UDP보다 속도가 느립니다
    • 서버와 클라이언트는 1대1로 연결됩니다

1.2 UDP의 특징

UDP - 신뢰성보다 연속성이 중요한 서비스에 사용합니다

  • 비연결 지향적
    • 송신자와 수신자 간에 사전 연결을 하지 않습니다
    • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않습니다
    • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출합니다
    • 신뢰성이 낮습니다
  • 경량 프로토콜
    • UDP는 TCP보다 헤더가 간단하며 오버헤드가 적습니다
    • TCP 보다 속도가 빠릅니다
  • 실시가 통신에 적합
  • Connect 개념이 존재 하지 않아 서버 소켓과 클라이언트 소켓의 구분이 없습니다

1.3 알아보기

  • 패킷(Packet)이란?
    • 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조객들로 나누어 전송하는 데 이 조각을 패킷이라고 합니다
  • 3-way-handshake란?
    • 두 호스트 간의 연결을 시작할 때 사용되는 절차
    • SYN -> SYN-ACK -> ACK 이렇게 총 3개의 단계로 이루어집니다
      1. SYN(Synchronize) 단계

        클라이언트가 서버에게 연결하고자 하는 의사를 알림

        • 클라이언트는 서버에게 SYN 플래그가 설정된 연결 요청 메시지를 보냅니다
        • 클라이언트는 자신의 초기 시퀀스 번호(ISN)를 임의로 설정하여 전송합니다
      2. SYN-ACK(Synchronize-Acknowlegement) 단계

        서버가 클라이언트의 SYN 요청을 확인(ACK)하고, 자신의 SYN 요청을 함께 보내 양방향 연결의 준비가 되었음을 알림

        • 서버는 크라이언트의 연결 요청을 받고, 연결을 수락할 준비가 되었다는 의미로 SYN-ACK 메시지를 클라리언트에게 보냅니다
        • 이 메시지에는 서버의 초기 시퀀스 번호와 클라이언트 시퀀스 번호에 1을 더한 값(ACK 번호)가 포함됩니다
      3. ACK(Acknowlegement) 단계

        연결 수립 -> 클라이언트가 서버의 SYN 요청을 확인하고, 연결이 성립

        • 클라이언트는 서버로부터 SYN-ACK 메시지를 받은 후, 서버의 SYN 요청을 확인하는 ACK 메시지를 보냅니다. 이때 ACK 번호는 서버의 시퀀스 번호에 1을 더한 값입니다
  • 흐름제어(Flow Control)와 혼잡제어(Congestion Control)
    • 흐름제어
      • 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지합니다
    • 혼잡제어
      • 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지합니다
      • 정보의 소통량이 과다하다면 패킷 전송량을 줄여 혼잡 붕괴 현상이 일어나는 것을 막습니다



궁금하신 점이나 추가해야할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKamJi

This post is licensed under CC BY 4.0 by the author.