NAT穿越
为什么要有NAT穿越
ipv4瓶颈和NAT协议的出现。
内网地址和公网地址
- 外网不知道内网主机的公网ip
- 就算知道了,也不一定能访问内网主机,因为外网请求来到nat设备,nat设备无法匹配请求的目标ip:port对于内网的哪台主机
按角度分
- 硬件方式
- 软件方式
按协议分 - udp
- tcp
硬件方式一句话带过
接着先讲turn
再讲stun,分udp和tcp讲,讲udp前先讲nat类型;
讲tcp和udp的比较,turn和stun的比较优缺点
接着讲ice
三种方式的使用场景,和区块链使用哪个?
抛出两个问题 - 局域网内通讯回路问题,hairping
- ip的变化问题,鉴权问题
dht、rplx、k桶
NAT穿越
udp穿越
tcp通讯
节点发现
节点之间距离计算:
节点id的与或计算结果值
K桶结构:
256 * 16
节点鉴权:
ECkey 公钥私钥
4种命令:
ping pong findnode sendneibour
节点发现流程:
- 20引导节点,pingpong,活跃的节点加入k桶
2.向k桶最接近30个节点发送findnode命令
3.节点回传最接近的30个节点,并告诉这30个节点向客户端发送信息建立连接 - 客户端收到30个节点后,分别pingpong,活跃的节点加入k桶
5.再循环2,间隔
等待,活跃,候选,入桶,死亡
1.先使用UDP协议来实现节点之间高成功率的穿透,来发现节点,建立连接的信道
2.为了信息的可靠传输,在已经建好的信道基础上,使用TCP协议传输区块、交易、日志等数据;