1. http协议介绍
http,中文名:超文本传输协议。它是一个基于客户端/服务器模式的应用层协议,客户端主动发送http请求,服务端接收请求,并返回给客户端一个http响应结果。http协议严格规定了请求和响应的数据格式,只要客户端和服务端都遵守http协议,就能看懂对方发送的信息。
http协议主要特点如下:
- 默认端口号:80
- 支持客户/服务器模式
- 简单快速:客户向服务端请求服务时,只需传送请求方式和路径。
- 灵活:允许传输任意类型的数据对象。由Content-Type加以标记。
- 无连接:每次响应一个请求,响应完成以后就断开连接。
- 无状态:服务器不保存浏览器的任何信息。每次提交的请求之间没有关联
关于无连接需要说明一下
这里的连接指的的是TCP的连接,然而从http/1.0开始,持久性连接被提了出来,通过设置Connection:keep-alive(需要客户端和服务端都设置这个值),使客户端到服务器端的连接持续有效(这个有效时间服务端可以设置)。
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用Keep-Alive;http 1.1中默认启用Keep-Alive,如果加入"Connection: close ",才关闭。目前大部分浏览器都是用http1.1协议,也就是说默认都会发起Keep-Alive的连接请求了,所以是否能完成一个完整的Keep- Alive连接就看服务器设置情况。
2. http请求格式
http请求格式.jpghttp请求由三部分组成
- 请求行,请求方法:get/post等;请求地址:url;请求协议:http/1.1
- 请求头,描述了客户端相关信息
- 请求体,post方式提交的表单数据
3. http响应格式
http响应格式.jpghttp响应由三部分组成
- 响应行,响应协议:http/1.1;响应码:200;响应描述:OK
- 响应头,描述服务端相关信息
- 响应体,html或者json格式的数据
4. http请求响应的整个过程
我们直接借用一幅图来描述
http请求响应过程.png
对于安卓来说,安卓客户端就充当了图中浏览器的角色
5. https
http+ssl=https,即是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,默认端口号443
ssl证书包括
- 由安卓认可的证书颁发机构颁发的证书(默认被信任,不会出现安全提示)
- 非安卓认可机构颁发的证书
- 自签名的证书
在okhttp中,第一种证书,框架已经帮我们做了校验,后两种,需要我们自己在代码中添加对证书的信任,否则会报错。
网友评论