与TCP的区别
1、作用在不同的层次,TCP作用在网络层,http作用在应用层
2、TCP、UDP就像是高速公路上的卡车,他们携带的货物就像http
HTTP传输过程中的影响因素
1、带宽【固定时间内可传输的资料数量,现在的设备发展,这个影响较小】
2、延时,其中延时又分了三个方面
- 浏览器的阻塞:浏览器对同一个域名的有最大连接数的限制,如果超过会被阻塞
- DNS查询:必须要有IP才可以建立连接
- 建立连接:【HTTP是基于TCP的】每次连接都要经历三次握手。如果发送大文件,那么慢启动会造成长延迟。
典型案例:迁移海量小文件【主备集群之间增量同步】时,如果确保带宽足够,可以设置内核参数,禁止使用慢启动:
sysctl-w net.ipv4.tcp_slow_start_after_idle=0
或者尽量把大量小文件放在一个TCP连接中排队传输。避免每次发送时的慢启动以及三次握手
HTTP1.1的新特性
1、增加了更多关于缓存的变量,比如ETag/If-Not-Match等
2、带宽优化的处理:可以请求局部数据,用range关键字控制
3、错误通知:增加了24的状态码表示请求过程中的错误
- 409:资源冲突
- 410:资源被永久删除
4、Host头处理:虚拟主机发展,一个物理服务器可以存在多个虚拟主机,并且共享一个IP地址,所以HTTP1.1的请求和响应都支持Host头域,并且如果没有Host头域会报告一个错误(400 Bad Request)
5、长连接:在一个TCP连接上可以传输多个HTTP请求和响应,减少建立连接的延时。在HTTP1.1中默认开启Connection: keep-alive
https与http
- https需要CA证书
- https多了一层SSL/TLS,内容加密
- 连接方式不同
- https可以防止运营商劫持
SPDY
结构:基于Https 【HTTP-SPDY-SSL-TCP】
相比HTTP1.x的优化
- 多路复用——可以并发的在一个连接上请求数据【之前长连接需要一个请求回复之后才能继续发送请求】
- 请求优先级——防止关键请求被阻塞
- header压缩——减小包的大小和数量
- 基于https的加密协议——提高可靠性
- 服务端推送——当接收到客户端的请求之后,除了回复请求的资源之外,还会将客户端需要但是还没有发出请求的数据一起回复。比如:在访问页面时,客户端仅仅请求这个页面,在对页面进行渲染时,发现还有CSS或者js文件没有获取,那就会再次发送请求。但是服务端推送功能会在接收到页面请求的同时,将这一系列的文件一起发送。
HTTP2.0 【基于SPDY的升级】
-
与SPDY的区别
- HTTP2.0可以明文传输
- 头部压缩的算法不同
-
与HTTP1.X相比的新特性
- 内容:二进制格式——实现方便、健壮
- 多路复用:连接共享——低延迟
- header压缩
- 服务端推送