http协议
http协议
定义:
超文本传输协议,是一个规定了客户端和服务器端通信规格的请求-响应协议
特点:
无连接(传输完后断开连接),无状态(既是优点又是缺点,减少了网络开销),灵活(可用传输各类数据),简单(要访问某个资源时只需访问填写方式,地址),
缺点:
无状态:请求不会记录任何连接信息,没有记忆,就无法区分多个请求发起者身份是不是同一个客户端的,意味着如果后续处理需要前面的信息,则它必须重传,
这样可能导致每次连接传送的数据量增大
明文传输,不安全
队头阻塞
http报文
分为请求报文和响应报文
请求报文:由请求行
、请求头
、空行
、请求体
四部分组成
响应报文:由状态行
、响应头
、空行
、响应体
四部分组成
- 请求行:包含http方法,请求地址,http协议以及版本
- 请求头/响应头:就是一些key:value来告诉服务端我要哪些内容,要注意什么类型等,请求头/响应头每一个字段详解
- 空行:用来区分首部与实体,因为请求头都是key:value的格式,当解析遇到空行时,服务端就知道下一个不再是请求头部分,就该当作请求体来解析了
- 请求体:请求的参数
- 状态行:包含http协议及版本、数字状态码、状态码英文名称
- 响应体:服务端返回的数据
常见请求头字段
http的请求方法
get系列方法和post系列方法的区别
常见状态码
Http1.1
长连接:
http1.1
版本支持长连接,即请求头添加Connection: Keep-Alive
,使用Keep-Alive模式(又称持久连接,连接复用)建立一个TCP
连接后使客户端到服务端的连接持续有效,可以发送/接受多个
http
请求/响应,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接优点:
减少了tcp的请求次数即会减少了网络堵塞,减少了后续请求的响应时间,减少CPU及内存的使用,
支持管道化
的请求及响应模式管道化
管线化
是在同一个TCP连接里发一个请求后不必等其回来就可以继续发请求出去,这可以减少整体的响应时间,但是服务器还是会按照请求的顺序响应请求,
所以如果有许多请求,而前面的请求响应很慢,就产生一个著名的问题队头堵塞