名词解释
- 超文本传输协议(HTTP,HyperText Transfer Protocol)
- 传输控制协议(TCP,Transmission Control Protocol)
- 因特网协议(IP,Internet Protocol)
- 地址解析协议(ARP,Address Resolution Protocol)
- 一套标准/文档 (RFC,Request For Comments)-意即“请求注解”,
- 域名系统(DNS, Domain Name System)
- 安全套接层(SSL,Secure Socket Layer)
- 高级加密算法/对称加密 (AES,Advanced Encryption Standard)
- 非对称加密算法(RSA)
- 安全层传输协议(TLS,Transport Layer Security)
- 计算机网络模型OSI(Open Systems Interconnect)
- 内容分发网络(CDN,Content Delivery Network)
网络协议
根据ISO模型分为7层:
物理层、链路层、网络层、传输层、会话层、表示层、应用层
根据TCP/IP模型分为4层:
链路层(网络接口层)、网络层、传输层、应用层
IPv4
- IPv4的概念
IPv4地址是32位的地址,分为4个部分,每个部分由8位二进制组成,像我们看到的192.168.1.1是为了方便记忆转换成了十进制。最大的数字肯定也就是255了,比如:255.255.255.255 - IPv4的尴尬之处
随着互联网的日益发展的今天,IPv4面临枯竭已成不争的事实,共有2^32次方个
由于资源紧张,IP地址动态更换的。不同的人在不同的时间段共用一个IP,无法做到上网用户和IP地址一一对应。所以根据IP地址查一些信息自然也是存在缺陷的,由于数据量的庞大,各运营商只保留一段时间的上网日志,假如你前几年发表了一些言论,想根据IP来查询是谁发送的,就不能实现了。 - 升级位数,IPv6的出现
如果换成IPv6呢,这个问题就轻而易举的解决了,共有地址是2^128个,这样的话就不用共用了,为每个上网用户分配一个即可。就像我们身份证号一样,当然如果人口剧增,18位的身份证又满足不了,再升级就是了,换成36位的身份证号
DoS(DenialOfService)拒绝服务的缩写
一般用非正常手段造成合法的用户无法正常请求,一般有以下三种手段:
制造大流量网络数据,造成网络堵塞,使攻击主机无法与外界通信
反复高频的发出重复请求,使被攻击主机来不及处理其他请求
反复发送畸形数据从而引发系统错误分配大量系统资源,使主机处于挂起状态甚至死机
服务器很难区别何为正常请求,何为攻击请求
持久连接
在HTTP 协议的最初版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接,日后随着HTTP的发展,传输大文件或者展示大量图片,这种每次都要连接和断开,无疑增加了通信量的开销
在HTTP /1.1和部分HTTP/1.0 提出了TCP持久连接机制。最主要的特征就是,TCP连接之后,只要任何一端没有提出断开连接,则保持TCP连接状态
持久连接的好处是:减少了重复连接断开造成的额外开销,也相应减少了开销的时间,是的HTTP请求和相应可以更早的结束,显示速度也相应提高
在HTTP1.1中,所有的连接默认都是持久连接
HTTP的缺点
- 通信使用明文,内容可能被窃听
- 不验证通信方身份,可能被伪装
- 无法验证报文的完整性,有可能被篡改
这些问题不仅仅出现在HTTP,其他不加密的协议同样如此,
HTTPS(HTTP+SSL/TLS)
HTTPS 采用对称加密和非对称加密两种加密机制
- 首先来解决第一个问题:如何使得黑客纵然截取内容后也枉然?
使用对称加密解决
收发内容全程加密,使用同一个秘钥,发送前加密,接收后解密。这样的话,中间即便黑客获取到内容,也是两眼泪汪汪,白忙一场。因为内容是加密的
- 随之引发的第二个问题:如何把秘钥安全送达到对方手里
使用非对称加密解决
这个问题,让我们又回到了原点,把秘钥给另一方的过程中,黑客获取到了秘钥等于前面做的努力都白费了!如果能把秘钥安全送达,且不能篡改,那直接发送数据就行了,何必绕这么一大圈,鸡生蛋,蛋生鸡的问题。
使用公钥和私钥的来进行对传输的秘钥加密,但是过程中有一个小问题,怎么才能确认此公钥是真实有效官方发布的
- 呼之即来的第三个问题:如何证明公钥是真实有效的
CA机构腾空出世
是啊,老铁,咋整啊?这个时候,人们提出找一个权威机构做认证,即公钥发布之前先去认证,中间认证机构,其颁发的证书也就是我们常说的CA证书,CA机构申请给将要分发的公钥进行数字签名
数字签名证书的本质就是服务端的公钥+CA私钥加密的Hash值
当客户端收到该公钥数字证书后,会验证其有效性。大部分客户端都会预装CA机构的公钥,也就是CA公钥
最终把对称加密使用的秘钥,发送给客户端,从而进行加密解密。
让我们简单回顾一下整个流程:
1.为了通信内容的安全性,通过对称加密的方式对传输内容进行加密解密。
2.这其中有一个关键性的难题,怎么把秘钥安全的传输给客户端
3.这时候通过非对称加密的方式,即公钥和私钥,对第2步中的秘钥进行加密
4.可是这个时候又出现一个问题,怎么识别公钥是官方发布的,如果这个公钥是个冒牌货,客户端岂不是把银行卡号,密码全泄漏出去了,通过CA证书认证,公钥发布之前,先认证
5.客户端在一般都预装了CA机构的公钥,这样就会检验服务端的公钥,是否是官方发布。
6.有了3.4.5步的保证,第2步秘钥最终才能顺利到达彼岸,真是环环相扣
不忘初心,方得始终。真心不容易,大体的流程大概就是这样的
查看电脑中安装的证书:开始运行中输入certmgr.msc