← 기술 지식

기술 지식 / 컴퓨터 과학 / 네트워크 / 전송 계층

실시간 데이터그램의 최신성과 전달 책임

위치 snapshot과 중요 명령의 전달 정책을 나누고 UDP·검증된 전송 계층·MTU·재조립·혼잡·중복 효과의 책임을 설명합니다.

네트워크 · 원리·구현·운영
기술 지식 트리

실시간 네트워크의 첫 질문은 TCP와 UDP 중 하나를 고르는 것이 아니라 각 메시지가 최신값인지, 순서가 필요한 명령인지, 잃어도 되는지, 최종 권리를 만드는지 구분하는 것입니다. 그 분류가 정해져야 재전송·중복 제거·혼잡 제어·MTU·재조립의 책임을 올바른 계층에 둘 수 있습니다.

옛 위치와 결제 명령의 재전송 정책 차이

위치 snapshot 1·2·3 중 3을 이미 적용했다면 늦게 온 2는 버려도 될 수 있습니다. 그러나 아이템 획득 명령 2를 건너뛰면 권리를 잃을 수 있습니다. TCP·UDP를 고르기 전에 메시지별로 최신성·순서·손실·최종 효과의 계약을 정해야 합니다.

TCP는 순서 있는 스트림·재전송·흐름·혼잡 제어를 제공합니다. UDP는 데이터그램 경계를 제공하지만 손실·중복·재정렬·도착 확인을 자동 해결하지 않습니다. UDP 위에 모든 것을 순서대로 재전송하면 비슷한 선두 지연과 큰 구현 비용을 다시 만들 수 있습니다.

최신 상태·입력 명령·권리 결과의 메시지 부류

부류 대표 규칙 확인할 상태
최신 전체 snapshot 더 큰 버전만 적용, 옛 값 합치기·폐기 객체 세대·최신 적용 버전
입력 명령 수락 순서·중복 방지·기한 명령 ID·서버 ACK·기대 순번
권리·결제 결과 내구 기록과 결과 조회 원장·논리 요청 ID
같은 연결이어도 전달 예산을 나눕니다송신할 메시지. 최신 상태 큐: 같은 객체의 옛 snapshot 대체. 중요 명령 큐: ID · ACK · 재시도 예산. 전송·혼잡·보안 계층: 전체 바이트·연결 예산최신성 중심효과 보존 중심제한된 전송제한된 전송송신할 메시지최신 상태 큐같은 객체의 옛 snapshot 대체중요 명령 큐ID · ACK · 재시도 예산전송·혼잡·보안 계층전체 바이트·연결 예산
같은 연결이어도 전달 예산을 나눕니다 화살표는 메시지 분류와 처리 경로입니다. 최신 위치는 오래된 값을 대체할 수 있지만 중요 명령은 수락·중복·복구 상태를 남깁니다.
그림을 글로 읽기
  • 송신할 메시지
  • 최신 상태 큐: 같은 객체의 옛 snapshot 대체
  • 중요 명령 큐: ID · ACK · 재시도 예산
  • 전송·혼잡·보안 계층: 전체 바이트·연결 예산
  1. 송신할 메시지 → 최신 상태 큐: 최신성 중심
  2. 송신할 메시지 → 중요 명령 큐: 효과 보존 중심
  3. 최신 상태 큐 → 전송·혼잡·보안 계층: 제한된 전송
  4. 중요 명령 큐 → 전송·혼잡·보안 계층: 제한된 전송

증분 상태는 현재 적용 위치와 다음에 필요한 위치가 함께 있어야 합니다. 예를 들어 10까지 적용한 상태에서 delta 12가 먼저 오면 숫자가 더 크다는 이유로 적용하거나 11을 버리지 않고, 11을 재생하거나 snapshot으로 전환하는 정책을 따라야 합니다. 전체 snapshot 12는 기존 상태를 대체할 수 있지만, delta 11·12는 앞선 상태에 순서대로 적용해야 하므로 같은 “최신 번호” 규칙으로 처리하지 않습니다.

고정 폭 순번이 최댓값 뒤에 0으로 돌아오는 경우도 있습니다. 이때 단순 정수 대소 비교를 계속 쓰면 새 패킷을 오래된 것으로 판단할 수 있으므로, 유효 비교 창과 연결 세대를 함께 정해야 합니다.

