2019独角兽企业重金招聘Python工程师标准>>>

对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。“Peer”在英语里有“对等者、伙伴、对端”的意义。因此,从字面上,P2P可以理解为对等计算或对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”,学术界则统一称为对等网络(Peer-to-peer networking)或对等计算(Peer-to-peer computing),其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
        UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

采用UDP协议进行打洞以进行P2P会话,打洞的原理是这样的:假设client A要向client B对话,但是A不知道B的地址,即使知道根据NAT的原理这个对话在第一次会被拒绝,因为client B的NAT认为这是一个从没有过的外部发来的请求.这个时候,A如果发现自己没有保存B的地址,或者说发送给B的会话请求失败了,它会要求server端让B向A打一个洞,这个B->A的会话意义在于它使NAT B认为A的地址/端口是可以通过的地址/端口,这样A再向B发送对话的时候就不会再被NAT B拒绝了。打一个比方来说明打洞的过程,A想来B家做客,但是遭到了B的管家NAT B的拒绝,理由是:我从来没有听我家B提过你的名字,这时A找到了A,B都认识的朋友server,要求server给B报一个信,让B去跟管家说A是我的朋友,于是,B跟管家NAT B说,A是我认识的朋友,这样A的访问请求就不会再被管家NAT B所拒绝了。简而言之,UDP打洞就是一个通过server保存下来的地址使得彼此之间能够直接通信的过程,server只管帮助建立连接,在建立间接之后就不再介入了。

转载于:https://my.oschina.net/u/2308182/blog/1422496

Windows平台上实现P2P服务(一)相关推荐

  1. Windows平台上实现P2P服务(三)

    2019独角兽企业重金招聘Python工程师标准>>> 我们已经建立好一个UDP的服务程序了,下面我们要给这个服务程序添加服务内容了. 其服务内容将根据通讯的客户端请求来进行定义和处 ...

  2. 在Windows平台上安装Dubbox框架

    在Windows平台上安装Dubbox框架 一.分布式系统概述 分布式处理方式越来越受到业界的青睐--计算机系统正在经历一场前所未有的从集中式向分布式架构的变革.分布式系统是一个硬件或软件组件分布在不 ...

  3. windows平台上实现websocket服务器

    windows平台上实现websocket服务器 目前做个项目需要做个带串口的测试软件,主要功能是一台电脑利用串口控制一台待测试设备,然后通过串口对他进行调试,同时使用串口采集其他测量设备的数值,将测 ...

  4. 正版软件 Directory Opus 12 Pro Windows 平台上的资源管理器,定是功能完全、可定制化程度高的那款。

    Directory Opus 是一款 Windows 平台上的资源管理器,定是功能最完全.可定制化程度最高的那款.你可以通过它完成几乎所有操作,包括查看图片元信息.预览图片.阅读文本文件内容.批量重命 ...

  5. x264代码剖析(一):图文详解x264在Windows平台上的搭建

    x264代码剖析(一):图文详解x264在Windows平台上的搭建 X264源码下载地址:http://ftp.videolan.org/pub/videolan/x264/ 平台:win7 PC. ...

  6. 细数 Windows 平台上的 NoSQL 数据库

    从可查询的分布式解决方案,如MongoDB,到简单的分布式Key/Value存储解决方案,如Cassandra.此外,还有Riak,Tokyo Cabinet,Voldemort,CouchDB和Re ...

  7. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

  8. python文件名有空格_python 解决Windows平台上路径有空格的问题

    最近在采集windows上中间件的时候,遇到了文件路径有空格的问题. 例如:Aapche的安装路径为D:\Program Files\Apache Software Foundation\Apache ...

  9. 在Windows平台上安装Node.js及NPM模块管理

    1. 下载Node.js官方Windows版程序:http://nodejs.org/#download     从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI ...

  10. 标准配置的Windows平台上潜在可用屏幕区域

    经常在windows开发网站的朋友,在开始设计网站时,最需要知道的就是一个图片的大小和尺寸.我本人也是在windows上玩弄了几年的,虽然没有什么正规的证书之类的,但是自己对windows的东西,一些 ...

最新文章

  1. 学java是不是必须要参加java培训班?
  2. 使用acme.sh撸一个免费且自动更新的HTTPS证书
  3. Max-Flow Min-Cut
  4. java中数组中添加新元素,求解!!!往ArrayList数组里添加元素,貌似没加进去。...
  5. 【Level 09】U1 The way I see it L3 At your service
  6. ICANN总裁Fadi Chehadé:IPv6峰会全面推动了IPv6在中国的发展与产业落地
  7. java加密解密代码_java加解密文件公用方法整合(多看一本书,少写三行代码)
  8. 扫雷android源代码,Android实现扫雷小游戏
  9. 光纤上网是如何实现的?—Vecloud微云
  10. 静态分析Android程序
  11. 高版本node,无法编译程序,删除所有文件
  12. 计算机主板复位电路的组成,教你认识液晶彩电主板中的复位电路
  13. 黑马代码生成器2.5
  14. ARM64内核内存布局图
  15. docker run --device-write-bps doesn't effect
  16. java计算机毕业设计高原特色农产品网站设计源码+mysql数据库+系统+lw文档+部署
  17. 高薪程序员面试题精讲系列02之高薪面试经验分享
  18. 安装应用需要打开未知来源权限_OPPO手机未知来源权限在哪 OPPO手机未知来源权限设置方法...
  19. 数据挖掘信用卡盗刷分类问题
  20. 带你横向比较10款PHP开发框架

热门文章

  1. 在同一台服务器上配置多个Tomcat
  2. C#笔记 使用自定义事件(含参)
  3. 为什么你应该开始学习编程了
  4. 16.1 Class类与Java反射
  5. SVN服务器搭建--Subversio与TortoiseSVN的配置安装(Windows)
  6. .7-Vue源码之AST(3)
  7. php5.3 appache phpstudy win7win8win10下 运行速度慢
  8. oracle、mysql、sql server等;流行数据库的链接驱动配置
  9. SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法
  10. Asp.Net随机中文汉字验证码