http协议属于应用层的协议,dns解析得到ip后,通过三次握手建立TCP连接,然后发送http请求,目前http基本上都是1.1版本,默认都是开启Keep-Alive,这样建立的TCP连接,可以在多次请求中复用。
http的报文主要包括三个部分:
(1)请求行
主要包括URL(例子:www.baidu.com),方法(GET/PUT/POST/DELETE),版本(http版本一般为1.1)等
GET和POST区别:
答:get和post都可以传递参数给服务器,但是get顾名思义就是去服务器获取一些信息,而post它需要主动告诉服务器一些信息,告诉服务器的信息一般会放在正文中。
get请求会将参数跟在URL后传递,而POST请求作为http消息的实体内容发给web服务器,当然,在ajax中,这种区别对用户是不可见的。
get对传输的数据是有大小限制的,通常不能大于2kb,而使用post方式传递的数据量要比GET方式大得多(理论上不受限制)
get请求的数据会被浏览器缓存起来,因此其他人可以从浏览器的历史记录中读取到这些数据,例如账号密码,在某种情况下,GET方式会带来严重的安全问题,而POST方式相对来说就可以避免这些问题。
POST与PUT的区别:
答:post和put都是要给传给服务器东西的方法,但是post往往用来创建资源,而put往往是用来修改一个资源的。
(2)首部字段
首部是key value,通过冒号分割,比较常见的字段是
content-type:表示正文的格式,一般是json。
(3)正文实体
一般json格式
http返回的报文也是有格式的。
(1)状态行
200:成功
404:找不到资源
.......
(2)首部
也是key value
Retry-After:告诉客户端应该在多久再次尝试一下
Content-Type:一般是json
(3)实体
一.http1.0 与http2.0的区别
a.http1.0在应用层以纯文本的形式进行通信,每次通信都需要带完整的HTTP的头,效率比较低下,http2.0为了解决这些问题,http2.0对http的头进行了一定的压缩,将原来每次都要携带的大量的key value在两端建立一个索引,对相同的头只发送索引表中的索引.
b.http2.0将所有的传输信息分割成更小的消息和帧,如常见的帧有Header帧,Data帧。