RFC 3091. Pi Digit Generation Protocol
H. Kennedy
University of Michigan
Request for Comments: 3091
Category: Informational
1 April 2001
cтатус документа
Данный документ призван предоставить информацию сообществу Интернет. Он не специфицирует никакого Интернет стандарта. Распространение данного документа не ограничено.
авторские права
Copyright (C) The Internet Society (2001). Все права защищены.
реферат
Документ определяет протокол предоставления клиент-серверного сервиса генерации числа Пи (PIgen).
вступление
Протокол предназначен для предоставления сервиса получения числа Пи (PIgen), и может быть использован между клиентами и серверами в сети Интернет. Обычно клиенты используют рабочие станции, не укомплектованные ПО для вычисления числа Пи (или мощности этих рабочих станций недостаточны для этой процедуры), серверы же, обладая большими вычислительными ресурсами, более предпочтительны для данной задачи. Таким образом, вынужденным компромиссом является использование сетевых ресурсов и времени вместо локальных вычислительных циклов.
Ключевые слова "ДОЛЖНО", "НЕ ДОЛЖНО", "ТРЕБУЕТ", "БУДЕТ", "НЕ БУДЕТ", "БЫЛО БЫ", "НЕ БЫЛО БЫ", "РЕКОМЕНДУЮЕТСЯ", "МОЖЕТ", и "ДОПОЛНИТЕЛЬНЫЙ" в этом документе должны интерпретироваться, как указано в RFC 2119 [RFC2119].
примечание
Все цифры, полученные посредствам данного сервиса, это десятичные (база 10) цифры в кодировке ASCII [US-ASCII], следующие за знаком десятичной дроби в величине Пи или ее приближениях. Кроме того, значениям, полученным с помощью сервиса, определяемого этим протоколом, ДОЛЖНА предшествовать десятичная величина 3 (три).
1. сервис генерации цифр на основе TCP
PIgen определяется как сервис без поддержки состояний, базирующийся на протоколе TCP. Сервер прослушивает TCP-порт 314159. С момента установки соединения сервер начинает посылку потока данных, по одной цифре Пи за раз, начиная со старшей цифры после запятой, причем все входящие данные должны быть отброшены. Передача продолжается до тех пор, пока клиент не разорвет соединение.
Поток данных, проходящий по соединению, управляется стандартными механизмами TCP, поэтому беспокойства о том, что сервер посылает информацию быстрее, чем клиент ее получает и обрабатывает, необоснованны.
Серверы МОГУТ использовать любые подходящие методы для вычисления Пи в целях предоставления данной услуги, включая (но, не ограничиваясь) использование таблицы соответствий [DIGITS], численные методы [FIBPI, PIFFT] и статические выборки [MCM]. Тем не менее, выбранный метод ДОЛЖЕН обеспечить точное вычисление числа Пи.
1.1. Сервис приближений
ДОПОЛНИТЕЛЬНЫЙ сервис PIgen определен, TCP-сервис без поддержки состояний, сервер прослушивает TCP-порт 220007. С момента установки соединения сервер начинает отсылать поток данных, по одной цифре рационального числа 22/7 за раз, начиная со старшей цифры после запятой. Все входящие данные ДОЛЖНЫ быть отброшены. Передача продолжается до тех пор, пока клиент не разорвет соединение.
2. Сервис генерации цифр на основе UDP
ДОПОЛНИТЕЛЬНЫЙ сервис PIgen определен, как UDP-сервис без поддержки состояний, сервер прослушивает UDP-порт 314159. Как только сервер получет датаграмму с запросом конкретной цифры Пи, он посылает ответную датаграмму, содержащую требуемую величину в соответствии с форматом, определенном в пунктах 2.1.1 и 2.1.2.
Требуемая цифра МОЖЕТ быть вычислена с помощью любого подходящего метода вычисления Пи. РЕКОМЕНДУЕТСЯ использовать методы табличного поиска [DIGITS], а так же численные методы [BBPPA].
2.1. Формат пакетов
Компоненты PIgen на базе датаграмм предусматривают следующие форматы (определены в ABNF, RFC 2234).
2.1.1. Формат запроса
request = nth_digit
nth_digit = 1*DIGIT; определяет n-ную цифру после запятой.
2.1.2. Формат ответа
reply = nth_digit ":" DIGIT
где DIGIT — значение n-ной цифры после запятой.
2.2. Сервис приближений
ДОПОЛНИТЕЛЬНЫЙ сервис PIgen определен, как UDP-сервис без поддержки состояний. Сервер прослушивает UDP-порт 220007. Как только датаграмма запрашивает получение конкретной цифры рационального числа 22/7, ответная датаграмма отсылает требуемую величину в соответствии с форматом, определенном в пунктах 2.1.1 и 2.1.2.
3. Сервис генерации цифр на основе IP Multicast
ДОПОЛНИТЕЛЬНЫЙ сервис PIgen определен, как UDP-сервис без поддержки состояний, посредствам которого на групповой адрес 314.159.265.359 высылается случайная последовательность цифр числа Пи с использованием формата из пункта 2.1.2.
Структура запроса отсутствует. В случае, если сервер, использующий этот инструмент и включенный в PIgen-группу, в течение 30 секунд не получает цифровые последовательности, он сам МОЖЕТ стать поставщиком таких последовательностей для всей группы.
В этом случае, он будет генерировать случайные последовательности цифр числа Пи и отправлять их всем членам данной группы. Клиенты, в свою очередь, смогут получить точное значение Пи, принимая этот групповой трафик на постоянной основе.
Случайно выбранная цифра МОЖЕТ быть получена с использованием любого метода вычисления Пи. Рекомендуются методы табличного поиска [DIGITS], или численного нахождения [BBPPA]. Для уверенности в том, что последовательность действительно случайная, следует использовать надежные генераторы случайных чисел. За примерами можно обратиться к [RANDOM].
4. Обнаружение сервиса
Клиент ДОЛЖЕН находить серверы PIgen посредством алгоритма DNS SRV [RFC2782]. Стандартным именем сервиса является "pigen", в то время как используемыми протоколами являются "tcp" и "udp". Для сервиса приближений зарезервировано имя "pigem".
5. Соглашения по безопасности
Практически каждый из протоколов, связанных с обеспечением безопасности Интернет, для нормальной работы нуждается в как можно более точном значении Пи. Крайне важно, чтобы клиенты использовали только доверенные серверы генерации Пи. В противном случае, при несоблюдении этой рекомендации, крах Интернет неизбежен.
6. Ссылки
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[US-ASCII] Coded Character Set--7-Bit American Standard Code for Information Interchange, ANSI X3.4-1986.
[DIGITS]ftp://pi.super-computing.org/pub/pi
[FIBPI] Числа Фибоначчи и Пи — http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/fibpi.html
[PIFFT] Вычисление Пи на основе быстрого преобразования Фурье и AGM — http://momonga.t.u-tokyo.ac.jp/~ooura/pi_fft.html
[MCM] Метод Монте-Карло — http://www.daimi.aau.dk/~u951581/pi/MonteCarlo/pimc.html
[BBPPA] Алгоритм Bailey-Borwien-Plouffe для вычисления Пи — http://www.mathsoft.com/asolve/plouffe/plouffe.html
[RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.
[RANDOM] Значение случайности для криптографии — http://www.cs.berkeley.edu/~daw/rnd/
[RFC2782] Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000.
[CHARGEN] Postel, J., "Character Generation Protocol", STD 22, RFC 864, May 1983.7.
Hugh Kennedy, Мичиганский университет. Перевод Полневича Александра.
Сетевые решения. Статья была опубликована в номере 02 за 2004 год в рубрике PRIcall