我基于Kadelmia方法编写P2P系统。我的问题与使用的传输类型有关:UDP或TCP。
Kadelmia文档定义了UDP,但我关注的是有效负载大小。据我所知,UDP受助者交付了548个字节。但是有些消息由文档定义,长度大于548字节(例如FIND_NODE上的响应)。问题:我应该使用TCP而不是UDP吗?
答案 0 :(得分:1)
长度大于548字节
这是针对ipv4的RFC定义的MTU,但实际上几乎所有节点都支持更多,至少1400,并且某些情况也可以由碎片覆盖。对于IPv6,保证的MTU更高。
问题:我应该使用TCP而不是UDP吗?
出于原因,您应该使用UDP see this Q&A。如果您需要在查找结束时传输更大的数据,您仍然可以使用TCP作为下一层协议,但这超出了kademlia路由算法的范围。
例如FIND_NODE上的响应
假设256位节点ID(32字节)和18字节联系人(IPv6),您可以将10个ID,地址对装入548个字节,并使用几个字节来备用标头。它挤满了但可行。