본문 바로가기
카테고리 없음

[네트워크] UDP 패킷 구조·Checksum 연산 및 TCP 신뢰적 전송 원리

by Lsung 2026. 9. 5.

1. UDP (User Datagram Protocol)의 이해

① UDP의 주요 특징

  • 비연결형 서비스 (Connectionless):
    • Handshake 등 연결 설정을 위한 예비 동작 과정이 없으므로, 설정 지연이 전혀 발생하지 않습니다.
    • 클라이언트와 서버 간 커넥션 정보(Sequence Number, Window Size 등)를 유지하지 않습니다.
  • 최선형 서비스 (Best-Effort Service):
    • 데이터를 전달하는 최소한의 역할만 수행하며, 복잡한 제어 기능을 제공하지 않습니다.
  • 혼잡 제어 및 흐름 제어 미실시:
    • 혼잡 제어 (Congestion Control): 송신자(Sender) 측에서 네트워크 혼잡을 줄이기 위해 데이터 전송량을 줄이는 제어입니다. UDP는 이를 수행하지 않습니다.
    • 흐름 제어 (Flow Control): 수신자(Receiver) 측의 처리 능력에 맞춰 수신 상한선을 정하는 제어입니다.
  • 사용 이유:
    • 제어 오버헤드가 없기 때문에 전송 속도가 가장 빠릅니다.

② UDP 패킷(세그먼트) 구조

UDP 헤더는 8바이트의 매우 작은 크기로 구성됩니다.

  1. Source Port Number (출발지 포트 번호)
  2. Destination Port Number (목적지 포트 번호)
  3. Length (길이)
  4. Checksum (검사합)

2. UDP Checksum (검사합) 오류 검출 연산

① 목적

전송된 세그먼트 데이터의 비트 손상 및 에러(Error) 발생 여부를 검출합니다. (에러가 검출되면 해당 패킷을 단순히 폐기하며, 재전송 등 추가 조치는 하지 않습니다)

② 송신자 (Sender) 연산 과정

  1. 16비트 단주 분할: 세그먼트 내용을 16비트(2바이트) 정수로 나눕니다. (총 바이트 수가 홀수일 경우 임의의 바이트(0)를 추가하여 16비트를 맞춤).
  2. 합산 연산: 모든 16비트 단어를 더합니다.
  3. 오버플로우(Overflow) 처리: 16비트를 초과하는 오버플로우 비트가 발생할 경우, 비트를 제거(또는 Wraparound 처리)합니다.
  4. 1의 보수(1's Complement) 취함: 합산된 결과의 모든 비트를 반전(0 $\rightarrow$ 1, 1 $\rightarrow$ 0)시킵니다.
  5. Checksum 필드 삽입: 반전된 최종 값을 UDP 세그먼트의 Checksum 필드에 저장하여 전송합니다.

③ 수신자 (Receiver) 검증 과정

  1. Checksum 필드를 포함한 모든 16비트 단어를 합산합니다.
  2. 판단:
    • 합산 결과의 모든 비트가 1인 경우 $\rightarrow$ 오류 없음 (PASS)
    • 결과 중 단 하나라도 0이 존재하는 경우 $\rightarrow$ 오류 발생 (FAIL / 패킷 폐기)

④ 실습 결과 (4비트 예시 축약 수행)

입력 비트: [1101], [1001], [1010]

  • 송신자 (Sender) 측:
    1. 1101 + 1001 = 10110 $\rightarrow$ 맨 앞 오버플로우 1 버림 (또는 처리에 따라 0110)
    2. 0110 + 1010 = 10000 $\rightarrow$ 오버플로우 버림 $\rightarrow$ 0000
    3. 0000의 1의 보수(비트 반전) = 1111 (Checksum 생성)
  • 수신자 (Receiver) 측:
    • 모든 값 + Checksum 합산: 0000 + 1111 = 1111 (모두 1이므로 오류 없음 검증 완료)

3. TCP의 신뢰적 데이터 전송 (Reliable Data Transfer)

① 신뢰적 전송의 필요성

  • 전송 계층(Transport Layer)뿐만 아니라 응용 계층(Application Layer), 링크 계층(Link Layer) 모두에서 중요한 핵심 개념입니다.
  • 하위 네트워크 계층(IP 계층)은 기본적으로 비신뢰적 채널(Unreliable Channel)이므로, 상위 계층인 TCP가 비신뢰 구간 위에서 자체적인 메커니즘을 통해 신뢰성을 제공해야 합니다.

② FSM (Finite State Machine / 유한 상태 머신) 기반 이벤트와 액션

TCP의 동작은 이벤트(Event)와 액션(Action)의 구분을 통해 체계적으로 정의됩니다.

1) 송신자 측 (Sender Side TCP)

  • Event 1: 응용 프로그램(App)으로부터 데이터 전송 요청이 발생함 $\rightarrow$ rdt_send()
  • Action 1: 전달받은 데이터를 가지고 TCP 세그먼트(패킷)를 생성함.
  • Action 2: 생성된 패킷을 하위 IP 계층으로 전송함 $\rightarrow$ udt_send()

