网络编程总结-长连接短连接

长连接

特点

长连接意味着进行一次数据传输后,不关闭连接,长期保持连通状态。如果两个应用程序之间有新的数据需要传输,则直接复用这个连接,无需再建立一个新的连接。

 

优点:省去连接建立和关闭连接的开销

缺点:需要花费额外的精力来保持这个连接一直是可用的,因为网络抖动、服务器故障等都会导致这个连接不可用

 

保活措施:

  1. 利用 TCP 自身的保活(Keepalive)机制来实现,保活机制会定时发送探测报文来识别对方是否可达。一般的默认定时间隔是 2 小时,你可以根据自己的需要在操作系统层面去调整这个间隔,不管是 linux 还是 windows 系统。
  2. 上层应用主动的定时发送一个小数据包作为“心跳”,探测是否能成功送达到另外一端。 保活功能大多数情况下用于服务端探测客户端的场景,一旦识别客户端不可达,则断开连接,缓解服务端压力。

短连接

特点

短连接意味着每一次的数据传输都需要建立一个新的连接,用完再马上关闭它。下次再用的时候重新建立一个新的连接,如此反复。

 

优点:由于每次使用的连接都是新建的,所以基本上只要能够建立连接,数据就大概率能送达到对方。并且哪怕这次传输出现异常也不用担心影响后续新的数据传输,因为届时又是一个新的连接。

缺点:是每个连接都需要经过三次握手和四次握手的过程,耗时大大增加。

http长连接短连接

  • 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive

 

在一个HTTP/1.1连接中,可以发送多个Request,接收多个Response。

Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

 

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

 

websocket长连接

使用websocket可以建立一次连接,之后服务端和客户端可以互相发送数据

 

适用场景

短连接:适用于网页浏览等数据刷新频度较低的场景。

长连接:适用于客户端和服务端通信频繁的场景,例如聊天室,实时游戏等。

 

数据库连接:

使用长连接,避免频繁的进行建立连接和销毁连接,损失性能和增加响应时长

posted @ 2022-08-11 17:06  星光闪闪  阅读(63)  评论(0)    收藏  举报