Computer Network

[컴퓨터 네트워크] UDP와 검사합(checksum)

JunsuKim 2022. 10. 5.
728x90

UDP 서비스

포트번호 기반의 다중화 서비스

  • 서버: Well-Known Port
    • Well-Known = 잘알려져 있어야한다. -> 누구한테? 클라이언트한테.
  • 클라이언트: Ephemeral Port
    • Ephemeral Port = 임시 포트

비연결형(connectionless) 전송 서비스

  • 통신 소켓 간의 연결 설정이 없다 -> 연결 설정 지연시간을 피할 수 있다.(HandShaking)

  • 소켓 간 연결이 없으므로 데이터를 전송할 때 목적지 정보를 지정해줘야 한다.

데이터그램 실시간 전송 서비스

  • 응용 프로세스로부터 데이터가 송신 소켓에 전달되면, 송신 UDP는 해당 데이터를 포함하는 UDP 데이터그램을 생성한다.
  • 각 데이터그램은 IP를 통해 독립적으로 목적지 UDP 소켓에 전송한다.

응용

  • 인터넷 전화 등 실시간 응용에 적합
  • DNS(Domain Name System) 등 작은 데이터, 빠른 응답 지연시간이 요구되는 응용에 적합하다.

1:N, N:1 데이터그램 통신 서비스

  • 목적지 IP 주소에 멀티캐스트 주소를 사용하여 다수의 목적지 소캣으로 데이터그램 전송 가능
  • 여러 개의 소켓으로부터 데이터그램 수신 가능
  • 응용 프로세스는 송신할 때마다 UDP에게 수신 소켓 주소 지정
  • UDP가 응용 프로세스에게 데이터를 전달할 때마다 송신 소켓 주소 표시

응용

  • 인터넷 TV 등 멀티캐스트 응용 효과적 지원

간단한 데이터그램 포맷

  • 처리 시간 단축

  • 데이터그램의 헤더에 출발지 포트번호, 목적지 포트번호, 전체 길이, 책섬(checksum) 정보를 저장한다.
  • 책섬은 무결성 확인을 하며, Hash 함수를 통해 데이터 그램이 전송되는 과정에서 훼손되었는지를 확인한다.
  • 한 어플리케이션 프로세스로 데이터그램이 들어가 출발지 IP 주소 + 출발지 Port 번호로 출발지 소켓 번호를 얻고, 목적지 IP 주소 + 목적지 Port 번호로 목적지 소켓 번호를 얻는다.

검사합(checksum)

송신자

  • 송신하는 메시지를 정해진 길이의 데이터 단위로 나눈다.
  • 모든 데이터 단위를 1의 보수(1's complement) 연산으로 더하여 합을 구한다.
  • 합의 1의 보수를 검사합(checksum)으로 생성, 검사합을 추가하여 메시지 전송

수신자

  • 수신된 메시지(데이터그램)를 정해진 길이의 데이터 단위로 나눈다.(검사합 포함)
  • 모든 데이터 단위를 1의 보수(1's complement) 연산으로 더하여 합을 구한다.
  • 합이 0이면 성공적인 수신, 아니면 오류 발생

1의 보수 연산

  • 이진수 1의 보수: 각 비트 값 0과 1을 서로 바꾼 값(원래 비트 값과 더하여 1이 되는 값)
  • +0: 모든 비트가 0
  • -0: 모든 비트가 1

m비트 이진수의 1의 보수 덧셈

  • m비트 결과 값 생성
  • 최종 비트 올림(carry)이 생길 경우 캐리 값을 m비트 결과에 더하여 최종 m비트 결과값 생성

1의 보수 덧셈(8비트 이진수)

8비트 검사합 계산

오류 확인

  • 결과가 -0이므로 오류가 나지 않은 것을 확인할 수 있다.

검사합 장점

  • 높은 오류 검출 능력
  • 단순함
  • 소프트웨어 구현에 적합

단점

  • 각 데이터 단위에서 발생하는 오류의 합이 0이 되는 오류 검출 불가
  • 책섬을 변경하지 않는 오류 검출 불가

오류 검출 불가

  • 원래 데이터: 00111010    10011000    00111010
  • 수신 데이터: 00111000    10011010    00111010    11110010(검사합(책섬))

  • 데이터의 수신이 잘못되었지만 결과값이 -0이므로 오류가 발생하지 않은 것으로 인식한다. 즉, 오류 인식이 불가능하다.

 

728x90

댓글