2) 수신자 측 (Receiver Side TCP)

  • Event 1: 하위 IP 계층으로부터 패킷을 수신함 $\rightarrow$ rdt_rcv()
  • Action 1: 수신된 패킷에서 실제 데이터 영역을 추출(Extract)함.
  • Action 2: 추출한 데이터를 상위 응용 프로그램으로 전달함 $\rightarrow$ deliver_data()

4. 실무 및 학습 관점 핵심 요약

  1. 관점(Perspective)에 따른 역할 구분:
    • 응용 프로그램(App) 관점에서는 TCP가 신뢰할 수 있는 통신 수단이지만, TCP 관점에서는 하위 IP 계층이 언제든 패킷을 유실시킬 수 있는 비신뢰적 채널입니다.
    • 동일한 수신/발신 동작이라도 주체(App vs TCP vs IP)에 따라 이벤트와 액션의 정의가 달라집니다.
  2. 성과관리 및 보고서 작성 방법:
    • 업무 보고서나 실습 제출 시 질문이나 추가 설명이 필요 없도록 [원값 $\rightarrow$ 최종 결과 $\rightarrow$ 세부 풀이 과정] 순서로 명확히 작성해야 합니다.

5. 소프트웨어 공학/경영 관점 및 수업 안내

① IT/소프트웨어 공학 관점에서의 비용 절감과 생산성

  • 경영 측면의 비용 제어:
    • 기업 입장에서 인건비(프로그래머 연봉 등)는 가장 큰 생산 비용 요소 중 하나입니다.
    • 생산 비용을 무작정 늘리는 것은 경영상 불리하며, 연구개발비(R&D) 투자를 늘려 생산 단가를 낮추는 것이 기업 가치와 주가를 올리는 핵심입니다.
  • AI 도입과 인력 시장 변화:
    • 과거에는 IT 산업의 인적 자원 비중이 80%에 달했으나, AI 및 자동화 기술의 발전으로 유지 관리에 필요한 최소 인력 중심으로 재편되는 추세입니다.
    • 예외 상황을 처리하고 가치를 만드는 응용 프로그램 및 데이터베이스 모델링/설계 능력이 핵심 역량으로 평가받습니다.
  • 자기계발 및 성장:
    • 특정 기술의 수명이 다하거나 로봇/자동화로 대체되더라도, 지속적인 배움과 대학원 진학 등을 통해 스스로를 계속 발전시켜 나가는 태도가 중요합니다.

② 향후 수업 일정

  • 프로그래밍 언어 순환문(반복문): 12시부터 진행 예정

이제 제공해주신 노트의 시작부터 제일 마지막 문장까지 모든 내용이 완전하게 정리되었습니다! 혹시 더 정리하거나 강조해야 할 부분이 있다면 편하게 말씀해 주세요.