4. TCP와 UDP란 무엇인가

SoYun Park·2023년 4월 17일
0
post-thumbnail

1. 포트 번호가 뭐지?

1-1. 애플리케이션을 선별하는 포트 번호

  • 포트 번호
    • PC나 서버상에서 동작하는 애플리케이션 그 자체를 식별하기 위한 정보이다.
    • 애플리케이션이 주고받는 일련의 데이터는 1)목적지/송수신 주소와 2)포트번호로 식별된다고 할 수 있다.
    • IP주소로 지정한 컴퓨터에 전송된 데이터는 포트 번호로 지정된 애플리케이션에 다시 분배된다.
    • 포트 번호를 기반으로 애플리케이션 데이터를 분배하는 역할을 하는 프로토콜이 TCP와 UDP이다.

1-2. 포트 번호의 범위

  • 잘 알려진 포트Well-known port

    • 주로 서버 애플리케이션을 식별하기 위해 사용된다.

    • 주로 사용되는 포트 번호

      프로토콜TCP 포트 번호UDP 포트 번호
      HTTP80-
      HTTPS443-
      SMTP25-
      POP3110-
      IMAP143-
      DNS5353
      DHCP-67/68
      NTP-123
      FTP20/21-
      TFTP-69
  • 등록된 포트Registered port

    • 자주 이용되는 애플리케이션 용 포트로 등록된 포트 번호이다.
    • 등록된 포트의 대표적인 예로써 웹 프록시 서버에서 일반적으로 이용하는 8080이 있다.
  • 동적/개인적 포트Dynamic/Private port

    • 주로 클라이언트 애플리케이션을 식별하기 위한 것이다.
    • 서버 애플리케이션이 클라이언트 애플리케이션으로 응답을 보낼 때 사용된다.

1-3. 웹사이트를 탭 여러 개로 띄울 수 있는 이유

PC 1 대로 웹 브라우저 윈도우를 여러 개 띄웠을 경우
1. 각각의 웹 브라우저 윈도우에 개별적으로 동적/개인적 포트가 할당된다.
2. 웹 서버 80번 포트로 접속하여 할당받은 포트로 응답을 받는다.


1-4. 포트 번호는 고정되어 있지 않다

  • 1-3에서 그렇듯 클라이언트 애플리케이션에서 사용하는 포트 번호는 OS로부터 자동으로 랜덤하게 할당되며, 통신이 종료되면 해제된다.
  • 즉 고정적이지 않고 통신을 할 때만 일시적으로 할당하여 돌려쓴다.



2. TCP가 뭐지?

2-1. TCP의 개요

  • TCP
    • 적절한 애플리케이션 데이터를 전달이나 분할하기 위해서 이용되는 프로토콜컴퓨터 통신의 절차 규약이 TCP이다.
    • 이를 수행하기 위해 전송될 데이터에는 TCP 헤더데이터 맨 앞에 추가된 정보가 추가된다.


    • TCP 헤더를 추가한 애플리케이션 데이터를 TCP 세그먼트라고 한다.

2-2. TCP 연결의 성립과 종료

  • TCP 연결 성립
    • 3웨이 핸드쉐이크Three-Way handshake
      • 데이터 전송을 수행하는 애플리케이션끼리 인사를 3번 함으로써 연결을 성립시키는 기법을 말한다.
        1. 클라이언트가 서버에게 연결해도 될까요? 요청하는 SYN 플래그를 보낸다.
        2. 서버는 연결하겠다고 응답하는 ACK 플래그를 돌려보낸다.
        3. 클라이언트가 알겠다고 다시 응답하는 ACK 플래그를 돌려보낸다.


  • TCP 연결 종료
    • 연결할 때와 비슷하게 FIN/ACK 플래그를 사용하여 4단계를 걸친다.
      1. 클라이언트가 서버에게 종료해도 될까요? 요청하는 FIN 플래그를 보낸다.
      2. 서버는 종료해도 된다고 응답하는 ACK 플래그를 돌려보낸다.
      3. 서버는 종료하겠다고 응답하는 FIN 플래그를 보낸다.
      4. 클라이언트는 알겠다고 다시 응답하는 ACK 플래그를 돌려보낸다.



