Http 随笔 1.0~1.1~2.0

0. 其实Http的水很深,一开始我当然是不相信的…

Http 1.1 新增~流支持 by segmentfault-henat9
springmvc demo Http 1.1 返回流 by oschina-文文1
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别 by cnblog- _浪潮之巅.☆
HTTP/2 相比 1.0 有哪些重大改进?by 来自逼乎一众大佬的补充
Http研究的一个完整专题 by cnblog-月下小魔王

Http抓包工具wireshark使用教程(用到再说了) by Jack_孟


Java端的具体实现

okhttp&httpClient对比 by 360doc-liang1234_

HttpClient的两种负载数据demo:UrlEncodedFormEntity 和 StringEntity by oschina-LeoXu
MultipartEntityBuilder文件类型数据负载demo by 纯净天空

深入理解OkHttp源码 by CSDN-xingfeng_coder
OkHttp中响应的toString()只能有一次 by 开发者知识库-m_xiaoer


HTTP 协议入门 by 阮总(还就那个虽迟但到)

计算机网络——HTTP的三次握手与四次挥手原理

1.http 1.0

因为连接是无状态的,每次请求/应答都需要创建一顿"握手"操作

2. http 1.1

keep-alive
	默认连接模式为keep-alive(新增的)
	基于网络层TCP协议实现的
		每隔一段时间ACK以等待客户端应答(有点“心跳”的意思)
	长连接下传输多个内容如何辨识各自的偏移不会紊乱?
		方式一:请求头属性Content-Length=>提前告知每个内容的长度
		方式二:请求头属性:Transfer-Encoding:chunk=>此时传输内容被划分成若干个chunk(包、块的意思)=>读取到内容中的标识位即为不同的内容了

3. http 2.0(基于 google SPDY协议,顺带一提,SPDY不是首字母缩写,仅是’speedy’缩写)

Http 2.0 消息格式(抽象版):
请添加图片描述

Http 2.0 消息格式(美图版):
请添加图片描述

多路复用
	允许多个请求/应答并行的共享一个TCP连接
	每个TCP连接是一个session,每个请求拥有一个stream id
		stream id允许配置之间的优先级、依赖关系
	实现方式:二进制分帧	
		在应用层(Http)和传输层(TCP)中加入分帧层
		将消息切分做一个一个“帧”(frame)单位来传输
		

服务端推送
	对于客户端的一个请求,响应多个应答
	支持缓存,即便是不同的页面之间
	需要手动开启
	同为长连接方案与websocket协议的关系?
		websocket提供了一套API,并且有自己的帧协议 
		websocket建立/释放连接借助了Http,数据传输却没有关系
		SPDY的长连接方案原意是优化web页面加载,websocket则强调双工通信的API

支持头部压缩	

Http 2.0 多路复用的一次连接过程:请添加图片描述

打开连接,握手x3
(x、y各自的序列号)

1.客户端 -> 服务端
	syn=x
2.服务端 -> 客户端
	ack=x+1(相当于消耗一个序列号)
	syn=y
3.客户端 -> 服务端
	ack=y+1

关闭连接,握手x4
(确认服务端关闭、给服务端返回响应的机会)

1.客户端 -> 服务端(半关闭:客户端不会再有数据推送)
	FIN
2.服务端 -> 客户端
	ACK
3.服务端 -> 客户端
	FIN
4.客户端 -> 服务端
	ACK
	客户端会等上一段时间(保证服务端正常关闭)

4. Https

请添加图片描述

成本
	需要CA证书,基本靠一手交费
传输
	Http明文、Https基于SSL/TLS加密后
端口
	Http 80,Https 443
防劫持
	Https支持防止运营商的劫持	

5. 不同版本迭代中的优化思路

不同于进程间的IO的性能因素,限制socketIO的性能因素:
	带宽
		可以理解做"网速",主要受通信设施的建设水平
			=>那么程序需要做的就是保证客户端(浏览器)的接收不要受到队列阻塞,最大程序利用好带宽
	延迟(从内到外,一步一步说)
		Http基于TCP,那么Http也将收到重复多余的“握手”、大请求时的慢启动的影响
			=>Http 2.0 支持的多路复用,可以减少重复的"握手"
			=>Http 2.0 支持的多路复用,可以减少连接数,进而缩短TCP的慢启动时间
		只要想请求服务,那么必将先过DNS查询,才能得知服务端IP(影响不大,可缓存DNS以优化)
		浏览器等客户端环境带来的、著名的 Head-of-line blocking
			=>绕过同源限制,搭建多个CDN
			=>Http 2.0 支持的多路复用,可以减少占用的连接数

其他需要解决的问题:
	向下兼容旧版本
		SPDY协议 处于Http之下,TCP、SSL/TLS之上(这部分语义保留)
		只是对Http 1.x的消息做了一次封装(frame)

HOL-blocking:
在这里插入图片描述

6. 遇到的问题

get方式的请求可以持有请求体,也就是说payload可以负载数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值