Http协议
一、一些基本概念
(1)协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
(2)Http协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。
2、URI和URL的区别:
(1)URI:是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。 如:file://a:1234/b/c/d.txt
URI三个组成部分:1)访问资源的命名机制。2)存放资源的主机名。3)资源自身的名称,由路径表示,着重强调于资源。
(2)URL:是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。 如:www.baidu.com
URL的三个组成部分:1)协议。2)存有该资源的主机IP地址。3)主机资源的具体地址。
二、HTTP协议的特点
(1)简单快速
(2)无连接
(3)无状态
三、request/response原理
打开浏览器,在地址栏输入URL,然后我们就看到了网页。原理是怎样的呢?
实际上我们输入URL后,我们的浏览器给Web服务器发送了一个Request, Web服务器接到Request后进行处理,生成相应的Response,然后发送给浏览器, 浏览器解析Response中的HTML,这样我们就看到了网页
我们的Request 有可能是经过了代理服务器,最后才到达Web服务器的。
过程如下图所示
代理服务器就是网络信息的中转站,有什么功能呢?
1. 提高访问速度, 大多数的代理服务器都有缓存功能。
2. 突破限制, 也就是翻墙了
3. 隐藏身份。
四、http协议中比较容易混淆的知识点
1、http1.1/http1.0的区别
1)http1.0产生的背景
超文本传输协议伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层。
2)http1.0所做的优化
带宽:现阶段已经解决
延迟:1.浏览器阻塞:浏览器对于同一个域名,同时只能有4个连接
2.DNS查询:浏览器需要知道目标服务器的IP才能建立连接
3.建立连接:三次握手
3)http1.1/http1.0的具体区别
1.缓存处理
2.带宽优化及网络连接的使用
3.Host头处理
4.长连接
4)http1.1/http1.0存在的问题
a.HTTP1.x在传输数据时,每次都需要重新建立连接,无疑增加了大量的延迟时间
b.HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份
c.HTTP1.x在使用时,header里携带的内容过大,在一定程度上增加了传输的成本
d.虽然HTTP1.x支持了keep-alive来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力
2.get/post方法的区别
1)提交的数据
2)提交的数据大小是否有限制
3)取得变量的值Request.QueryString vs Request.From
4)安全问题
3.cookie和session的区别
Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
发送过程
工作原理
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。
工作原理
3)区别
1.存放位置不同
2.存取方式的不同
3.安全性(隐私策略)的不同
4.有效期不同
5.对服务器造成的压力不同
HTTPS
1、HTTPS
HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL/TLS)上的常规HTTP协议。通过在TCP和HTTP之间加入TLS(Transport Layer Security)来加密 。(注: TLS为新版本的SSL)
2、SSL/TLS协议
SSL协议,是一种安全传输协议,TSL是SSL v3.0的升级版
3.HTTPS传输速度
1)通信慢
2)SSL必须进行加密处理
4.TLS/SSL握手
1)密码学原理
对称加密:加密数据用的秘钥,跟解密数据用的秘钥是一样的
不对称加密:私有秘钥:一方保管 公有秘钥:双方公有
2)数字证书
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字。
数字证书的颁发过程:
总结:https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书等技术进行客户端与服务端的数据加密传输,最终达到保证整个通信的安全性。
TCP/IP网络模型
一、物理层/实体层
二、链接层
1、链接层的协议
以太网协议规定了电信号的分组方式
2、mac地址
3、广播
三、网络层(主机到主机)
1、网络层的作用:
背景:以太网采用广播方式发送数据包
Todo:能够区分哪些MAC地址属于同一个子网络
作用:使得我们能够区分不同的计算机是否属于同一个子网络
2、ip协议 : 规定网络地址的协议
3、ip数据包:根据IP协议发送的数据
4、arp协议
Todo:需要一种机制,能够从IP地址得到MAC地址
核心原理:ARP协议也是发出一个数据包,它所在子网络的每一台主机,都会收到这个数据包
四、传输层(端口到端口)
Todo:当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容
传输层的功能:
五、应用层
作用:规定应用程序的数据格式
DNS
一、什么是DNS
它所提供的服务是用来将主机名和域名转换为IP地址的工作。我们知道域名和IP地址是一一对应的关系,但是多个域名可以对应同一个IP地址。
二、DNS查询过程
递归:DNS服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他DNS服务器,以完全解析该名称,并随后将应答返回至客户机
迭代:客户机自己也可尝试联系其他的DNS服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询
1.在浏览器中输入域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系
2、如果hosts里没有映射关系,查找本地DNS解析器缓存。
3、如果还是没有,首先会找TCP/IP参数中设置的首选DNS服务器。
HTTPS中的加密算法相关
一、**
**是一种参数,它是在使用密码cipher算法工程中输入的参数。同一个明文在相同的密码算法和不同的**计算下会产生不同的密文
1、**:对称
又称为共享**加密,对称**在加密和解密的过程中使用的**是相同的,常见的对称加密算法有DES、3DES、AES、RC5、RC6。
优点是计算速度快,缺点是**需要在通讯的两端共享
2、**:不对称
又称为公开**加密。服务端会生成一对**,一个私钥保存在服务端,仅自己知道,另一个是公钥,公钥可以自由发布供任何人使用。
与对称**加密相比,非对称加密无需在客户端和服务端之间共享**,只要私钥不发给任何用户,即使公钥在网上被截获,也无法被解密,仅有被窃取的公钥是没有任何用处的。常见的非对称加密有 RSA
非对称加解密的过程:
- 服务端生成配对的公钥和私钥
- 私钥保存在服务端,公钥发送给客户端
- 客户端使用公钥加密明文传输给服务端
- 服务端使用私钥解密密文得到明文
思考一个问题:数据在浏览器和服务器之间传输时,有可能在传输过程中被冒充的盗贼把内容替换了,那么如何保证数据是真实服务器发送的而不被调包呢,同时如何保证传输的数据没有被人篡改呢?
二、数字签名
数字签名就是用于验证传输的内容是不是真实服务器发送的数据,发送的数据有没有被篡改过,它就干这两件事,是非对称加密的一种应用场景。不过他是反过来用私钥来加密,通过与之配对的公钥来解密。
服务端把报文经过 Hash 处理后生成摘要信息,摘要信息使用私钥加密之后就生成签名,服务器把签名连同报文一起发送给客户端。
客户端接收到数据后,把签名提取出来用公钥(public-key)解密,如果能正常的解密出来 Digest2,那么就能确认是对方发的。
客户端把报文 Tex t提取出来做同样的 Hash 处理,得到的摘要信息 Digest1,再与之前解密出来的 Digist2 对比,如果两者相等,就表示内容没有被篡改,否则内容就是被人改过了。因为只要文本内容哪怕有任何一点点改动都会 Hash 出一个完全不一样的摘要信息出来。
二、数字证书
那么如何保证你现在使用的公钥就是真实服务器发给你的呢?
数字证书简称 CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被大家(浏览器)所认可的。