Http长连接

1.Http协议规定,请求从客户端发出,最后服务器响应请求并返回;

2.Http协议基于TCP协议,所以Http的长链接和短链接实际上是TCP的长链接和短链接;

3.TCP连接
当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的。
三次握手示意图:
Http长连接_第1张图片

四次握手示意图:
Http长连接_第2张图片

3.长连接 vs 短连接
短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接;
长连接:客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;
HTTP/1.0中,默认使用的是短连接;
HTTP/1.1起,默认使用长连接;
使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive 

Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间

移动端如何稳定的维持长连接是一件复杂的事情,客户端通过定时发送心跳信号(Heartbeat)以维持与服务端的长连接,但是,如果心跳的频率太频繁,移动设备耗电增加,心跳间隔太久又可能使得连接被断开。并且普遍认为移动设备处于一个多变的网络环境中,WIFI,2G,4G切换,基站切换都会引起网络变动,在不同网络环境下的心跳频率,与网络变动的重连动作,都需要大量的数据统计分析总结出来。

这仅仅是客户端的难题,在如今移动应用动辄成百上千的用户量的情况下,如何维护如此多的长连接,如果应对大规模的消息下发以及后续针对下发消息的各种统计动作都是技术难点。

4.服务器向客户端发送消息(推送)
长连接 , 轮询等

参考01
参考02
参考03

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