선택 기준을 적용하면 위치는 최신 버전만 남기는 손실 허용 경로, 이동·공격 입력은 명령 ID와 서버 수락 순서를 기록하는 경로, 아이템 지급은 내구 원장과 결과 조회 경로가 됩니다. 한 채널에서 같은 신뢰성을 강제하기보다 부류별 예산을 분리하면 오래된 위치가 중요한 명령의 재전송을 막지 않습니다.

UDP의 혼잡 제어와 신뢰 경계

재전송 없이 계속 보내면 경로 혼잡을 악화시키고 다른 트래픽에도 피해를 줄 수 있습니다. 송신률·큐·손실·RTT를 기반으로 제어하고 오래된 데이터가 무한히 쌓이지 않게 합니다. 인증·세션 식별·재생 방지·주소 검증과 응답 증폭 제한도 필요합니다.

직접 신뢰성 프로토콜을 만들기 전에 요구를 충족하는 QUIC 또는 검증된 게임 전송 라이브러리를 비교합니다. QUIC의 신뢰 스트림과 비신뢰 데이터그램 확장도 같은 계약이 아니며 실제 지원 범위를 확인합니다. 프로토콜 이름보다 측정한 입력 지연·손실 복구·CPU·대역폭이 선택 근거입니다.

대형 패킷과 경로 MTU

MTU는 링크에서 전달할 수 있는 패킷 크기와 관련되고 TCP MSS는 TCP payload 크기와 관련되므로 같은 숫자가 아닙니다. 터널·VPN·오버레이 헤더는 실제 유효 크기를 줄입니다. 큰 패킷이 전달되지 않는데 필요한 경로 MTU 피드백까지 차단되면 반복 재전송·timeout이 생길 수 있습니다.

작은 ping 성공은 큰 TLS 응답·인증서·게임 데이터그램까지 통과한다는 증거가 아닙니다. IPv4의 조각화/DF와 IPv6의 Packet Too Big 등 경로·스택 규칙을 확인하고, ICMP 기반 또는 패킷화 계층 탐색의 실제 지원을 봅니다. 모든 ICMP를 막는 정책의 영향을 검토합니다.

앱 분할과 재조립 상태 제한

큰 메시지를 앱 조각으로 나눈다면 메시지 ID·조각 번호·총길이·최대 조각 수를 검증합니다. 일부 조각이 오지 않으면 언제 포기할지, 남은 조각의 메모리를 누가 회수할지 정해야 합니다. 외부가 무한히 불완전 메시지를 만들게 두면 데이터그램 한 개는 작아도 재조립 메모리가 고갈됩니다.

onFragment(fragment):
    validate_session_and_size_limits(fragment)
    entry = get_or_create_with_total_memory_budget(fragment.messageId)
    reject_conflicting_metadata(entry, fragment)
    store_fragment_once(entry, fragment)
    if all_fragments_present(entry):
        validate_complete_message()
        deliver_and_release(entry)
    expire_incomplete_entries_by_deadline()

이 모형은 설계 경계이며 완성된 전송 프로토콜 코드가 아닙니다. 악의적 입력·중복 조각·서로 다른 payload·인증 이전 자원 할당도 실제 구현에서 다뤄야 합니다.

손실·크기·처리 결과의 통합 시험

허가된 테스트 환경에서 손실·재정렬·지연·네트워크 이동·터널 경로·다양한 payload 크기를 나누어 비교합니다. 캡처는 offload 때문에 실제 선로 패킷과 다르게 보일 수 있으므로 관찰 지점을 명시합니다.

최신 snapshot은 역행하지 않고, 중요 명령은 ACK 유실 재전송에도 중복 효과가 없어야 합니다. 전송 성공과 서버의 도메인 확정은 다르므로 최종 원장·상태를 함께 대조해야 합니다.

후속·관련 개념

이 개념의 확장

함께 읽을 문서

전체 기술 지식
선택 연습 · 관련 질문 3개

질문은 이해를 확인하는 보조 자료입니다. 학습 경로와 문서의 범위는 질문 수와 독립적입니다.