Skip to content

Commit c5549f9

Browse files
committed
update
1 parent 06cc39b commit c5549f9

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

VideoDevelopment/CDN及PCDN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ CDN的工作原理就是将您源站的资源缓存到位于全国各地的CDN
112112
下面分别是不用CDN以及使用CDN时的访问流程:
113113
![image](https://github.com/CharonChui/Pictures/blob/master/dns_no_cdn.png?raw=true)
114114

115-
![image](https://github.com/CharonChui/Pictures/blob/master/dns_cdn.png.png?raw=true)
115+
![image](https://github.com/CharonChui/Pictures/blob/master/dns_cdn.png?raw=true)
116116

117117
上面图中在使用CDN时,server-isp-DNS服务器不是直接把域名做A记录映射到源站,而是CNAME记录到调度中心,
118118
调度中心根据用户请求的来源,选择一个最近的CDN节点,主要的流程如下:

VideoDevelopment/P2P.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,45 @@ IDC专属针对的是闲置机房/个人网管。解决了上一代的问题:
140140
戳与服务器最新产生的数据时间戳的差值,P2P分享率是指客户端从P2P网络获取的数据量与客户端完整观
141141
看所需的数据量的比值。
142142

143+
144+
## NAT
145+
146+
147+
二十世纪90年代初,网络专家们意识到,IPv4地址很快就要耗光了。于是,人们开始考虑IPv4的替代方案,同时采取一系列的措施来减缓IPv4地址的消耗。正是在这样一个背景之下,本期的主角闪亮登场,它就是网络地址转换——NAT。
148+
149+
NAT是一项神奇的技术,说它神奇在于它的出现几乎使IPv4起死回生。在IPv4已经被认为行将结束历史使命之后近20年时间里,人们几乎忘了IPv4的地址空间即将耗尽这样一个事实——在新技术日新月异的时代,20年可算一段漫长的历史。更不用说,在NAT产生以后,网络终端的数量呈加速上升趋势,对IP地址的需求剧烈增加。此足见NAT技术之成功,影响之深远。
150+
151+
说它神奇,更因为NAT给IP网络模型带来了深远影响,其身影遍布网络每个角落。根据一份最近的研究报告,70%的P2P用户位于NAT网关以内。因为P2P主要运行在终端用户的个人电脑之上,这个数字意味着大多数PC通过NAT网关连接到Internet。如果加上2G和3G方式联网的智能手机等移动终端,在NAT网关之后的用户远远超过这个比例。
152+
153+
然而当我们求本溯源时却发现一个很奇怪的事实:NAT这一意义重大的技术,竟然没有公认的发明者。NAT第一个版本的RFC作者,只是整理归纳了已被广泛采用的技术。
154+
155+
156+
NAT名字很准确,网络地址转换,就是替换IP报文头部的地址信息。NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力。那么,什么是内部网络IP地址?
157+
158+
RFC1918规定了三个保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。这三个范围分别处于A,B,C类的地址段,不向特定的用户分配,被IANA作为私有地址保留。这些地址可以在任何组织或企业内部使用,和其他Internet地址的区别就是,仅能在内部使用,不能作为全球路由地址。这就是说,出了组织的管理范围这些地址就不再有意义,无论是作为源地址,还是目的地址。对于一个封闭的组织,如果其网络不连接到Internet,就可以使用这些地址而不用向IANA提出申请,而在内部的路由管理和报文传递方式与其他网络没有差异。
159+
160+
对于有Internet访问需求而内部又使用私有地址的网络,就要在组织的出口位置部署NAT网关,在报文离开私网进入Internet时,将源IP替换为公网地址,通常是出口设备的接口地址。一个对外的访问请求在到达目标以后,表现为由本组织出口设备发起,因此被请求的服务端可将响应由Internet发回出口网关。出口网关再将目的地址替换为私网的源主机地址,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。
161+
162+
163+
虽然实际过程远比这个复杂,但上面的描述概括了NAT处理报文的几个关键特点:
164+
165+
- 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;
166+
- 网络访问只能先由私网侧发起,公网无法主动访问私网主机;
167+
- NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;
168+
- NAT网关的存在对通信双方是保持透明的;
169+
- NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。
170+
171+
NAT最典型的应用场景就如同图2描述的,一个组织网络,在出口位置部署NAT网关,所有对公网的访问表现为一台主机。这就是所谓的一对多模型。这种方式下,出口设备只占用一个由Internet服务提供商分配的公网IP地址。面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要NAT设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如TCP或UDP端口号。这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式。
172+
173+
174+
更多P2P技术的原理可见:
175+
176+
- [P2P技术详解(一):NAT详解——详细原理、P2P简介](http://www.52im.net/thread-50-1-1.html)
177+
- [P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解](http://www.52im.net/thread-542-1-1.html)
178+
- [P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)](http://www.52im.net/thread-2872-1-1.html)
179+
- [P2P技术详解(四):P2P技术之STUN、TURN、ICE详解](http://www.52im.net/thread-557-1-1.html)
180+
181+
143182
---
144183

145184
- 邮箱 :charon.chui@gmail.com

VideoDevelopment/播放器性能优化.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050

5151
#### Http DNS
5252

53+
有关DNS相关可参考[DNS及HTTPDNS](https://github.com/CharonChui/AndroidNote/blob/master/VideoDevelopment/DNS%E5%8F%8AHTTPDNS.md)
5354
IP竞速
5455

5556
DNS解析加快,通常,DNS解析,意味着要把一个域名为xxx.com解析成ip过程,平时请求网页,网络差,就会打开网页半天。
@@ -67,7 +68,9 @@ DNS解析加快,通常,DNS解析,意味着要把一个域名为xxx.com解
6768

6869
优先保证封面图等信息完成后再根据云控的当前缓冲的时长等信息来控制是否要启动预加载
6970

71+
#### PCDN
7072

73+
有关CDN相关可参考[CDN及PCDN](https://github.com/CharonChui/AndroidNote/blob/master/VideoDevelopment/CDN%E5%8F%8APCDN.md)
7174

7275

7376
---

0 commit comments

Comments
 (0)