链接1:https://www.cnblogs.com/zhangshitong/p/6478721.html
链接2:https://zhuanlan.zhihu.com/p/27395037
先看链接1,能懂个大概,然后看链接2,链接1没讲明白的地方,链接2讲明白了。
1、http协议和tcp/ip协议的关系?
ip协议是网络层协议,主要任务是进行寻址和解决网络路由问题
tcp协议是传输层协议,主要是保证发送数据顺序,接受数据顺序一致,以及可靠的传输数据包。
http协议是应用层协议,http协议是无状态的,服务器不知道客户端是什么状态。
2、HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
短连接的操作步骤是:
建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
长连接的操作步骤是:
建立连接——数据传输…(保持连接)…数据传输——关闭连接
什么时候用长连接,短连接?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。