NAT打洞】的更多相关文章

NAT(Network Address Translation)是一种广域网的接入技术,将私有地址转换为合法的公共IP地址,可以完美的解决IP地址不足问题,而且还能有效避免来自外部网络的攻击,隐藏并保护网络内部的计算机. NAT的功能通常被集成到路由器.防火墙.ISDN路由器或者单独的NAT设备中. 一.NAT有三种实现方式: 1. 静态转换:即1对1.好处是外部可以访问内部网络: 2. 动态转换:多内部IP对几个外部IP,动态适配.无法实现对网络内部主机的访问: 3. 端口多路复用:即PAT,…
1. P2P协议--点对点通信 1.1 常用的P2P协议 1.1.1 电驴(eMule) 一个电驴网络由服务器端和客户端两部分组成. 服务器端是客户端连接的.为了搜索和查找可以下载用户的桥梁.客户通过浏览它而获取他需要的文件所有者的客户端信息. 搜索(Searching): 每一个客户端连接到一个服务器作为他的主服务器.由客户端告诉主服务器他共享了哪些文件.服务器搜索时会将文件和ip信息反馈给搜索的客户端列表. 下载(Downloading): 客户端下载前先查询服务器获取一个拥有该文档的客户端…
参考:https://www.cnblogs.com/shilxfly/p/6589255.html https://blog.csdn.net/phoenix06/article/details/70139756 https://www.cnblogs.com/wangle1001986/p/6083871.html 1 NAT 产生背景 互联网中主要依靠IP进行寻址,IPv4地址使用32个比特位进行标记,一般使用点分十进制形式书写.有类IP分类如表1-1所示: 表 1-1 有类IP分类 网络…
首先先介绍一些基本概念:            NAT(Network Address             Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两大类,基本的NAT和NAPT(Network             Address/Port Translator).            最开始NAT是运行在路由器上的一个功能模块. 最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域…
catalogue . NAT概念 . P2P概念 . UDP打洞 . P2P DEMO . ZeroNet P2P 1. NAT概念 在STUN协议中,根据内部终端的地址(LocalIP:LocalPort)到NAT出口的公网地址(PublicIP:PublicPort)的影射方式,把NAT分为四种类型(rfc3489: http://www.ietf.org/rfc/rfc3489.txt) . Full Cone: 这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口,然后外网的…
终于找到了一份满意的UDP打洞原理解释,附上正文,自己整理了一下源码 3.3. UDP hole punching UDP打洞技术 The third technique, and the one of primary interest in this document, is widely known as "UDP Hole Punching." UDP hole punching relies on the properties of common firewalls and c…
最近忙项目,有点累,无暇顾急博客,4月份本来想写写流媒体的文章,结果回家休了两个月回深圳后,接了P2P的项目,那就开始P2P吧. P2P起源于美国大学生Shawn Fanning 写的一个分享软件Napster: -------- 看到这张图,我们不禁会想起今天的电驴,的确很像,功能也相似,下载的同时也能分享自己电脑上的多媒体. napster, 电驴是一代产品,迅雷,快播是二代产品,支持边下边播. 题外话扯多了,咱们步入正题. P2P全称是 peer to peer,国内有被翻译成点对点协议,…
多年前曾经写过一个关于NAT钻洞的实验.现在发现那个做法在我现在的路由器上已经不管用了.经过一番搜索发现时过境迁,世界变化很快,新路由器已经是UPnP了.在这里重新理一下几种方法. 第一种,也是不太靠谱的一种,因为没有特定的标准.这种方法依靠路由器的特定逻辑: – 路由器尽可能保持内部端口和外部端口一致.所以你可以假设自己的内部端口就是外部端口.或者路由器尽量使用同一外部端口对应某一内部端口.– 在内部应用发出UDP消息后,路由器允许任何外部设备通过上述外部端口发送消息到同一内部端口.– 外部I…
转自:http://blog.pfan.cn/fengfei/18828.html 首先先介绍一些基本概念:            NAT(Network Address             Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用.NAT分为两大类,基本的NAT和NAPT(Network             Address/Port Translator).            最开始NAT是运行在路由器…
c#实现P2P文件分享与传输系统 二.设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续.  上一篇文章介绍了p2p系统Tracker Server和Peer,以及文件描述符,本篇接着讲NAT Server的部分.由于p2p网络中使用udp报文,所以只介绍udp穿透. 1. NAT类型 NAT(Network Address Translation, 网络地址转换),是指在IP包通过路由设备时,修改其IP地址信息的技术.一般应用是,通过将内网地址…
正文: 一. 首先来简单讲讲什么是NAT? 原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备(无线路由器之类)之后.NAT设备会在IP封包通过设备时修改源/目的IP地址. 对于家用路由器来说, 使用的是网络地址端口转换(NAPT), 它不仅改IP, 还修改TCP和UDP协议的端口号, 这样就能让内网中的设备共用同一个外网IP. 举个例子, NAPT维护一个类似下表的NAT表:   NAT映射 NAT设备会根据NAT表对出去和进来的数据做修改, 比如将192.168.0.3:8888…
nat 打洞穿透原理,需要服务端. 假设有A.B两个客户端和S一个服务器 Step 1 : A.B发送UDP请求给S,S知道了A.B在公网的IP和端口. Step 2: A从S中取B在公网的IP和端口. B从S中取A在公网的IP和端口. Step 3: A通过B在公网的IP和端口向B发送UDP请求. B通过A在公网的IP和端口向A发送UDP请求. Step Final: A同B之间可以通过UDP直接互相发送信息. 目前看来这种方法最大的缺点, 还是需要服务器. http://feelc.farb…
下面这篇介绍webrtc的文章不错,我花了大半天翻译了一下. 翻译的时候不是逐字逐句的,而是按照自己的理解翻译的,同时为了便于理解,也加入一些自己组织的语言. 本文主要介绍webrtc的信令,stun,turn,转载请说明出处(博客园RTC.Blacker). 英文来自:http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ WEBRTC支持点对点通讯,但是WEBRTC仍然需要服务端,因为: 1,为了协调通讯过程客户端之间需要交…
前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则, 当然如果这套程序只有自己在使用是没什么问题的.可是在现实生活中,我们的程序往往还需要和第三方的协议(如SDP,SIP)进行对接,因此使用标准化 的通用规则来进行P2P链接建立是很有必要的.本文就来介绍一下当前主要应用于P2P通信的几个标准协议,主要有STUN/RFC3489,STUN/RFC5389, TURN/RFC5766以及ICE/RFC5245. STUN简介 在前言…
http://udt.sourceforge.net/ DT is a reliable UDP based application level data transport protocol for distributed data intensive applications over wide area high-speed networks. UDT uses UDP to transfer bulk data with its own reliability control and c…
www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC.Blacker). 通过前面的例子我们知道运行WebRTCDemo即可看到P2P的效果,实际应用中我们不可能让用户自己去里面设置对方的IP和音视频端口, 而且即使设置了对方的IP和端口也不一定能运行起来,因为P2P如果双方不在同一个网段则还需穿透NAT,那服务端具体该如何部署呢? 1.信令服务: 想…
下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机,有着不同的IP地址. 服务器端不会以qq用户端的ip作为唯一标识,服务器端会以qq账号作为唯一标识,所以这个账号肯定是唯一的,一个账号登陆时每次都可以有不同的ip地址,但账号却相同,当账号a登陆服务器,服务器会记录下账号a的ip地址,去通知a的好友,告诉他们,a上线了和现在的ip地址,a的好友就可以…
TCP的socket本身就是长连接的,那么为什么还要心跳包呢? 在smack里有个30s发送一个空消息的线程,同样关于心跳包(keepalive) 据网络搜索到的资料解释如下 内网机器如果不主动向外发起连接,外网机没法直连内网的,这也是内网机安全的原因之一,又因为路由器会把这个关系记录下来,但是过一段时间这个记录可能会丢失 ,所有每一个客户端每隔一定时间就会向服务器发送消息,以保证服务器可以随时找到你,这东西被称为心跳包. 理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么…
一. UDP用户数据报协议,它是一个无连接的,面向数据报的协议,它不提供可靠性但传输速度比TCP要快. UDP数据报中的“UDP长度”为两个字节,所以我们要发送的UDP数据最多支持65507大约68K的数据,超过该大小的话需要自己来分割发送. 使用UDP必须关心IP数据报的长度,因为如果它超过MTU的话,会对IP数据报进行分片. 在UDP数据报文中,头部占8个字节,报文具体格式如下: UDP适合一次只传送少量数据.对可靠性要求不高的场景:  发送小尺寸的数据,如DNS通讯使用的是UDP以提高通信…
在root目录下先放好自定义的constants.py文件再docker run 同时记得修改PUBLIC_IP 可以跨wifi通信 docker pull piasy/apprtc-server docker run --name apprtc -p 8080:8080 -p 8089:8089 -p 3478:3478 -p 3478:3478/udp -p 3033:3033 --expose=59000-65000 -e PUBLIC_IP=47.88.63.197 -v /root:/…
to do list: 1.正则表达式引擎   (done 2.五子棋AI jquery && canvas 游戏 (这个搞定好多好玩的idea可以实现了php 暂时不想玩各种框架吧,用原生php做一个小型的cmspython 唔,bzoj貌似wget爬不到,目前想直接用python强行爬java 唔,这学期java课不上的代价就是做个大作业,我找了个有趣的主题,类似qq的局域网内通信,纯swing写ui,如果可以倒是有兴趣研究下nat打洞,突破内网anagram 这个目测最好实现的,就是…
转载自http://blog.csdn.net/li_xiao_ming/article/details/8106857 下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP? 也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机,有着不同的IP地址. 服务器端不会以qq用户端的ip作为唯一标识,服务器端会以qq账号作为唯一标识,所以这个账号肯定是唯一的,一个账号登陆时每次都可以有不同的ip地址,但账号却…
文章导读:本节内容,如标题所讲,“初识webrtc”.读完之后,我需要你能清楚三个问题:第一.真正的搞明白实时音视频在生产环境中的真实应用以及前景分析:第二.开发一个符合商业标准的实时音视频应用需要解决哪些技术问题:第三.webrtc如何解决复杂的音视频通信中的技术问题.  正文开始. 问题一.实时音视频应用在生产环境中的应用以及前景. 我当不了“预知未来的先知者”,我也不能决定未来技术的走向,我能做的只有结合历史的进程,顺应时代的趋势,摆清事实,分析实时音视频直播技术在当下以及不久未来的应用情…
加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制修改这个软件.但是有个很大的问题,这个软件的官网和github仓库中都没有看到安装文档,尝试的人基本上都是铩羽而归.据Reddit上有人说联系过Signal的开发人员,开发人员说他们的精力要放在优先级更高的事情上,所以顾不上安装部署文档.在我看来,Signal的意思是“只要我放出来全套源代码来让大家…
原文链接:https://fuckcloudnative.io/posts/wireguard-docs-theory/ WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 威屁恩 协议,被视为下一代 威屁恩 协议,旨在解决许多困扰 IPSec/IKEv2.Open威屁恩 或 L2TP 等其他 威屁恩 协议的问题.它与 Tinc 和 MeshBird 等现代 威屁恩 产品有一些相似之处,即加密技术先进.配置简单.从 2020 年 1 月开始,它已经并入了 L…
WebRTC 在创建点对点(P2P)的连接之前,会先通过信令服务器交换两端的 SDP 和 ICE Candidate,取两者的交集,决定最终的音视频参数.传输协议.NAT 打洞方式等信息. 在完成媒体协商,并且两端网络连通之后,就可以开始传输数据了. 本文示例代码已上传至 Github,有需要的可以随意下载. 一.术语 在实现一个简单的视频通话之前,还需要了解一些相关术语. 1)SDP SDP(Session Description Protocal)是一个描述会话元数据(Session Met…
http://www.cnblogs.com/whyandinside/archive/2010/12/08/1900492.html http://www.gzsec.com/oldversion/filesys/news_view.asp?newsid=84 NAT的原理NAT怎么能够节约公网IP地址呢?这是因为它能够让由私有IP构成的局域网内所有的计算机通过一台具有公网IP和NAT功能的计算机进入公网(Internet),比如上网冲浪,这样一个局域网就只需要一个或很少几个公网IP就行了,从…
 [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching) http://www.360doc.com/content/12/0428/17/6187784_207328686.shtml 内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题.虽 然目前已经发展出多种穿越NAT的技术,但相关的技…
什么是打洞,为什么要打洞 由于Internet的快速发展 IPV4地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换. 下面是我在网上找到的一副图 一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起连接,数据包经过NAT地址转换后送给公网上的服务器(例如上图中的“Server”),连接建立以后可双向传送数据,NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,但在一些特殊的场合需要不同私网内的主机进行互联(例如P2P软件.网络会议.视频传输等),…
http://michankong.blog.51cto.com/1464983/761270 可能有点乱,下面以故事的形式叙述一下这个情景. 人物:A(男) NAT_A(A家接线员) B(女) NAT_B (B家接线员) S 场景介绍:A想认识B,但是不知道B的电话,S跟A.B都是朋友,并且知道A和B的电话.接线员的职责:对往外转接的电话不做询问,对往内转接的电话则要过滤以免有骚扰电话.过滤规则:在一定时间内没有拨打过的号码就过滤. 首先A给S打电话: A说:我想认识你朋友B,你把她电话给我呗…