一、什么是HTTP协议
HTTP协议(Hyper Text Transfer Protocol)翻译过来是超文本传输协议,也是一种restful风格的协议,在web开发和APP接口开发都很常用。
HTTP协议是应用层协议,同样是应用层协议的还有FTP,MQTT,SMAP等,但总结来说都是基于TCP/IP之上传输,应用层的协议可以理解为根据不同的协议传输不同格式的字节。
比如以下是一个HTTP协议报文
那么在应用层的报文就是
01001000 01010100 01010100 01010000 ...
翻译过来就是 HTTP ...,应为01001000对应的就是H,01010100对应的是T
所以http请求与响应可以理解为是字符串的交流,相对来说,HTTP是一种比较重的协议,所以在一些网络受限的情况下不建议使用该协议,可以根据需求设计出更符合业务的
协议,可以比较好的减轻对带宽的压力。
二、HTTP的工作流程
1.通过DNS服务器将域名解析为IP地址
(1)查找本机hosts文件的是否有该域名的映射关系,有则直接使用该映射关系对应的ip地址
(2)从DNS缓存中查找该域名的映射关系,有则直接使用
(3)当缓存没有该域名的映射关系,则需要访问外网的DNS服务器来解析域名
2.知道目标服务器的ip地址和域名后就可以进行tcp的三次握手建立连接
3.建立连接之后根据需求在应用层封装http请求报文发送到目的服务器
4.目的服务器收到请求之后进行业务处理,然后返回响应报文
三、HTTP协议常用请求头和响应头
1.常用请求头
Accept-Charset 用于指定客户端接受的字符集
Accept-Encoding 可接受的内容编码
Keep-Alive 是否关闭连接
Content-Type 这是在开发中经常使用的,用于定义媒体类型,即你的请求体内容是如何存放的,在开发APP接口时,需要在接口文档注明媒体类型,否则APP可能会发送服务器不接受的媒体类型
2.常用响应头
Content-Type 告诉服务端响应内容的类型,客户端可以根据类型进行不同解析,比如客户端浏览器,那么常用的就是 Content-Type:text/html:Charset=UTF-8