2-3. 데이터 전송 시의 동작

  • 윈도우 제어
    • 각 TCP 세그먼트마다 확인 응답을 기다리면 데이터 전송 효율이 매우 낮아진다.
    • 윈도우 제어는 확인 응답을 기다리지 않고 TCP 세그먼트 여러 개를 한꺼번에 송신하는 시스템이다.
    • TCP 연결을 성립시킬 때 서로의 윈도우 사이즈를 통지한다.
    • 클라이언트는 서버가 한꺼번에 받을 수 있는 데이터 사이즈를 알고 있으므로 확인 응답을 기다리지 않고 그 만큼의 데이터를 한꺼번에 송신할 수 있다.
    • 윈도우 제어에서 TCP 세그먼트 여러 개를 한꺼번에 보내다 보면 수신하는 쪽에서 도착하는 순서가 바뀔 가능성이 있다.
    • 그런 경우에는 TCP 헤더의 시퀀스 번호를 이용해 순서를 다시 정렬하는 순서 제어라는 시스템을 사용한다.
  • 재전송 제어
    • TCP 세그먼트가 네트워크 상에서 전송될 때, 데이터가 유실된 경우 재전송하는 시스템이다.
    • TCP 세그먼트를 송신했을 때 RTO 시간 이내에 확인 응답을 받지 못한 경우 재전송 제어에 의해 다시 전송된다.
  • 혼잡 제어
    • 네트워크가 너무 혼잡하여 재전송 제어에 의해 다시 전송해도 TCP 세그먼트가 파기되는 경우가 있다.
    • 혼잡 제어는 네트워크의 혼잡을 회피하는 시스템이다.
    • 대표적으로 슬로우 스타트 알고리즘이라는 방식이 있다.
      1. 클라이언트는 혼잡 윈도우클라이언트가 한 번에 보내는 데이터의 양를 1로 설정한다. 즉 클라이언트의 윈도우 사이즈 만큼이 아니라 먼저 1 세그먼트만 보낸다.
      2. 서버에게 확인 응답이 돌아오면 혼잡 윈도우를 1씩 증가시킨다.
      3. 이러한 방식으로 클라이언트의 데이터 양을 서서히 늘려가면서 전송한다.


3. UDP가 뭐지?

3-1. UDP의 개요

  • UDP
    • TCP처럼 포트 번호에 따라 적절한 애플리케이션에 데이터를 전달하기 위한 프로토콜이다.
    • TCP와 다르게 연결을 성립하거나 데이터의 순서, 무결성을 보장하지 않는다.
    • 오직 애플리케이션에 데이터를 전달하는 것만이 목적이다.
    • TCP에서는 TCP 세그먼트라고 부르던 것을 UDP에서는 UDP 데이터그램이라고 부른다.


3-2. UDP의 용도

  • UDP는 다음과 같이 3가지 용도로 사용된다.
    • 실시간 데이터를 전송할 때
    • 여러 상대에게 같은 내용의 데이터를 전송할 때
    • 데아터 전송 시 신뢰성이 필요하지 않은 소량의 데이터를 전송할 때

3-3. TCP와 UDP의 비교

  • TCP와 UDP 중 어느 것을 사용할지는 각각의 특징, 주요 기능과 용도를 파악하여 적절히 선택해야 힌다.

    TCPUDP
    통신방식연결형 프로토콜비연결형 프로토콜
    신뢰성높다닞디
    오버헤드크다작다
    주요 기능애플리케이션 간의 데이터 전송애플리케이션 간의 데이터 전송
    연결의 성립, 유지, 종료-
    재전송 제어-
    혼잡 제어-
    윈도우 제어-
    용도시간 제약 없이 신뢰성이 필요한 데이터를 전송할 때실시간 데이터를 전송할 때
    -브로드 캐스트, 멀티 캐스트
    -소량의 데이터를 빈번히 전송할 때

0개의 댓글