TCP协议保证可靠传输
校验和
超时重传
流量控制
拥塞控制
Http
? Http:超文本传输协议,一种用于分布式,协作式和超媒体信息系统的应用层协议.简单来说就是一种发布和接收HTML页面的方法
http发展史
1991年 http/0.9
1996年 http/1.0
1999年 http/1.1
2015年 http/2.0
http基本优化
影响一个http网络请求的因素主要有两个:带宽和延迟
**带宽:**现在网络建设已经非常出色,不再担心带宽影响网速
延迟:
- 浏览器阻塞:浏览器对于同一个域名,连接数有限,超过浏览器最大连接数限制,后续请求就会被阻塞
- DNS查询:浏览器需要知道目标服务器的IP才能建立连接,将域名解析为IP的这个系统成为DNS,通常利用DNS缓存结果来达到减少这个时间的目的
- 建立连接:http是基于tcp协议的,浏览器最快也要经历三次握手后才能捎带http请求报文,达到真正建立连接,但是这些连接无法复用会导致每次请求都得经历三次握手和慢启动,三次握手在高延迟情况下影响较为明显,慢启动则对文件类请求影响较大
http1.0和http1.1的区别
- 缓存处理:在http1.0中主要使用header里的Expires,If-Modified-Since来作为缓存判断标准;http1.1则引进了更多的缓存控制策略(If-Match,If-None-Match)
- 带宽及网络连接的使用:http 1.0中存在浪费带宽的现象,http1.1在请求头引入了range头域,他允许只请求某个部分,返回码是206,方便开发者自由选择以便充分利用带宽和连接
- 错误通知管理:http1.1新增了24个错误状态码,如409 表示请求的资源和资源的当前状态冲突;410表示服务器上某个资源被永久性删除
- Host头处理:在http1.0中认为每台服务器都绑定一个唯一的IP地址,因此在请求消息中的url没有传递主机名;http1.1请求和相应消息都支持Host头域,且请求消息中没有host头域会报
400 Bad Request - 长链接:http1.1支持长链接和请求的流水线处理;在一个tcp连接上可以传送多个http请求和响应,减少建立和关闭连接的消耗和延迟,在http1.1默认开启
connection:keep-alive
http2.0和http1.x相比的新特性
- 新的二进制格式
- 多路复用:一个连接上一个request对于一个id,一个连接可以有多个request并行执行
- header压缩:http2.0采用encoder减少需要传输的header大小
- 服务器推送:server push
http2.0的多路复用和http1.x的长连接区别
http1.1若干请求队列串行化单线程执行
http2.0 多个请求在一个连接上并行执行
Https
? Https:超文本传输安全协议,一种通过计算机网络进行安全通信的传输协议.Https经由Http进行通信,但通过了SSL/TLS进行数据包加密,开发Https的主要目的,是提供网站服务器器的身份验证,保护数据交换的隐私和完整性.
https工作流程:
1.客户端向服务器端发起https请求,连接到443端口
2.服务器端有一个密钥对(公钥和私钥),用来进行非对称加密,服务器端一直保存这私钥,不能泄漏;公钥发送出去
3.服务器端将公钥发送给客户端
4.客户端接收到公钥之后,检查其合法性,若公钥不合格,则传输中断(提示证书不合格);公钥合格,则客户端生成一个客户端密钥,然后用服务器的公钥对客户端密钥进行非对称加密成密文,至此,https的第一次http请求结束
5.客户端发起https的第二个http请求,将加密后的客户端密钥发送给服务器
6.服务器接收到客户端发送来的密文之后会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文
7.然后服务端将加密后的密文发给客户端
8.客户端接收到服务器发来的密文,用客户端密钥进行对称解密,得到服务器发送的数据,这样https的第二个http请求结束,整个https传输结束.
Http和Https的区别
1.Http数据是未加密的,明文传输,安全性差;Https(Http+SSL)数据加密,安全
2.使用Https需要到CA申请证书
3.http页面相应速度比https快,主要是因为Http使用tcp三次握手建立连接,客户端和服务器需要交换3个包,而https除了tcp的3个包,还要加上SSL的9个包,一共12个包
4.http和https连接方式完全不同,端口号 http是80;https是443
5.https就是构建在SSL和TLS之上的http协议,需要消耗的资源更多
|