JHHK

欢迎来到我的个人网站
行者常至 为者常成

22、补充

目录

快速开始

一、vpn

vpn客户端 + vpn服务端 + 隧道协议

隧道协议工作在传输层

作用
1、提高上网的安全性
2、保护公司内部资料
3、隐藏上网者的身份
4、突破网站的地域限制
5、突破网络封锁

访问公司内网(通过vpn技术,将自己作为公司内网的一个成员)

隐藏用户的ip地址

二、缓存

img

三、IPv6

用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进

主要的头信息:源IP地址 和 目标IP地址 还是都有的

VPN

一、VPN介绍

VPN(Virtual Private Network),译为:虚拟私人网络
它可以在公共网络上建立专用网络,进行加密通讯

VPN示意图一

img 使用VPN需要:VPN Client、VPN Server
安装VPN Client的客户端发送的数据会被加密发送到VPN Server,这就保证了在公网上传输的数据是加密的

如果我们从外网通过VPN访问公司的内网资源如何实现呢?
从图中可以看出 VPN Server 到 资源服务器 之间这段数据是没有加密的,
所以要想从外网访问公司的内网资源,将VPN Server架设在公司内部,这样就可以保证公司内网资源的安全

VPN示意图二

img

二、VPN作用

img

1、提高上网的安全性
VPN Client 与 VPN Server之间是加密传输的

2、保护公司内部资料
公司内部的资料设置为只能内部访问和VPN Server访问

3、隐藏上网者的身份
因为数据是加密的,数据在公网传输时,Hacker、ISP、Government并不知道发送者的身份和发送的内容

4、突破网站的地域限制
有些网站针对不同地区的用户展示不同的内容,或相同的商品在不同地区价格不同,比如这个网站在美国
如果我们想看该网站在日本的内容和价格,我们可以通过访问日本的VPN Server访问美国这个网站

5、突破网络封锁
因为有GFW(Great Firewall of China 中国长城防火墙)的限制(比如IP限制),有些网站在国内上不了
但有些VPN Server 是没有加入到限制名单的,我们可以通过购买这些VPN Server提供的服务来访问被限制的国外网站,科学上网

三、VPN与代理服务器的区别

我们发现VPN的作用跟代理服务器有些类似,那他们的区别是什么?

1、软件
VPN一般需要安装VPN客户端软件
代理不需要安装额外的软件

2、安全性
VPN默认会对数据进行加密
代理默认不会对数据进行加密(数据最终是否加密取决于使用的协议本身)

3、费用
一般情况下,VPN比代理贵

四、VPN的实现原理

VPN的实现原理是:使用了隧道协议(Tunneling Protocol)

常见的VPN隧道协议有
PPTP(Point to Point Tunneling Protocol):点对点隧道协议
L2TP(Layer Two Tunneling Protocol):第二层隧道协议
IPsec(Internet Protocol Security):互联网安全协议
SSL VPN(如OpenVPN)

这些协议是在哪一层起作用呢?
传输层。比如HTTP协议和HTTPS协议都可以使用VPN技术。

tcpdump

tcpdump是Linux平台的抓包分析工具,Windows版本是WinDump

使用手册
https://www.tcpdump.org/manpages/tcpdump.1.html

不错的教程
https://danielmiessler.com/study/tcpdump/

cache

一、介绍

Cache的发音跟Cash(现金)一样 :美 /kæʃ/

1、缓存的简单逻辑

img

浏览器向服务器请求资源
无缓存:服务器响应,200 OK,资源缓存到本地
有缓存:使用本地缓存

实际上,HTTP的缓存机制远远比上图的流程要复杂
通常会缓存的情况是:GET请求 + 静态资源(比如HTML、CSS、JS、图片等)
Ctrl + F5:可以强制刷新缓存

2、缓存的存储

Memory Cache:内存缓存
Dist Cache:磁盘缓存
img

二、缓存 - 响应头

1、Pragma:作用类似于Cache-Control,HTTP/1.0的产物

2、Expires:缓存的过期时间(GMT格式时间),HTTP/1.0的产物

3、Cache-Control:设置缓存策略
✓ no-storage:不缓存数据到本地
✓ public:允许用户、代理服务器缓存数据到本地
✓ private:只允许用户缓存数据到本地
✓ max-age:缓存的有效时间(多长时间不过期),单位秒
✓ no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存

img

优先级:Pragma > Cache-Control > Expires

4、Last-Modified:资源的最后一次修改时间

5、ETag:资源的唯一标识(根据文件内容计算出来的摘要值)
优先级:ETag > Last-Modified

三、缓存 - 请求头

1、

If-None-Match
如果上一次的响应头中有ETag,就会将ETag的值作为请求头的值
如果服务器发现资源的最新摘要值跟If-None-Match不匹配,就会返回新的资源(200 OK)
否则,就不会返回资源的具体数据(304 Not Modified)

