P2P原理及UDP穿透简单说明(转)】的更多相关文章

源: P2P原理及UDP穿透简单说明…
转:http://http://andylin02.iteye.com/blog/444666 P2P原理及UDP穿透简单说明 本文章出自cnntec.com的AZ猫著,如需要转发,请注明来自cnntec.com Peer-To-Peer缩写P2P中文称之为对等联网.用途于交流,比如QQ,MSN等等.文件传输.分布式数据计算等等. 这里我们主要是是简单讲解一下UDP实现NAT的穿透(俗称打洞)当然TCP与之相似,可以以此类推. NAT最开始出现在路由器上.详细的大家可以在网上查下资料NAT的全称…
在上一小节中了解到了通过浏览器自带的Webrtc功能来实现P2P视频聊天.在HTML5还没有普及和制定Webrtc标准的前提下,如果要在手机里进行视频实时对话等包括其他功能的话,还是要自己实现,还比较好扩展.所以本次要了解一下udp进行穿透(打洞). 还是进入正题吧,了解P2P. 1. 原理 关于原理网上随便就可以找到好多资料了.大部分都是讲解原理的,还配了图,还是不错的.这里不细说. 2. 代码讲解 本次使用Java语言.网络框架使用Netty4, 其实这些都是次要的,原理看懂才是关键. 服务…
作者:shootingstars (有容乃大,无欲则刚)  日期:2004-5-25 出处:P2P中国(PPcn.net) P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:shootingstars参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt 论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码).呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理. 首先先介绍…
NAT(The IP Network Address Translator) 的概念和意义是什么? NAT, 中文翻译为网络地址转换.具体的详细信息可以访问RFC 1631 - http://www.faqs.org/rfcs/rfc1631.html, 这是对于NAT的定义和解释的最权威的描述.网络术语都是很抽象和艰涩的,除非是专业人士,否则很难从字面中来准确理解NAT的含义. 要想完全明白NAT 的作用,我们必须理解IP地址的两大分类,一类是私有IP地址,在这里我们称作内网IP地址.一类是非…
一.UDP局域网通信. 这个比较简单,关于局域网中的2台或者更多的计算机之间的UDP通信,网络上一大把,直接复制粘贴就可以使用,原理也非常简单.所以,本文不做详细介绍. 二.UDP广域通信(包括路由器穿透技术) 广域网中的通信就比局域网复杂多了,而且会出现很多情况,每种情况的处理方式不同,下面一一道来. 1. 2台直接连接广域网中的计算机的UDP通信: 这种情况是最简单的一种,因为这2台计算机直接暴露在广域网环境下,他们都拥有独立的外网IP地址.这种情况我们可以直接利用2台计算机的外网IP和端口…
P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式.在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据. 优点是:数据的一致性容易控制,系统也容易管理. 缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点:单一服务器面对众多的客户端,由于CPU能力.内存大小.网络带宽的限制,可同时服务的客户端非常有限,可扩展性差. P2P…
NAT的全然分析及其UDP穿透的全然解决方式   一:基本术语 防火墙 防火墙限制了私网与公网的通信,它主要是将(防火墙)觉得未经授权的的包丢弃,防火墙仅仅是检验包的数据,并不改动数据包中的IP地址和TCP/UDPport信息. 网络地址转换(NAT) 当有数据包通过时,网络地址转换器不仅检查包的信息,还要将包头中的IP地址和port信息进行改动.以使得处于NAT之后的机器共享几个仅有的公网IP地址(一般是一个).网络地址转换器主要有两种类型. P2P应用程序 P2P应用程序是指,在已有的一个公…
TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范.UDP在IP报文的协议号是17.在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议.在OSI模型中,在第四层--传输层,处于IP协议的上一…
//UDP协议简单实现-----Serverpackage UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.nio.ByteBuffer; public class UdpServer implements Runnable { private int port; public UdpServer(int port…
效果图: 使用方法:  先 修改WinClient\bin\Debug  下面的 ip.ini,写上 服务器 IP地址. 客户端 与 客户端 通讯 之前 ,点击发送打洞消息 按钮,然后过一会再发送消息. 代码 很多, 参见: http://www.cnblogs.com/LeoWong/archive/2009/09/25/1574266.html 已经放在  MVC EF Bootstrap技术交流   206058845    里面的文件里面了.感兴趣的可以去下载.文件名 Socket穿透.…
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator). 最开始NAT是运行在路由器上的一个功能模块. 最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪90年代中期提出的).那么这个子…
首先先介绍一些基本概念:             NAT(Network   Address   Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两大类,基本 的NAT和NAPT(Network   Address/Port   Translator).             最开始NAT是运行在路由器上的一个功能模块.                         最先提出的是基本的NAT,它的产生基于如下…
转自:http://www.2cto.com/net/201201/116793.html NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator). 最开始NAT是运行在路由器上的一个功能模块.         最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点…
String get(String key) { String value = redis.get(key); if (value == null) { if (redis.setnx(key_mutex, "1")) { //设置分布式锁,同一时刻只能有一个线程能进行此操作 // 3 min timeout to avoid mutex holder crash redis.expire(key_mutex, 3 * 60) value = db.get(key); //为锁设置过期…
P2P可以是一种通信模式.一种逻辑网络模型.一种技术.甚至一种理念.在P2P网络中,所有通信节点的地位都是对等的,每个节点都扮演着客户机和服务器双重角色,节点之间通过直接通信实现文件信息.处理器运算能力.存储空间等资源的共享.P2P网络具有分散性.可扩展性.健壮性等特点,这使得P2P技术在信息共享.即时通讯.协同工作.分布式计算.网络存储等领域都有广阔的应用. 由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信.这种技术通常称为…
在<UDP通讯协议>这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据 这里将用Udp协议技术,编写一个简单的聊天程序: //发送端: package com.shindo.java.udp; import java.io.*; import java.net.*; /** * 使用多线程技术封装发送端 */ public class UdpSendByThread implements Runnable { private DatagramSocket ds; public Ud…
之前演示的 是 局域网通讯,也可以用作服务器之间的通讯,不能穿透. 想要穿透就要用 udp 了, 后续再讲解 udp 打洞 . 客户端: using System; using System.Windows.Forms; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; namespace WinFormP2pClient { public partial class Fo…
定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.从2013年5月开始,Redis的开发由Pivotal赞助. redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(…
1.UDP简要介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议. 2.UDP协议头 2.1.UDP端口号 由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包.端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传进来的目的端口号为3000的UDP包都会交给该程序.端口号理论上可以有2^16这么多.因为它的长度是16个bit…
简单介绍 前面文章在分布式计算泛型中介绍过P2P泛型.他是一种是一种无中心server的对等网络泛型. P2P即Peer-to-Peer的缩写.翻译为点对点或者端对端.就是我们常说的对等计算. P2P是一种以非集中化方式使用分布式资源来完毕一些关键任务的系统和应用. "非集中化"指的是P2P系统中没有传统的server的概念,将原先的client视为server和client的综合体. P2P打破了传统的C/S模式,在P2P网络中全部节点的地位都是相等的,每一个节点既充当server,…
最近很忙,自上次Blog被盗 帖子全部丢失后也很少时间更新Blog了,闲暇在国外站点查阅资料时正好看到一些Tracker 的协议资料,也就今天记录并实践了下,再次分享给大家希望可以帮到需要的小伙伴. 首先我们来了解下BT Tracker 一.做种 现在很多BT软件都提供了做种功能,在做种时,我们都必须指定tracker服务器地址,如果该地址无效,则做出来的种子对BT协议来说是没有任何实际意义的. 二.bt tracker服务 对于纯BT协议来说,每个BT网络中至少要有一台Tracker服务器(追…
UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺的重要通信手段. 相较于TCP而言,UDP通信的形式更像是发短信.不需要在数据传输之前建立.维护连接.只专心获取数据就好.省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证.因此,我们称UDP为“无连接的不可靠报文传递”. 那么与我们熟知的TCP相比,UDP有哪…
原文转自:http://www.cppblog.com/zuhd/archive/2010/06/08/117366.html sock代理分为sock4代理和 sock5代理.sock4支持TCP(事实仅支持TCP),无需用户名.密码验证:sock5支持TCP和UDP,根据代理服务器设置是否需要用户名.密码认证.TCP和UDP代理工作原理产不多,UDP代理网上多的是,google一下即可.这里只讲TCP代 理工作原理.sock代理工作原理大致如下:1.[需要代理方]向服务器发出请求信息:2.[…
UDP的实现 Java中实现UDP协议的两个类,分别是DatagramPacket数据包类以及DatagramSocket套接字类. 其与TCP协议实现不同的是: UDP的套接字DatagramSocket相比于Socket.ServerSocket来说,是一个非常简单的概念,没有连接的含义.套接字只需要知道侦听和发送数据包的本地端口即可. 也就是在TCP协议中庸Socket类和ServerSocket类进行功能划分,UDP协议中只用一个数据包套接字DatagramSocket发送和接受数据即可…
前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些高的,这工作量无异于重构前端.另外对前端的技术要求也是挺高的,需要对Vue比较熟悉,还要有Node.js 和 webpack 的应用经验. 引入 Vue是一个构建客户端应用的框架,即vue组件是在浏览器中进行渲染的.所谓服务端渲染,指的是把vue组件在服务器端渲染为组装好的HTML字符串,然后将它们…
roid roid 是一个极其简单的打包软件,使用 node.js 开发而成,看完本文,你可以实现一个非常简单的,但是又有实际用途的前端代码打包工具. 如果不想看教程,直接看代码的(全部注释):点击地址 为什么要写 roid ? 我们每天都面对前端的这几款编译工具,但是在大量交谈中我得知,并不是很多人知道这些打包软件背后的工作原理,因此有了这个 project 出现.诚然,你并不需要了解太多编译原理之类的事情,如果你在此之前对 node.js 极为熟悉,那么你对前端打包工具一定能非常好的理解.…
1. selenium原理 1.1 selenium介绍 Selenium是一个Web应用的自动化框架. 通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面. 比如点击界面按钮,在文本框中输入文字 等操作. 而且还能从web界面获取信息. 比如获取12306票务信息,招聘网站职位信息,财经网站股票价格信息 等等,然后用程序进行分析处理. Selenium 的自动化原理是这样的: 1.2 selenium客户端库 我们写的自动化程序需要使用客户端库. 我们程序的自动化请求都是通过这个…
Android手机版和电脑版 效果图: 通过WiFi局域网 电脑和手机连接通信. 电脑版本和手机版本使用了相同的消息发送头协议, 可以相互接收消息. 若有做的不好的地方还希望大家指导一下. 1. 手机版 添加权限 AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.pe…
如何发送数据包? Q:当应用程序产生数据的时候,需要去构造数据包并发送到网络上去,但是由谁负责处理呢? A:现代操作系统负责数据包得构造与发送,应用程序只需提供数据. 当应用程序产生数据时,应用程序将数据交给OS内核,然后在OS内核添加各层的首部,构建好数据包,然后交给网卡,发送到网络中去. Q:应用程序如何向OS 发送数据呢? A: OS为程序提供了一个接口,即socket API,类似于系统调用函数. Q:通过socket API,只需要提供数据吗? A:并不,还需要告诉OS 内核,目的端口…