외부 데이터 표현

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

외부 데이터 표현(XDR)은 1980년대 썬 마이크로시스템즈에서 개발되어 1987년에 공개된 데이터 형식이다. XDR은 네트워크 파일 시스템, ZFS, ONC RPC 등 다양한 시스템에서 사용되며, 정수, 부동 소수점, 문자열 등을 일관된 형식으로 정규화하여 표현한다. rpcgen 스텁 컴파일러를 통해 정렬화/비정렬화 프로그램을 자동 생성하며, 불리언, 정수, 부동 소수점, 문자열, 배열 등 다양한 데이터 타입을 지원한다.

외부 데이터 표현
📚 더 읽어볼만한 페이지
  • 데이터 직렬화 포맷 - XML
    XML은 태그 중첩 방식 구문을 사용하는 범용 언어로서, 인터넷을 통한 구조화된 문서 및 데이터 공유를 용이하게 하고, 웰 폼 및 유효 XML 문서 개념을 통해 구문 정확성을 검사하며, 데이터 교환 등 다양한 분야에서 널리 사용된다.
  • 데이터 직렬화 포맷 - S-표현식
    S-표현식은 Lisp 구문에서 소스 코드와 데이터를 표현하는 기본 구조로, 원자와 `(x . y)` 형태의 표현식으로 정의되며, 이진 트리 표현, 다양한 데이터 형식 지원, 그리고 여러 분야에서 활용된다.
  • 네트워크 표준 - RS-232
    RS-232는 데이터 단말 장치와 데이터 회선 종단 장치 간 직렬 통신을 위한 표준 인터페이스로, 터미널-모뎀 연결을 위해 개발되었으나 현재는 일부 산업 장비 및 시스템 콘솔 포트 등에 사용되며 전기적 신호 특성, 인터페이스 기계적 특성, 회로 기능 등을 정의하고 25핀 또는 9핀 D-서브미니어처 커넥터를 사용한다.
  • 네트워크 표준 - WirelessHD
    WirelessHD는 60 GHz 대역을 사용하는 무선 통신 규격으로, 고화질 비디오, 오디오, 데이터를 압축 없이 전송하며, 빔 형성을 통해 가시선 제약을 완화하고 최대 10미터 거리에서 작동하도록 설계되었다.
  • 썬 마이크로시스템즈 소프트웨어 - 자바 데스크톱 시스템
  • 썬 마이크로시스템즈 소프트웨어 - 핫자바
    핫자바는 자바 프로그래밍 언어 기반으로 개발된 웹 브라우저이며, 1995년 TED 컨퍼런스에서 처음 시연되고 SunWorld 컨퍼런스에서 공식 발표되었다.

2. 역사

XDR은 1980년대 중반 썬 마이크로시스템즈에서 개발되었으며, 1987년에 처음으로 널리 공개되었다. 1995년에 IETF 인터넷 표준이 되었다.

1987년에 썬 마이크로시스템즈는 RFC1014로, 1995년에는 RFC1832로 오픈 네트워크 컴퓨팅 원격 프로시저 호출(ONC RPC)과 함께 표준화했으며, 현재는 2006년의 RFC4506이 최신이다. (RFC4506은 RFC1832에서 기술적인 변경 사항이 없다)

3. 특징

DCE/RPC에서 사용되는 [http://pubs.opengroup.org/onlinepubs/9629399/chap14.htm DCE/NDR] (및 MS RPC/NDR)에 비해, 항상 통일된 표현 형식으로 정규화하는 점이 특징이다.

* 정수(32/64비트)는 네트워크 바이트 순서(빅 엔디안)로 정규화된다. (DCE/NDR에서는 빅 엔디안과 리틀 엔디안의 두 형식을 모두 지원한다.)
* 부동 소수점 수 (32/64/128비트)는 IEEE 형식으로 정규화된다. (DCE/NDR에서는 IEEE/VAX/Cray/IBM 형식이다.)
* 문자열은 ASCII로 정규화된다. (DCE/NDR에서는 ASCII/EBCDIC의 2 형식, MS RPC/NDR에서는 UTF16도 지원한다.)
* 32비트 단위로 정렬되도록 필요에 따라 패딩된다.

위와 같은 특징으로 인해, 개별 환경에서는 내부 형식과 통일된 정규화 형식 간의 변환 루틴만 준비하면 된다. (DCE/NDR에서는 각 지원 형식과 내부 형식 간의 변환 루틴이 필요하다.)

그 반면, 머신의 내부 형식과 정규화 형식이 다를 경우, 동일한 아키텍처 간의 데이터 교환에서도 항상 변환 오버헤드가 발생한다. 예를 들어 IA-32/64계(리틀 엔디안) 간의 통신에서는 항상 엔디안 변환이 발생한다. (Sun Workstation 간의 통신의 경우, 빅 엔디안이므로 엔디안 변환은 발생하지 않는다.) rpcgen이라는 스텁 컴파일러를 사용하면, 정렬화/비정렬화하는 프로그램이 자동으로 생성된다.

4. XDR 데이터 타입

* 불리언
* int – 32비트 정수
* unsigned int – 부호 없는 32비트 정수
* hyper – 64비트 정수
* unsigned hyper – 부호 없는 64비트 정수
* IEEE 부동 소수점
* IEEE double
* quadruple (RFC1832에서 새로 추가)
* 열거
* 구조체
* 문자열
* 고정 길이 배열
* 가변 길이 배열
* 유니온 – 차별적 유니온
* 고정 길이 불투명 데이터
* 가변 길이 불투명 데이터
* void – 0바이트 양
* 선택적 – 선택적 데이터는 C 포인터와 유사하게 표기되지만, "가리키는" 데이터 유형과 "존재 여부" 플래그인 불리언으로 표현됩니다. 의미론적으로 이것은 옵션 유형입니다.

5. XDR을 이용하는 프로토콜 및 시스템

XDR 데이터 형식은 다음과 같은 많은 시스템에서 사용된다.

👆
좌우로 밀어서 보기
프로토콜 및 시스템설명
네트워크 파일 시스템(프로토콜)
ZFS파일 시스템
NDMP네트워크 데이터 관리 프로토콜
오픈 네트워크 컴퓨팅 원격 프로시저 호출
레가토 넷워커백업 소프트웨어 (후에 EMC에 매각)
NetCDF과학 데이터 형식
R 언어 및 통계 컴퓨팅 환경
HTTP-NG이진 와이어 프로토콜
스파이더몽키자바스크립트 엔진, 컴파일된 자바스크립트 코드 직렬화/역직렬화
갱글리아분산 모니터링 시스템
sFlow네트워크 모니터링 표준
libvirt가상화 라이브러리, API 및 UI
파이어버드원격 이진 와이어 프로토콜용
스텔라결제 네트워크