http长连接

1、http/tcp/ip
http协议:应用层协议
tcp协议:传输层协议,主要解决在ip层之上进行可靠的传递数据包的问题。tcp有可靠面向连接的特点。
ip协议:网络层协议,主要解决网络路由和寻址问题。

2、http长短连接
http长短连接的本质是tcp的长短链接。http/1.0默认使用的是短连接。http/1.1起,默认使用长连接。使用长连接的http协议,会在响应头加入代码:Connection:keep-alive。使用长连接的情况下,客户端和服务端之间传输http数据的tcp连接不会关闭,客户端多次访问服务器网页时,会使用同一条tcp连接。Keep-Alive不会永久保持连接,有一个保持时间,可以在服务端进行设置。实现长连接需要客户端和服务端都支持长连接。

3、http无状态和长连接的关系
两者之间没有关系,无状态不代表http不能保持tcp连接。http是无状态面向连接的应用层协议。

4、tcp的3次握手
tcp通过3次握手建立连接。第三次握手存在的意义是什么?当客户端第一次发送给服务端的请求存在滞延时,客户端会以为服务端没收到请求消息,会再次发送请求,而此时服务端已经收到前一次请求,并会返回确认信息,但客户端认为没有发送该请求,会忽略掉,但服务端会一直等待客户端的响应,会出现半连接的问题。为了规避这个问题,就引入了第三次握手。

5、tcp的4次握手
tcp使用4次握手来断开tcp连接。当客户端向服务端发送FIN时,可以关闭客户端到服务端的连接,服务端并对消息进行确认。同理,服务端向客户端发送FIN时,可以关闭服务端到客户端的连接,客户端对消息进行确认。总共四次握手。

6、iis对长连接的支持
iis默认开启长连接。关闭需要取消“保持HTTP连接”。取消后,响应头会带上代码:Connection: close。
http长连接_第1张图片
使用iis时,开启“保持http连接”,但是在响应头中并不会出现代码:Connection:keep-alive。要想在响应头中出现该代码,需要给Connection随便改个名称才可以。
http长连接_第2张图片

你可能感兴趣的:(TCP/IP,http,IIS)