External Data Representation

Поделись знанием:
Перейти к: навигация, поиск
XDR
Название:

External Data Representation

Уровень (по модели OSI):

Представления

Семейство:

TCP/IP, ONC

Назначение протокола:

Стандартизация формата данных

Спецификация:

RFC 4506 / [tools.ietf.org/html/std67 STD 67]

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.
  • Шаги конвертирования
    1. Предоставление буфера для хранения всей информации сообщения, которая должна быть послана.
    2. Вызов xdrmem_create() для инициализации потока XDR.

Например: xdrmem_create() возвращает указатель на пустой поток.

    1. Вызов стандартной программы в XDR для преобразования каждого пункта информации. Она будет дописывать закодированную информацию в конец потока следующим образом:
       *#* помещать закодированную информацию в следующее доступное место в буфере
       *#* обновлять внутренний указатель на поток, помещая его на новое доступное свободное место 
      • Например, конвертирование 32-битного целого:


    1. После кодирования всех пунктов сообщения это сообщение посылается.

Стандартные программы преобразования в XDR

Получение сообщения в XDR

  • Когда программа получает сообщение в XDR, она конвертирует каждый пункт данных в сообщении из XDR в своё внутреннее представление.
  • Шаги:
    1. Вызов xdrmem_create() для инициализации потока XDR , указав XDR_DECODE, как четвертый аргумент.
    2. Помещение полученного сообщения в буфер.
    3. Вызов подходящей стандартной программы преобразования для декодирования каждого пункта данных полученного сообщения.

Например, декодирование 32-битного целого:

Напишите отзыв о статье "External Data Representation"

Ссылки

  • docs.freebsd.org/44doc/psd/25.xdrrfc/paper.pdf
  • www.comp.hkbu.edu.hk/~comp2650/lecture/notes/Chapter9.pdf


К:Википедия:Статьи без изображений (тип: не указан)

Отрывок, характеризующий External Data Representation

– Однако вот какой то волшебный лес с переливающимися черными тенями и блестками алмазов и с какой то анфиладой мраморных ступеней, и какие то серебряные крыши волшебных зданий, и пронзительный визг каких то зверей. «А ежели и в самом деле это Мелюковка, то еще страннее то, что мы ехали Бог знает где, и приехали в Мелюковку», думал Николай.
Действительно это была Мелюковка, и на подъезд выбежали девки и лакеи со свечами и радостными лицами.
– Кто такой? – спрашивали с подъезда.
– Графские наряженные, по лошадям вижу, – отвечали голоса.


Пелагея Даниловна Мелюкова, широкая, энергическая женщина, в очках и распашном капоте, сидела в гостиной, окруженная дочерьми, которым она старалась не дать скучать. Они тихо лили воск и смотрели на тени выходивших фигур, когда зашумели в передней шаги и голоса приезжих.
Гусары, барыни, ведьмы, паясы, медведи, прокашливаясь и обтирая заиндевевшие от мороза лица в передней, вошли в залу, где поспешно зажигали свечи. Паяц – Диммлер с барыней – Николаем открыли пляску. Окруженные кричавшими детьми, ряженые, закрывая лица и меняя голоса, раскланивались перед хозяйкой и расстанавливались по комнате.
– Ах, узнать нельзя! А Наташа то! Посмотрите, на кого она похожа! Право, напоминает кого то. Эдуард то Карлыч как хорош! Я не узнала. Да как танцует! Ах, батюшки, и черкес какой то; право, как идет Сонюшке. Это еще кто? Ну, утешили! Столы то примите, Никита, Ваня. А мы так тихо сидели!
– Ха ха ха!… Гусар то, гусар то! Точно мальчик, и ноги!… Я видеть не могу… – слышались голоса.
Наташа, любимица молодых Мелюковых, с ними вместе исчезла в задние комнаты, куда была потребована пробка и разные халаты и мужские платья, которые в растворенную дверь принимали от лакея оголенные девичьи руки. Через десять минут вся молодежь семейства Мелюковых присоединилась к ряженым.
Пелагея Даниловна, распорядившись очисткой места для гостей и угощениями для господ и дворовых, не снимая очков, с сдерживаемой улыбкой, ходила между ряжеными, близко глядя им в лица и никого не узнавая. Она не узнавала не только Ростовых и Диммлера, но и никак не могла узнать ни своих дочерей, ни тех мужниных халатов и мундиров, которые были на них.
– А это чья такая? – говорила она, обращаясь к своей гувернантке и глядя в лицо своей дочери, представлявшей казанского татарина. – Кажется, из Ростовых кто то. Ну и вы, господин гусар, в каком полку служите? – спрашивала она Наташу. – Турке то, турке пастилы подай, – говорила она обносившему буфетчику: – это их законом не запрещено.
Иногда, глядя на странные, но смешные па, которые выделывали танцующие, решившие раз навсегда, что они наряженные, что никто их не узнает и потому не конфузившиеся, – Пелагея Даниловна закрывалась платком, и всё тучное тело ее тряслось от неудержимого доброго, старушечьего смеха. – Сашинет то моя, Сашинет то! – говорила она.
После русских плясок и хороводов Пелагея Даниловна соединила всех дворовых и господ вместе, в один большой круг; принесли кольцо, веревочку и рублик, и устроились общие игры.
Через час все костюмы измялись и расстроились. Пробочные усы и брови размазались по вспотевшим, разгоревшимся и веселым лицам. Пелагея Даниловна стала узнавать ряженых, восхищалась тем, как хорошо были сделаны костюмы, как шли они особенно к барышням, и благодарила всех за то, что так повеселили ее. Гостей позвали ужинать в гостиную, а в зале распорядились угощением дворовых.
– Нет, в бане гадать, вот это страшно! – говорила за ужином старая девушка, жившая у Мелюковых.
– Отчего же? – спросила старшая дочь Мелюковых.
– Да не пойдете, тут надо храбрость…
– Я пойду, – сказала Соня.
– Расскажите, как это было с барышней? – сказала вторая Мелюкова.
– Да вот так то, пошла одна барышня, – сказала старая девушка, – взяла петуха, два прибора – как следует, села. Посидела, только слышит, вдруг едет… с колокольцами, с бубенцами подъехали сани; слышит, идет. Входит совсем в образе человеческом, как есть офицер, пришел и сел с ней за прибор.
– А! А!… – закричала Наташа, с ужасом выкатывая глаза.
– Да как же, он так и говорит?
– Да, как человек, всё как должно быть, и стал, и стал уговаривать, а ей бы надо занять его разговором до петухов; а она заробела; – только заробела и закрылась руками. Он ее и подхватил. Хорошо, что тут девушки прибежали…
– Ну, что пугать их! – сказала Пелагея Даниловна.
– Мамаша, ведь вы сами гадали… – сказала дочь.
– А как это в амбаре гадают? – спросила Соня.
– Да вот хоть бы теперь, пойдут к амбару, да и слушают. Что услышите: заколачивает, стучит – дурно, а пересыпает хлеб – это к добру; а то бывает…
– Мама расскажите, что с вами было в амбаре?
Пелагея Даниловна улыбнулась.
– Да что, я уж забыла… – сказала она. – Ведь вы никто не пойдете?