RFC: 3404
Оригинал: Dynamic Delegation Discovery System - Part Four: The Uniform Resource Identifiers (URI) Resolution Application
Предыдущие версии: RFC 2168, RFC 2915
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Николай Малых

RFC 3404, Страница 8 из 12

5.2. Пример схемы CID URI

Рассмотрим схему URI на основе MIME Content-Id. URI может иметь вид:

cid:199606121851.1@bar.example.com

Отметим, что этот пример выбран с учебными целями и не соответствует схеме CID URI.

Первым шагом процесса преобразования будет нахождение схемы CID. Эта схема выделяется из URI путем добавления в конце суффикса '.uri.arpa.' и поиска NAPTR для имени 'cid.uri.arpa.'. Результат может иметь вид:

cid.uri.arpa.
;;       order pref flags service        regexp           replacement
IN NAPTR 100   10   ""    ""  "!^cid:.+@([^\.]+\.)(.*)$!\2!i"    .

Поскольку здесь имеется лишь одна запись, упорядочение не представляет проблемы. Поле replacement пусто, поэтому используется шаблон, указанный в поле regexp. Это регулярное выражение применяется ко всему значению URI для проверки соответствия и дает позитивный результат. Компонента \2 выражения для замены возвращает строку "example.com". Поскольку поле флагов пусто, поиск не является завершающим и далее следует запрос к DNS для получения новых записей NAPTR, связанных с доменом 'example.com'.

Отметим, что правило не выделяет полное доменное имя из CID, предполагая, что CID происходит от хоста и выделяя доменное имя этого хоста. Хотя все хосты (такие, как bar) иогут иметь свои собственные записи NAPTR, поддержка независимых записей для всех хостов сайта может оказаться слишком обременительной. Шаблоны здесь не подходят, поскольку их использование будет возвращать результат лишь при отсутствии точного соответствия имен в системе.

Записи, возвращенные по запросу для имени example.com, могут иметь вид:

example.com.
;;      order pref flags service           regexp  replacement
IN NAPTR 100 50 "s" "z3950+I2L+I2C"     ""    z3950.tcp.example.com.
IN NAPTR 100 50 "s" "rescap+I2C"        ""    rescap.udp.example.com.
IN NAPTR 100 50 "s" "thttp+I2L+I2C+I2R" ""    thttp.tcp.example.com.

Продолжая рассмотрение этого примера, отметим, значения поля order совпадают для всех записей и клиент может выбрать любую запись. Приложение определяет флаг 's' как признак завершения поиска и указания на то, что результатом перезаписи будет доменное имя, для которого следует запросить запись SRV. Когда клиент сделает такой запрос, он получит информацию о хосте, номере порта, протоколе и службах, доступных по этому протоколу. Этой информации клиенту достаточно для контакта с сервером и запроса у него информации о CID URI.

Напомним, что в регулярном выражении последовательность \2 служит для выделения доменного имени из CID, а \. для соответствия символам точки, разделяющим компоненты доменного имени. Поскольку '\' используется в качестве escape-символа, вхождение этого символа как литерала должно использовать дополнительный escape-символ '\'. Для приведенной выше записи cid.uri.arpa регулярное выражение в master-файле должно иметь форму "!^cid:.+@([^\\.]+\\.)(.*)$!\\2!i". Когда клиентская программа получает запись, шаблон преобразуется в "!^cid:.+@([^\.]+\.)(.*)$!\2!i".

2007 - 2017 © Русские переводы RFC, IETF, ISOC.