http协议学习笔记(3)

为了解决HTTP传输延迟问题,HTTP1.1使用了持久化连接,持久化连接中,TCP连接默认都是激活的,在数据传输结束时,发送报文首部为Connection:close的报文 。但客户端和服务器都可以随时结束TCP连接,不是必须发送首部为Connectionclose的报文。

 

进行持续连接时,不是客户端与服务器进行持久连接,而是客户端与服务器分别与两者中间的代理进行持久连接,持久连接的首部Connection经过一级跳转之后就会被过滤掉。

 

一个客户端最多只能对两个服务器或代理发起持续连接

 

假如客户端有十一个请求要发送,前十个请求发送过去之后,会放在服务器的缓存区,而这时关闭连接的话,最后一个请求无法发送过来,就会清空缓存区的请求,十一个请求从新发送(因为TCP是可靠连接)

 

管道化连接。HTTP1.1允许在持续连接上可选的使用请求管道。就是在响应到达之前,把请求放在一个队列里,当上一个请求到达服务器时,这个请求开始发送

http协议学习笔记(3)_第1张图片

管道化连接的限制:

1、必须是在持续化连接中使用

2、客户端必须做好连接会随时中断的准备,随时准备重新发送请求

3、响应顺序必须与请求顺序一致

4、管道化连接中不能使用POST请求

 

 

关闭分为两种,一种是完全关闭,一种是半关闭,套接字调用close会完全关闭,调用shutdown会办关闭。

TCP两端都会各有一个输出与输入队列

完全关闭会将输入与输出都关闭,而半关闭可以单独关闭输出或输入,使用半关闭可以更好的避免一些错误,只关闭服务器端的输出信道是十分安全的,如果服务器的输入信道被关闭的话,客户端的请求没有全部发送完,会使已被发送且已经缓存的请求被清空。


你可能感兴趣的:(网络)