[네트워크] 통신의 신뢰성을 뒷받침하는 프로토콜

diveintoo·2024년 3월 14일
0

📑 본 글은 <그림으로 배우는 네트워크 프로토콜>을 읽고 정리한 글입니다.

1. TCP의 기본

전송 계층

  • TCP & UDP
  • 단말기의 어플리케이션에 전달되도록 식별한다.
    • 데이터 링크, 네트워크 계층에서는 목적지 단말기까지만 보낸다.

포트 번호

  • 단말기의 어플리케이션을 식별하는 값
  • 응용 계층의 어플리케이션과 프로토콜을 식별하기 위한 2바이트 값
  • 포트 번호의 종류
    • Well-known Port Numbers
      • 0~1023번
      • 자주 사용되는 서버에 할당됨
      • 포트 번호와 프로토콜이 명확하게 할당되어 있다.
    • Registered Port Numbers
      • 1024~49151번
      • 각 개발사에서 개발한 서버 애플리케이션에서 사용
    • Dynamic and Private Port Numbers
      • 49151~65535번
      • 클라이언트에서 동적으로 할당해서 사용한다.

데이터 링크 계층 → MAC 주소

네트워크 계층 → IP 주소

전송 계층 → 포트 번호

TCP

  • 연결형 프로토콜 : 커넥션을 맺는다.
    • 3-way handshake
  • ACK을 통한 수신 확인, 재전송 제어 등에 의한 높은 신뢰성
  • 흐름 제어 및 혼잡 제어를 통한 통신 효율 최적화

2. TCP 헤더

TCP 헤더

PDU ⇒ 세그먼트

  • 출발지 / 목적지 포트 번호
    • 16비트 필드
    • 출발지 포트 번호 = 무작위 결정 값
  • 시퀀스 번호
    • TCP segment 데이터 전체에서의 위치를 나타내는 32비트 필트
    • 이전 패킷의 시퀀스 번호에 보낸 데이터의 크기를 더한 값
  • 확인 응답 번호
    • 다음에 수신할 데이터의 시퀀스 번호를 나타내는 32비트 필드
    • 데이터가 누락되지 않았는지 확인 가능 / 순서 정렬 가능
  • 데이터 오프셋
    • 헤더 자체의 크기, 4비트 필드
  • 예약
    • TCP 확장을 고려한 3비트 필드
  • 제어 플래그
    • 연결 상태를 제어하기 위한 9비트 필드
    • SYN Flag : 커넥션 설정
    • ACK Flag : 확인 응답
    • FIN Flag : 커넥션 종료
  • 윈도우 크기
    • 수신 가능한 데이터의 크기를 알리기 위한 16비트 필드
  • 체크섬
    • TCP segment의 일관성을 확인하기 위한 16비트 필드
    • IPv4의 체크섬과 유사
  • 긴급 포인터
    • 제어 플래그의 URG == 1 경우 유효함
    • 긴급 데이터를 나타내는 시퀀스 번호가 설정된다.
  • 옵션
    • 확장 기능 필드
  • 패딩
    • TCP 헤더 크기 32비트로 조정

3. TCP 커넥션의 흐름

TCP 커넥션 설정: 3-way handshake

  • 기본 상태 : 클라이언트 CLOSED / 서버 LISTEN
  1. SYN : 클라이언트 → 서버
    1. SYN 플래그 = 1, 시퀀스 번호 = 임의 초깃값
  2. SYN + ACK : 서버 → 클라이언트
    1. SYN 플래그 = ACK 플래그 = 1, 확인 응답 번호 = 수신한 시퀀스 번호 + 1
  3. ACK : 클라이언트 → 서버
    1. ACK 플래그 = 1, 시퀀스 번호 = 내가 보낸 시퀀스 + 1, 확인 응답 번호 = 수신한 시퀀스 번호 + 1
  • 각자 SYN에 대한 ACK을 받으면 커넥션 연결 성공!!

데이터 송신에 관한 기능

  • 확인 응답 및 재전송 제어
    • 확인 응답 : 데이터를 수신했음 by 확인 응답 번호
    • 재전송 제어 : 확인 응답이 돌아오지 않을 때 데이터를 재전송 하는 것
      • 중복 ACK(고속 재전송 제어)
        • 확인 응답 번호가 동일한 ACK 패킷을 여러 번 받을 때
      • 재전송 타임아웃
        • ACK이 안 돌아올 때, 판단 시간: 재전송 타이머
  • 윈도우 제어
    • 윈도우 크기 : 확인 응답을 기다리지 않고 한 번에 보낼 수 있는 데이터 양
    • 윈도우 크기로 송수신할 데이터 양을 제어하는 방법
  • 흐름 제어
    • 수신하는 쪽 윈도우 크기에 맞춰 데이터 전송량을 조절하는 것

4. UDP의 기초

UDP(User Datagram Protocol)의 특징

  • 비연결형 프로토콜
  • 통신에 대한 신뢰성이 낮다.
  • 전송 속도가 빠르다. → 실시간성
  • 일대다 통신에 적합하다.

UDP 헤더

UDP PDU ⇒ Datagram

  • 출발지 / 목적지 포트 번호
  • UDP 데이터그램 길이
  • 체크섬

TCP → 신뢰성이 요구되는 통신

UDP → 실시간성이 요구되거나 데이터 양이 적은 간단한 통신

0개의 댓글