[置顶] P2P之我见,关于打洞的学问-------开篇
最近忙项目,有点累,无暇顾急博客,4月份本来想写写流媒体的文章,结果回家休了两个月回深圳后,接了P2P的项目,那就开始P2P吧。
P2P起源于美国大学生Shawn Fanning 写的一个分享软件Napster:
--------
路由设备通过NAT杜绝”陌生人“访问你的PC,NAT全称是Network Address Translation,翻译过来就叫地址转换协议,有了它,再也不用为艳照发愁了。
NAT的工作粗略的有两点:
1.在内网的地址端口与公网的地址端口间建立映射。
2.为内网的地址建立信任链表。
第一点很好理解,假设你的内网IP是192.168.1.2, 路由设备的外网地址是225.211.224.11,现在要上某度查“冠西哥艳照门”,首先浏览器得访问某度的地址,假设是202.96.134.33, 浏览器发送一个请求过去,ip 包头里包含目标地址和来源地址,这里目标地址就是202.96.134.33,你的PC没有直接外网,IP包头当然就是192.168.1.2,假设不经转换,某度就会把你的请求返回给它的员工了,因为192.168.1.2是个局域网地址,要想如愿以偿的看到冠西哥的艳照,就得把来源地址改成公网IP:225.211.224.11,于是便有了NAT。NAT将会将你丢出去的每个IP包的来源地址改成公网IP,并将为你的每一个传输层端口分配一个公网端口。
这有点不大明白了,为什么还要重新分配端口呢,比哪我的TCP内网使用8090端口,NAT上也用8090与之对应不就可以了么。
问题是如果有两台或者几百台内网机器会怎样呢,都对应同样的端口么,你不反NAT将返回的结果返回给你的同事么,呵呵。
第二点的理解其实也很容易,有些恶心的公司喜欢收集大家的口味,你懂的。万幸有NAT,将它们拒之门外,当然,有时候你愿意分享你那独到的口味,比如你愿意让某度知道你喜欢冠希哥,用192.168.1.2:8090 访问某度225.211.224.11:80 , 这时候某度就可以将结果发给你了,你又要把口味发到某博:180.149.134.17:80,这样某博也能发信息给你了,其实NAT已经为192.168.1.2:8090建立了一个信任链表,包括:225.211.224.11:80,180.149.134.17:80,意思是这两个地址发来的信息都会无条件的转发给你,别人发来的一概不收。
是不是在说我跑题了,这和P2P有啥关系。
正是有了NAT,P2P就难多了,随着NAT的推广,连企鹅的标杆软件QQ都改用TCP了,当然企鹅还有其他不得已的苦衷,比如某部规定聊天软件不准用P2P。
正是有了NAT,现在P2P在国内被一个粗的不能再粗的词替代了:打洞。
哪里有洞打哪里,但是NAT的洞从外面是打不开的,要从里面打,从刚才的例子中,你能会想到如果A要发信息给B,首先得让B发个消息给A,这样B那边的NAT将会将A的地址放在信任列表里,不错,孺子可教也。。。
但是。。。现实是很残酷的,NAT,尼玛也是分很多种的。
未完待续。。。。。先洗洗睡了。。。
[置顶] P2P之我见,关于打洞的学问-------开篇的更多相关文章
- [置顶] P2P网贷对推动社会发展的影响
P2P网贷对推动社会发展的影响 1 真正的支持了实体经济,一般借款人就在几万或者50万以下 2 关照小微经济,新型行业.一般小微经济的创新更高,对社会的发展最大化. 3盘活存量 放到银行.保险.国债一 ...
- About me & 一些置顶的博文
About me 一只历史上最弱的 \(\text{hnoier}\) ... 身在 \(\text{hn}\) 弱校,除了在四大名校夹缝中生存,还要受到同校 \(\text{Julao}\) 的鄙视 ...
- 在UWP中页面滑动导航栏置顶
最近在研究掌上英雄联盟,主要是用来给自己看新闻,顺便copy个界面改一下段位装装逼,可是在我copy的时候发现这个东西 当你滑动到一定距离的时候导航栏会置顶不动,这个特性在微博和淘宝都有,我看了@ms ...
- WinFrom窗体始终置顶
调用WindowsAPI使窗体始终保持置顶效果,不被其他窗体遮盖: [DllImport("user32.dll", CharSet = CharSet.Auto)] privat ...
- winform窗体置顶
winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...
- 自定义置顶TOP按钮
简述一下,分为三个步骤: 1. 添加Html代码 2. 调整Css样式 3. 添加Jquery代码 具体代码如下: <style type="text/css"> #G ...
- ahk之路:利用ahk在window7下实现窗口置顶
操作系统:win7 64位 ahk版本:autohotkey_L1.1.24.03 今天安装了AutoHotkey_1.1.24.03.SciTE.PuloversMacroCreator,重新开始我 ...
- Qt中让Qwidget置顶的方法
一般来是说窗体置顶和取消只要 setWindowFlags(Qt::WindowStaysOnTopHint); setWindowFlags(Qt::Widget); 要 ...
- js之滚动置顶效果
0.js获取高度 ? 1 2 3 4 5 6 document.all // 只有ie认识 document.body.clientHeight // 文档的高,屏幕 ...
随机推荐
- MYSQL @、@@、@x
说明一: @var这种形式表示的是用户自定义的变量. 说明二: @@var这种形式表示的是系统变量.它又可以分为两种一种是全局(@@global)的一种是会话(@@session)的. 说明三: MY ...
- 多名Uber司机被指刷单遭封号 一周薪水为0
昨天,一司机在Uber“司机之家”办公地墙上写了泄愤的话 摄/法制晚报记者 苏妮 司机展示的账单显示,上周的薪水几乎为零,上面用英文标注了“欺诈行为”的字样 摄/法制晚报记者 苏妮 法制晚报讯(记者 ...
- SSDP协议的Android实现以及使用
前面一篇博客里面已经介绍过SSDP协议原理,本篇博客将实现实现Android上的SSDP协议. 关键技术分析:1.发送广播:须要发送送广播,所以须要使用MulticastSocket.SocketAd ...
- Python BeautifulSoup4 使用指南
前言: 昨天把传说中的BeautifulSoup4装上了,还没有装好的童鞋,请看本人的上一篇博客: Python3 Win7安装 BeautifulSoup,依照里面简单的步骤就能够把Beautifu ...
- Session累计用户数据列表
OrderForm.html <body> <center> <h1 ><font size="20">Order Items& ...
- Vector(容器)
vector(容器)就像数组一样,但比数组强大很多,下面介绍一下vector常用的几种方法: 一.对于vector自身的处理,包括赋初始值,复制等等: vector<int> v1 ; v ...
- ORA-12514(TNS:监听程序当前无法识别...)
记录: ORA-12514(TNS:监听程序当前无法识别...)的解决方案 在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误: 按照安装提示执行后面的操作后,打开PL/SQ ...
- PHP冒泡排序法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. 冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他 ...
- [转]关于 Swift 的一点初步看法
本文转自:http://onevcat.com/2014/06/my-opinion-about-swift/ 感谢原作者 虽然四点半就起床去排队等入场,结果还是只能坐在了蛮后面的位置看着大屏幕参加了 ...
- 城通网盘,千军万马,千脑网盘,119g网盘哪个适合做网赚?
转载请注明文章来自 [ofiicexie] 网盘网赚已经流行了有一段时间了,国内流行的几个网盘有城通,千军万马,千脑,119g,今天小编写以此文来比较分析一下这几个网盘的优缺点. 这里,我特意做了个这 ...