面试题答案
一键面试- 节点发现:
- 主要协议:通常使用分布式哈希表(DHT)协议,如Kademlia。
- 步骤:新节点加入网络时,需要获取网络中其他已知节点的信息。它可以通过种子节点(bootstrap nodes)来开始。种子节点是一些长期在线且已知的节点,新节点向种子节点发送请求,种子节点会返回部分网络节点信息。新节点利用这些信息,通过DHT协议的路由算法,逐步发现更多的节点,融入整个P2P网络。
- 节点信息交换:
- 主要协议:如BitTorrent协议中,节点间使用握手协议进行信息交换。
- 步骤:两个节点初步发现对方后,通过特定的握手协议交换必要信息,如节点的身份标识、支持的协议版本等。以BitTorrent为例,握手消息包含协议字符串、保留字节、信息哈希值(标识共享文件)、对等节点ID等内容。通过握手,双方确认彼此可进行数据交互。
- 连接建立:
- 主要协议:TCP协议。
- 步骤:在完成信息交换后,节点间基于TCP协议建立可靠连接。发起连接的节点(客户端)向目标节点(服务器端)发送TCP SYN包,目标节点收到后回复SYN - ACK包,发起连接节点再发送ACK包,完成三次握手,从而建立起可靠的TCP连接,后续数据就可以通过这个连接进行传输。