图片来源图解HTTP
每次请求,都要建立连接,需要三步握手和四步挥手
能不能改进一下,三步握手建立连接之后,后面可以发多个请求,等没请求可发了最后再四步挥手断开连接呢?
改进1:连接可以复用。一次连接,多个请求响应(对应多个资源)
改进2:增加流水线(pipeline)操作。下一个请求可不用等上一个响应来之后再发送。(但响应到来的顺序不变 FIFO)
http1.1中默认开启keep-alive,通过http请求头设置“connection: close”关闭。 http1.0中keep-alive默认是关闭的,通过http请求头设置“connection: keep-alive”进行开启
依旧存在的问题:
设想:以报文字符串的形式来表示一个请求数据太过笼统了,可以把请求拆分成更小的单元,该复用的复用,甚至不用关心先后次序,甚至数据都不需要是字符串的形式
基于二进制流。 将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。 将 HTTP 消息分解为独立的帧,交错发送,然后在另一端重新组装。