Pi Digit Generation Protocol
Das Pi Digit Generation Protocol ist ein Netzwerkprotokoll, das das Abrufen von Ziffern der Kreiszahl Pi (π) über Netzwerke ermöglichen soll. Es ist im RFC 3091<ref>Vorlage:RFC-Internet</ref> spezifiziert. Federführend bei der Entwicklung war Hugh C. Kennedy von der University of Michigan.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20220525105843
| {{#ifeq: 20220525105843 | *
| {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20220525105843}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20220525105843}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Hugh C. Kennedy. | {{#invoke:WLink|getEscapedTitle|Hugh C. Kennedy.}} | {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20220525105843|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www-personal.umich.edu/~kennedyh/resume.html#misc}}
|| {{#if: || }}
}}{{#if: Hugh C. Kennedy.
| {{#if: {{#invoke:WLink|isBracketedLink|Hugh C. Kennedy.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www-personal.umich.edu/~kennedyh/resume.html#misc%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www-personal.umich.edu/~kennedyh/resume.html#misc%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www-personal.umich.edu/~kennedyh/resume.html#misc }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} University of Michigan.</ref>
Das Protokoll steht in der Tradition der ohne ernsthafte Anwendungen gedachten Aprilscherz-RFC.<ref>Thomas Limoncelli, Peter Salus: The Complete April Fools’ Day RFCs. Peer-to-Peer Communications, 2007, ISBN 978-1-57398-042-5.</ref> Wie auch beim Internet Protocol over Avian Carriers, Peg DHCP und dem Hyper Text Coffee Pot Control Protocol wurde das Konzept allerdings tatsächlich umgesetzt.
Technisches
Vorgesehen ist, dass ein Server auf TCP-Port 314159 wartet, und auf Anfragen mit dem sequentiellen Senden der Nachkommastellen von Pi reagiert (also 1, 4, 1, 5, 9, 2, 6 usw.) . Optional kann, als Näherung, auf Port 220007 die Ziffern der <math>\tfrac{22}{7}</math> gleichenden Dezimalzahl angeboten werden. Ein weiterer optionaler Zusatz ist ein UDP-Dienst auf Port 314159, der auf Anfrage eine bestimmte Ziffer, wie sie der Client zur Angabe einer Position spezifiziert hat, antwortet. An die IP-Multicast-Adresse 314.159.265.359 kann als weiterer Zusatz von einem willigen Server ein Strom von Pi-Ziffern gesendet werden, falls diese Rolle nicht ein anderer Server bereits übernommen hat. SRV Resource Records können unter dem Namen pigen protokollgerechte Server listen.
Anwendungen
Der RFC empfiehlt nachdrücklich, nur als vertrauenswürdig bekannte pigen-Server zu verwenden, da fehlerhafte oder gar absichtlich verfälschende Server je nach Anwendung fatale Auswirkungen haben könnten. So ist beim Einsatz in der Kryptographie besondere Vorsicht geboten.<ref>Chad Boutin: <templatestyles src="Webarchiv/styles.css" />{{#if:20101225004934
| {{#ifeq: 20101225004934 | *
| {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20101225004934}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20101225004934}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Pi seems a good random number generator – but not always the best. | {{#invoke:WLink|getEscapedTitle|Pi seems a good random number generator – but not always the best.}} | {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20101225004934|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html}}
|| {{#if: || }}
}}{{#if: Pi seems a good random number generator – but not always the best.
| {{#if: {{#invoke:WLink|isBracketedLink|Pi seems a good random number generator – but not always the best.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://news.uns.purdue.edu/html4ever/2005/050426.Fischbach.pi.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Purdue University, 26. April 2005</ref>
Implementierung
In Sektion 1.1 des RFC werden ohne Anspruch auf Vollständigkeit Methoden zur Bestimmung der Ziffern vorgeschlagen: Nachschlagen, numerische Verfahren und Auswahlverfahren. Dabei sollen aber Abweichungen ausgeschlossen sein.
Da die Portnummern 314159 und 220007 sowie die IP-Adresse 314.159.265.359 vorherrschenden Standards (16-Bit-Portnummern, IPv4-Oktette) zuwiderlaufenden, müssen Implementierungen von diesen Werten abweichen.
Eine Umsetzung ist die freie, für mehrere Plattformen verfügbare Programmsuite gpigen, ausgestattet mit Server und Client, geschrieben in C++. Der Chefentwickler ist Hideki Shirafuji. Sie läuft auf den Ports 50735 bzw. 23399.
Weblinks
- Vorlage:RFC-Internet
- gpigen-Projektseite. sourceforge.net (englisch)
Einzelnachweise
<references />