外部數據表示法
外部數據表示法(External Data Representation,縮寫為XDR)是一種標準數據序列化格式,主要用於計算機網絡協議。在OSI模型的表示層中實現。XDR允許把數據包裝在獨立於介質的結構中,使得數據可以在異構的計算機系統之間傳輸。從本地表示轉換到XDR稱為編碼,從XDR轉換到本地表示稱為解碼。XDR使用軟體來完成變換,所以在不同的作業系統中可以靈活的運用,同樣的,XDR獨立於傳輸層。
XDR使用4位元組為基本單位,以大端字節序序列化;更小的數據類型在編碼後仍占據4位元組。變長類型比如字符串和不透明類型被填充為整體上可被4位元組整除。浮點數用IEEE 754格式表示。
歷史和應用
XDR在1980年代中期由Sun Microsystems開發,並在1987年首次廣泛發表[1],在1995年成為IETF標準協定。
XDR數據格式用於了很多系統,包括:
- 網絡文件系統
- ZFS文件系統
- NDMP網絡數據管理協議
- 開放網絡計算遠程過程調用
- Legato NetWorker備份軟體
- NetCDF (一種科學數據格式)
- R語言
- HTTP-NG(頁面存檔備份,存於網際網路檔案館)二進制線路協議
- SpiderMonkey JavaScript引擎,用來序列化/解序列化編譯的JavaScript代碼
- Ganglia分布式監控系統
- sFlow網絡監控標準
- libvirt虛擬化庫,API和UI
- Firebird (資料庫)用作遠程二進制線路協議
- Stellar支付網絡
XDR 數據類型
XDR定義了以下數據類型:
- 布爾
- int – 32-bit整數,unsigned int – 無符號32-bit整數
- hyper – 64-bit整數,unsigned hyper – 無符號64-bit整數
- IEEE浮點數,IEEE 雙精度浮點數,四精度浮點數 (新出現在RFC1832)
- 枚舉,結構,字符串
- 定長數組,變長數組
- 聯合 – 可辨別的聯合
- 定長不透明數據,變長不透明數據
- void – 零字節量
- optional – 可選數據的記號類似於C指針,但是表示為「指向」布爾「存在與否」標記的數據類型。語義上這是可選類型。
參見
引用
- ^ Sun Microsystems. XDR: External Data Representation Standard. RFC 1014. Network Working Group. 1987 [July 11, 2011]. (原始內容存檔於2019-03-21).
外部連結
XDR標準存在三個不同版本的RFC中:
- RFC 4506 2006版本,這個文檔對RFC 1832沒有技術變更,出版目的是提示IANA的關注,補充安全考慮,並區分規範的和非正式的引用。
- RFC 1832 1995版本。向RFC 1014增加四倍精度浮點數。
- Cisco's XDR: Technical Notes(頁面存檔備份,存於網際網路檔案館)
- jsxdrapi.c, the main source file of SpiderMonkey that uses XDR
- protocol.cpp(頁面存檔備份,存於網際網路檔案館) main xdr source file used in Firebird remote protocol
- The GNU Libc implementation of rpcgen, the XDR parser.
- Mu Dynamics Research Labs racc grammar for XDR
- IvmaiAsn ASN1/ECN/XDR Tools(頁面存檔備份,存於網際網路檔案館) (a collection of tools containing an XDR/RPC-to-ASN.1 converter)