If-Modified-Since
如果上一次的响应头中没有ETag,有Last-Modified,就会将Last-Modified的值作为请求头的值
如果服务器发现资源的最后一次修改时间晚于If-Modified-Since,就会返回新的资源(200 OK)
否则,就不会返回资源的具体数据(304 Not Modified)

2、

Last-Modified的缺陷
只能精确到秒级别,如果资源在1秒内被修改了,客户端将无法获取最新的资源数据
如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化
会导致相同数据重复传输,没有使用到缓存

ETag可以办到
只要资源的内容没有变化,就不会重复传输资源数据
只要资源的内容发生了变化,就会返回最新的资源数据给客户端

四、缓存的使用流程图

img

IPv6

一、IPv6

IPv6(Internet Protocol version 6),译为:网际协议第6版
用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进
然而长期以来IPv4在互联网流量中仍占据主要地位,IPv6的使用增长缓慢
在2019年12月,通过IPv6使用Google服务的用户百分率首次超过30%
✓ 因为需要设备、操作系统内核升级支持IPv6

IPv6采用128位的地址,而IPv4使用的是32位
支持2^128(约3.4 ∗ 10^38 )个地址
就以地球人口70亿人计算,每人平均可分得约4.86 ∗ 10^28个IPv6地址

二、IPv6地址格式

1、
IPv6地址为128bit,每16bit一组,共8组
每组以冒号“:”隔开,每组以4位十六进制方式表示
例如2001:0db8:86a3:08d3:1319:8a2e:0370:7344

2、
类似于IPv4的点分十进制,同样也存在点分十六进制的写法
2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4

3、
每组前面连续的0可以省略。下面的IPv6地址是等价的
2001:0db8:02de:0000:0000:0000:0000:0e13
2001:db8:2de:0:0:0:0:e13

4、
可以用双冒号“::”表示一组0或多组连续的0,但只能出现一次。下面的IPv6地址是等价的
2001:db8:2de:0:0:0:0:e13
2001:db8:2de::e13

5、
2001::25de::cade是非法的,因为双冒号出现了两次,会造成歧义
2001:0000:0000:0000:0000:25de:0000:cade
2001:0000:25de:0000:0000:0000:0000:cade

6、
::1是本地环回地址(0:0:0:0:0:0:0:1)

三、IPv6 - 首部格式

img

有40字节的固定首部

img

Version(占4bit,0110):版本号

Traffic Class(占8bit):交通类别
指示数据包的类别或优先级,可以帮助路由器根据数据包的优先级处理流量
如果路由器发生拥塞,则优先级最低的数据包将被丢弃

Payload Length(占16bit):有效负载长度
最大值65535字节
包括了扩展头部、上层(传输层)数据的长度

Hop Limit(占8bit):跳数限制
与IPv4数据包中的TTL相同

Source Address(占128bit):源IPv6地址
Destination Address(占128bit):目的IPv6地址

Flow Label(占20bit):流标签
指示数据包属于哪个特定序列(流)
用数据包的源地址、目的地址、流标签标识一个流

四、IPv6 - 扩展头部

img

Next Header(占8bit):下一个头部
指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如TCP、UDP、ICMPv6)

img

即时通讯

一、介绍

即时通信(Instant Messaging,简称IM),平时用的QQ、微信,都属于典型的IM应用

国内的IM开发者社区
http://www.52im.net/

IM云服务
网易云信、腾讯云、环信等 ◼ 常用的协议
XMPP、MQTT、自定义协议

二、XMPP

XMPP(Extensible Messaging and Presence Protocol)
译为:可扩展消息与存在协议,前身是Jabber
基于TCP,默认端口5222、5269

特点
使用XML格式进行传输,体积较大
比较成熟的IM协议,开发者接入方便

三、MQTT

MQTT(Message Queuing Telemetry Transport),译为:消息队列遥测传输
基于TCP,默认端口1883、8883(带SSL/TLS)

特点
开销很小,以降低网络流量,信息冗余远小于XMPP
不是专门为IM设计的协议,很多功能需要自己实现
很多人认为MQTT是最适合物联网(IoT,Internet of Things)的网络协议

img

发布者:客户端
代理:服务器
订阅者:客户端

流媒体

流媒体(Streaming Media),又叫流式媒体
是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术
此技术使得资料数据包得以像流水一样发送,不使用此技术,就必须在使用前下载整个媒体文件

RTP(Real-Time Transport Protocol),译为:实时传输协议
参考:RFC 3550、RFC 3551,基于UDP

RTCP(Real-Time Transport Control Protocol),译为:实时传输控制协议
参考:RFC 3550,基于UDP,使用RTP的下一个端口

RTSP(Real-Time Streaming Protocol),译为:实时流协议,参考:RFC 7820
基于TCP、UDP的554端口

RTMP(Real-Time Messaging Protocol),译为:实时消息传输协议,由Adobe公司出品
默认基于TCP的1935端口

HLS(HTTP Live Streaming),基于HTTP的流媒体网络传输协议,苹果公司出品,参考:RFC 8216


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.