Http协议深入学习

1、Http底层竟然是TCP,用wireShark抓包get和post请求

get方式的报文发送格式:

响应格式:


post请求方式报文发送格式:


响应格式:


2、若Connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;

若connection 模式为keep-alive,则该连接会保持一段时间,在该时间内可以继续接收请求;
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用Keep-Alive;
http 1.1(1997年发明,till today)中默认启用Keep-Alive,如果加入"Connection: close ",才关闭。
目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep- Alive连接就看服务器设置情况
3、post:请求参数是在http请求体部分以key/value形式传输的,get是在地址后接参数,post是把参数放在了请求体里:


4、关于字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用。Content-Type的类型
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
application/javascript
application/pdf
application/zip
application/atom+xml
application/octet-stream 流文件格式上传
application/json json文件格式上传
application/x-www-form-urlencoded http普通的表单请求,请求体中只有参数没有文件

multipart/form-data mutipart格式的表单上传,请求体中既有参数也有文件 的multipart表单上传。

5、User-Agent:用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
6、一个TCP连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的。这就是Content-length字段的作用,声明本次回应的数据长度。
Content-Length: 3495
6、由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法。
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate

gzip是 GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种文件格式。
deflate是同时使用了 LZ77 算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。

7、http1.1客户端请求的头信息新增了Host字段,用来指定服务器的域名 

Host:192.168.0.126:8080



参考资料:
https://github.com/jeasonlzy/okhttp-OkGo/wiki/%E4%BC%A0%E5%8F%82%E4%B8%8E%E6%8A%93%E5%8C%85(%E5%BF%85%E7%9C%8B)
http://www.cnblogs.com/ranyonsue/p/5984001.html
http://www.ruanyifeng.com/blog/2016/08/http.html
https://zhuanlan.zhihu.com/p/24913080
http://a280606790.iteye.com/blog/1095085
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值