Updates to datagram overview page
Add missing references
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
{% extends "global/layout.html" %}
|
||||
{% block title %}{% trans %}Datagrams{% endtrans %}{% endblock %}
|
||||
{% block lastupdated %}{% trans %}February 2019{% endtrans %}{% endblock %}
|
||||
{% block accuratefor %}0.9.39{% endblock %}
|
||||
{% block lastupdated %}2025-04{% endblock %}
|
||||
{% block accuratefor %}0.9.66{% endblock %}
|
||||
{% block content %}
|
||||
<h2>{% trans %}Datagram Overview{% endtrans %}</h2>
|
||||
<p>{% trans i2cp=site_url('docs/protocol/i2cp') -%}
|
||||
@ -35,30 +35,30 @@ the 'streamr' tunnel types, and udpTunnel classes.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
<h3>{% trans %}Datagram Length{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
<p>
|
||||
The application designer should carefully consider the tradeoff of repliable vs. non-repliable
|
||||
datagrams. Also, the datagram size will affect reliability, due to tunnel fragmentation into 1KB
|
||||
tunnel messages. The more message fragments, the more likely that one of them will be dropped
|
||||
by an intermediate hop. Messages larger than a few KB are not recommended.
|
||||
Over about 10 KB, the delivery probablility drops dramatically.
|
||||
Messages over 16 KB cannot be delivered over NTCP, dropping delivery chances even more.
|
||||
{%- endtrans %}</p>
|
||||
</p>
|
||||
<a href="{{ site_url('docs/spec/datagrams') }}">{% trans -%}
|
||||
See the Datagrams Specification page.
|
||||
{%- endtrans %}</a>
|
||||
|
||||
<p>{% trans elgamalaes=site_url('docs/how/elgamal-aes') -%}
|
||||
Also note that the various overheads added by lower layers, in particular asymmetric
|
||||
<a href="{{ elgamalaes }}">ElGamal/AES</a>, place a large burden on intermittent messages
|
||||
|
||||
<p>
|
||||
Also note that the various overheads added by lower layers, in particular
|
||||
garlic messages, place a large burden on intermittent messages
|
||||
such as used by a Kademlia-over-UDP application. The implementations are currently tuned
|
||||
for frequent traffic using the streaming library. There are a high number
|
||||
of session tags delivered, and a short session tag lifetime, for example.
|
||||
There are currently no configuration parameters available within I2CP to tune
|
||||
the ElGamal Session Tag parameters.
|
||||
{%- endtrans %}</p>
|
||||
for frequent traffic using the streaming library.
|
||||
</p>
|
||||
|
||||
<h3>{% trans %}I2CP Protocol Number and Ports{% endtrans %}</h3>
|
||||
<p>{% trans -%}
|
||||
The standard I2CP protocol number for datagrams is PROTO_DATAGRAM (17).
|
||||
The standard I2CP protocol number for signed (repliable) datagrams is PROTO_DATAGRAM (17).
|
||||
Applications may or may not choose to set the
|
||||
protocol in the I2CP header. It is not set by default.
|
||||
protocol in the I2CP header. The default is implementation-dependent.
|
||||
It must be set to demultiplex datagram and streaming traffic received on the same Destination.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
@ -75,7 +75,8 @@ There is no method within the datagram API to specify whether it is non-repliabl
|
||||
or repliable. The application should be designed to expect the appropriate type.
|
||||
The I2CP protocol number or port should be used by the application to
|
||||
indicate datagram type.
|
||||
The I2CP protocol numbers PROTO_DATAGRAM (signed) and PROTO_DATAGRAM_RAW are defined in the
|
||||
The I2CP protocol numbers PROTO_DATAGRAM (signed, also known as Datagram1), PROTO_DATAGRAM_RAW,
|
||||
PROTO_DATAGRAM2, and PROTO_DATAGRAM3 are defined in the
|
||||
<a href="{{ i2psession }}">I2PSession API</a>
|
||||
for this purpose. A common design pattern in client/server datagram applications is to
|
||||
use signed datagrams for a request which includes a nonce, and use a raw datagram
|
||||
@ -86,6 +87,10 @@ for the reply, returning the nonce from the request.
|
||||
PROTO_DATAGRAM = 17
|
||||
</li><li>
|
||||
PROTO_DATAGRAM_RAW = 18
|
||||
<ul><li>
|
||||
PROTO_DATAGRAM2 = 19
|
||||
<ul><li>
|
||||
PROTO_DATAGRAM3 = 20
|
||||
</li></ul>
|
||||
|
||||
<p>{% trans i2psession='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/I2PSession.html',
|
||||
@ -100,6 +105,7 @@ as implemented in
|
||||
<p>{% trans i2cp=site_url('docs/protocol/i2cp') -%}
|
||||
Data integrity is assured by the gzip CRC-32 checksum implemented in
|
||||
<a href="{{ i2cp }}#format">the I2CP layer</a>.
|
||||
Authenticated datagrams (Datagram1 and Datagram2) also ensure integrity.
|
||||
There is no checksum field in the datagram protocol.
|
||||
{%- endtrans %}</p>
|
||||
|
||||
|
@ -449,6 +449,9 @@ Total length: minimum 34 + payload length.
|
||||
References
|
||||
==========
|
||||
|
||||
.. [Common]
|
||||
{{ spec_url('common-structures') }}
|
||||
|
||||
.. [DATAGRAMS]
|
||||
{{ site_url('docs/api/datagrams', True) }}
|
||||
|
||||
@ -467,6 +470,9 @@ References
|
||||
.. [SAMv3]
|
||||
{{ site_url('docs/api/samv3') }}
|
||||
|
||||
.. [Streaming]
|
||||
{{ spec_url('streaming') }}
|
||||
|
||||
.. [TRANSPORT]
|
||||
{{ site_url('docs/transport', True) }}
|
||||
|
||||
|
Reference in New Issue
Block a user