http://blockgeek.org/t/topic/1915
server启动的时候,除了监听本地的tcp端口之外,还启动了udp端口的监听,而且udp端口的监听与udp通信在节点发现的时候起着关键作用。
先看下为什么udp在节点发现中起着关键作用。
在 https://blog.csdn.net/adwen2009/article/details/82878626 介绍了在节点启动后连接到bootnode节点,然后每隔15s向bootnode发送ReqNodesMsg请求其他节点信息,收到bootnode节点返回的ResNodesMsg信息后,将节点信息放入到buckets中。前文介绍的节点的连接,nodesmsg的互换等都是通过TCP连接进行的。但在将节点信息放入buckets之前,是有一个节点的校验的,这里的校验是通过udp pingpong来实现的,如果udp的ping消息得不到正确的回应,则当前节点是不会加入到buckets中的,所以说udp在这里是起了关键作用。具体代码可参照table.go中的pingpong函数,从ping函数中可以看到,tab.net是实现ping的关键,这里的net就是包含了udp连接的结构体,下面看一下这个net的来源。

在server启动的时候,有一个UDP端口的监听,即下面的代码
ntab, ourend, err := discover.ListenUDP(…)
在这个函数中主要做了3件事
1、通过ResolveUDPAddr查询端口和IP地址是否可用,并返回一个UDPAddr
2、通过ListenUDP监听udp端口,创建一个接收目的地是本地地址UDPAddr的UDP数据包的网络连接conn,此连接
3、封装一个新的UDP结构体,在这个newUDP中有个newTable,传参为udp,对应的就是table.net属性。这就解释了net的来源问题。
4、在newUDP中还启动了两个线程,loop()和readloop()。其中loop()中主要是对收到的消息进行校验,readloop中主要是接收来自其他节点的消息,这里的消息包括ping消息,pong消息,nodeReq,nodeRes消息,主要是ping,pong消息,实际上节点信息交换用的TCP,而不是这里的udp。

另外从代码send函数中可以看出udp的消息传递是明文的,并没有进行加密,只是做了下签名

p2p网络中的节点发现之UDP相关推荐

  1. P2P网络中的节点发现

    在P2P网络中,要发现并连接其他节点,常见的是通过种子节点连接到网络,然后通过种子节点获取其他节点的地址.以太坊的种子节点在cmd/swarm/bootnodes.go中定义,hpb的种子节点在con ...

  2. Unity网络:在局域网P2P网络中利用UDP广播实现保活/心跳

    C/S与P2P 严格来讲客户端与服务器指的都是进程,N个Client客户端进程与一个或多个Server服务器进程可以组成一个C/S结构的网络,而同时既是客户端也是服务器的N个节点可以组成一个P2P网络 ...

  3. P2P网络中内网穿透的方法总结(2019)

    P2P网络中内网穿越方法总结(2019) 内网穿越的需求 问题分析 方案一 方案二 方案三 内网穿越的需求 今天去图书馆搜资料查了一下,这个问题很老,但是解决办法很久都没有更新过了,还得翻翻书.网上的 ...

  4. P2P网络中DHT算法分析

    结构化与非结构化P2P 依照节点信息存储与搜索方式的不同,诸多P2P协议可以分为2大类:结构化(Structured)的与非结构化(Unstructured)的系统. 非结构化P2P系统 在非结构化的 ...

  5. P2P网络中的DHT分布式哈希结构

    现有的P2P实现可以分为三种类型.它们分别是:基于目录服务器P2P,非结构化P2P和结构化P2P.基于目录服务器这一类系统中设置目录服务器,用于保存用户节点的地址信息和该节点上共享文件的描述信息,文件 ...

  6. p2p网络中的NAT穿透技术----常见NAT穿越解决方案

    p2p网络中的NAT穿透技术----常见NAT穿越解决方案 常见NA丁穿越解决方案 NAT技术在缓解IPv4地址紧缺问题.构建防火墙.保证网络安全等方面都发挥了重要 作用.然而,NAT设备的广一泛存在 ...

  7. 生物网络中基于节点相似度的链路预测图卷积

    生物网络中基于节点相似度的链路预测图卷积 前言 一.介绍 二.材料和方法 三.结果与讨论 四.结论 文章地址:https://https://academic.oup.com/bioinformati ...

  8. 复杂网络中重要节点挖掘方法综述

    复杂网络的一些相关概念可以参考我上一篇博客:复杂网络入门 重要节点挖掘的任务 1.找到一种适合于所有情形下量化节点重要性的方法是不可能的,甚至在给定明确的量化函数下,不同的参数或者不同的网络结构都可能 ...

  9. 一种创新性有效重力模型的复杂网络中关键节点的识别【论文阅读】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要 一.识别有影响力节点的经典方法模型 1.1 度中心性 1.2 接近中心性 1.3 中介中心 1.4 特征向量中心性 1 ...

  10. 无线传感器网络中的节点定位技术

    无线传感器网络中的节点定位技术 无线传感器网络中的节点定位技术 本文转载,原文链接://www.cnblogs.com/dolphin0520/archive/2013/05/03/3056789.h ...

最新文章

  1. 人工智能时代的“认知劳动”
  2. 宽带Internet连接的类型—Vecloud微云
  3. 【Python-pywt】 小波变化库—Pywavelets 学习笔记
  4. 文献学习(part39)--Cross-view semantic projection learning for person re-identification
  5. Android studio 导入module方法
  6. 第五篇:路由网关(zuul) zuul路由 服务过滤 (Finchley版本)V2.0_dev
  7. 阿里云MVP第六期发布——覆盖全球20多个国家和地区,成为数字化转型的中坚力量...
  8. 缺失值填充4——使用线性模型(岭回归、Lasso回归、ElasticNet回归)填充序列缺失值
  9. java第三方登录接口_第三方登录接入-qq,weibo-java
  10. manage.py和simplejson调用报错解决
  11. idea下搭建vue开发环境
  12. 那位有epson R1900中文清零软件?
  13. VMWare安装配置Win7详解
  14. ckfinder的使用
  15. 【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系
  16. 【hdu 6438】Buy and Resell
  17. Java JDK安装及环境变量配置(windows)
  18. Linux CentOs7 ping网址 未知的名称或服务
  19. 国内首家中高端自由职业者共享平台——易分之一,即将上线运营
  20. spark任务卡住问题原因之一以及解决方案

热门文章

  1. Mapbox矢量切片本地化(离线)生成与发布方案
  2. 博客背景壁纸推荐(一)CSDN图床
  3. Vue Router 路由(路由守卫)---route
  4. 当 TiDB 遇到图数据库 | TiDB Hackathon 2020 优秀项目分享
  5. 如何使用TeamViewer远程控制电脑?三步即可成功
  6. ASP.NET Web Forms - 教程
  7. PID调节原理——方法
  8. MAC电脑触摸板手势(提高办公效率)
  9. Windows快捷键(三)—— 触摸板手势
  10. 一剪梅·红藕香残玉簟秋