External Data Representation
| Название: |
External Data Representation |
|---|---|
| Уровень (по модели OSI): |
Представления |
| Семейство: | |
| Назначение протокола: |
Стандартизация формата данных |
| Спецификация: |
XDR (англ. External Data Representation - внешнее представление данных) в международный стандарт передачи данных в Интернете, используемый в различных RFC для описания типов. XDR позволяет организовать не зависящую от платформы передачу данных между компьютерами в гетерогенных сетях.
External Data Representation (XDR) в это стандарт IETF с 1995 года. Он позволяет данным быть упакованными не зависящим от архитектуры способом, таким образом, данные могут передаваться между гетерогенными компьютерными системами.
- Преобразование из локального представления в XDR называется кодированием.
- Преобразование из XDR в локальное представление называется декодированием.
- XDR выполнен как портативная (переносная) библиотека функций между различными операционными системами и так же не зависит от транспортного уровня.
Среди использующих XDR программ можно назвать следующие:
Содержание |
[править] Типы данных в XDR
- boolean
- int (32-ное целое число)
- hyper (64-ное целое число)
- float
- double
- enumeration
- structure
- string
- массивы фиксированной длины
- массивы переменной длины
- неформатированные («сырые») данные
[править] Мотивация использования XDR
Разные компьютеры могут иметь разное внутреннее представление информации. Например, 32битный Integer имеет 2 возможных формы представления:
- Порядок байтов от старшего к младшему (Motorola 68000)
- Прямой порядок байтов (Intel 80x86)
Для некоторых функций WinSock, их аргументы (т.е. параметры функций), должны храниться в обратном порядке.
- Сервер и клиент могут обмениваться разными типами данных.
- Если сервер и клиент выполняются на двух соответствующих машинах, используя разное внутреннее представление данных, то они должны согласовывать точно представление всех данных, передаваемых между ними.
- Sun Microsystems разработала external data representation (XDR), который определяет представление для различных типов данных (integer,enumerationв.)
- XDR стал стандартом де-факто для большинства клиент-серверных приложений:
- Программа преобразует сообщения из своего внутреннего представления в XDR для последующей передачи. Это называется кодированием. - Получатель преобразует полученное сообщение из XDR в собственное представление. Это называется декодирование.
[править] Типы данных в XDR
XDR указывает представление для большинства типов данных в C:
Закодированная информация содержит только данные, она не содержит информации о типе данных. Например, после кодирования 32-битного integer, результатом будет 32-битный integer в XDR. Не будет информации о том, что это integer. Клиенты и серверы, использующие XDR, должны согласовывать тип данных сообщений, которыми они обмениваются.
[править] Программная поддержка использования XDR
- XDR определяет представление для каждого типа данных.
- Например, 32-битный integer имеет порядок байтов от старшего к младшему.
- Для содействия программистам, XDR обеспечивает библиотеку стандартных программ для конвертирования представления данных.
[править] Посылка сообщения в XDR
- Посылаемое сообщение может состоять из нескольких пунктов данных (items).
- Например, сообщение содержит информацию о студенте. Оно состоит из трех пунктов:
- имя (строка символов) -ID (целое) -совокупный GPA (floating-point number)
- Перед посылкой сообщения программа (клиент или сервер) конвертирует всю информацию пунктов из внутреннего представления в XDR.
- Шаги конвертирования
- Предоставление буфера для хранения всей информации сообщения, которая должна быть послана.
- Вызов xdrmem_create() для инициализации потока XDR.
Например:xdrmem_create() возвращает указатель на пустой поток.
-
- Вызов стандартной программы в XDR для преобразования каждого пункта информации. Она будет дописывать закодированную информацию в конец потока следующим образом:
*#* помещать закодированную информацию в следующее доступное место в буфере
*#* обновлять внутренний указатель на поток, помещая его на новое доступное свободное место
-
-
- Например, конвертирование 32-битного целого:
-
-
- После кодирования всех пунктов сообщения, это сообщение посылается.
[править] Стандартные программы преобразования в XDR
[править] Получение сообщения в XDR
- Когда программа получается сообщение в XDR, она конвертирует каждый пункт данных в сообщении из XDR в свое внутреннее представление.
- Шаги:
- Вызов xdrmem_create() для инициализации потока XDR , указав XDR_DECODE, как четвертый аргумент.
- Помещение полученного сообщения в буфер.
- Вызов подходящей стандартной программы преобразования для декодирования каждого пункта данных полученного сообщения.
Например, декодирование 32-битного целого:
[править] Ссылки
- http://docs.freebsd.org/44doc/psd/25.xdrrfc/paper.pdf
- http://www.comp.hkbu.edu.hk/~comp2650/lecture/notes/Chapter9.pdf
| Основные протоколы TCP/IP по уровням модели OSI (Список портов TCP и UDP) | |
|---|---|
| Физический | |
| Канальный | |
| Сетевой | |
| Транспортный | |
| Сеансовый | |
| Представления | |
| Прикладной | |
| Другие прикладные | |
| Это заготовка статьи о компьютерных сетях. Вы можете помочь проекту, исправив и дополнив её. |
| У этой статьи нет иллюстраций.
Вы можете помочь проекту, добавив их (с соблюдением правил использования изображений).
Для поиска иллюстраций можно:
|