he Peer-to-Peer Protocols Vegas Vegas Dancer Nasty Wildlife Gt" href="http://luckyw.nastyvegasdancer.com/feed//Wildlife/gt.htm" />
he Peer-to-Peer Protocols Vegas Vegas Dancer Nasty Wildlife Gt
he Peer-to-Peer Protocols Vegas Vegas Dancer Nasty Wildlife Gt典型地,核心本身并不直接实现这些消息,而是由内部服务插件实现。 但是,这些插件的加载不是可选的(核心在启动时将自动加载)。 因此,某种意义上,这些消息是核心消息。
由一台主机发给其他机器的,最基本的序列是HELLO,用于声明它在网络上存在。 HELLO的接收者返回PING,确认那台主机确实可达。 PING的接收者返回PONG,确认可接收。
随后,任何一方发送给另一方一个加密了SETKEY的PING消息,启动一个连接。 接收者用另一个SETKEY确认,其中包含新的PING,已及和先收到的PING对应的PONG应答。 同样,这个PING以加密的PONG回答。 如果没有收到PONG,任意一方可以发送另一个SETKEY和PING。 如果在短时间内收到重复的SETKEY,密钥不应更换。 这个序列和启动TCP的三次握手非常相似。
下图表示一种可能的消息序列:
节点随后交换特定应用消息。 必须用NOISE使各分组大小一致。 MTU决定于传输层,并在HELLO消息中广告。 任何节点都可以用HANGUP终止连接。 长时间(约15分钟)不活动连接也被认为是终止连接。 HANGUP既不需要确认也不是必需的,但行为规范的节点都应实现它。
GNUnet主机之间交换的分组可以包含任意数目的消息(仅受制于传输层MTU大小)。
除加密消息外,GNUnet核心也是用附加信息扩展每个消息。 GNUnet核心添加校验和、带宽限制信息和序列信息,以避免重复处理消息。 加密、解密、校验由GNUnet核心完成,应用程序和传输代码都不需要关心这些。 由GNUnet核心给每个消息添加的消息头的格式如下:
| GNUNET_TransportPacket_HEADER | ||||
|---|---|---|---|---|
| 偏移 | 比特(bit)位 | |||
| 0-7 | 8-15 | 16-23 | 24-31 | |
| 0 | 纯文本的散列值(SHA-512) | |||
| 64 | 序列好,0代表纯文本(11) | |||
| 68 | 时间戳(秒)(NBO) | |||
| 72 | 带宽限制(字节每分钟)(NBO) | |||
头后面紧跟各个消息。 再次说明,发送者标识也必须传送,以便核心可以选择正确的密钥解密。 然而,如何做随不同的传输层而不同。
HELLO分组用于参与节点通过GNUnet广播信息。 每个GNUnet节点通过它的公钥K标识。 通过GNUnet,节点的公钥一般简化为K的散列值,简称为H(K)。
HELLO分组是节点传播其他节点公钥的方法。 此外,节点的标识和地址是绑定的。 如何定义地址依赖于底层所使用的传输机制。 例如,UDP服务使用IP和UDP端口号。 SMTP传输实现可能选择使用电子邮件地址。 GNUnet可以有多个地址,并且可以在任何时候切换地址,例如,如果IP是动态设定的,象DHCP或拨号的情况。 HELLO消息用于通知其他主机地址的改变。
安全考虑
kGNUnet Documentation:
he Peer-to-Peer Protocols Vegas Vegas Dancer Nasty Wildlife Gtt s s Dancer Dancer Nasty
zGNUnet Documentation:
he Peer-to-Peer Protocols Vegas Vegas Dancer Nasty Wildlife Gtw Vegas