1、什么是長連接和短連接
長連接
長連接,也叫持久連接,在TCP層握手成功后,不立即斷開連接,並在此連接的基礎上進行多次消息(包括心跳)交互,直至連接的任意一方(客戶端OR服務端)主動斷開連接,此過程稱為一次完整的長連接。HTTP 1.1相對於1.0最重要的新特性就是引入了長連接。
短連接
短連接,顧名思義,與長連接的區別就是,客戶端收到服務端的響應后,
立刻發送FIN消息,主動釋放連接。也有服務端主動斷連的情況,凡是在一次消息交互(發請求-收響應)之后立刻斷開連接的情況都稱為短連接。
注:短連接是建立在TCP協議上的,有完整的握手揮手流程,區別於UDP協議。
2、如何快速區分當前連接使用的是長連接還是短連接
1.
凡是在一次完整的消息交互(發請求-收響應)之后,立刻斷開連接(有一方發送FIN消息)的情況都稱為短連接;
2.長連接的一個明顯特征是會有心跳消息(也有沒有心跳的情況),且一般心跳間隔都在30S或者1MIN左右,用wireshark抓包可以看到有規律的心跳消息交互(可能會存在毫秒級別的誤差)。
3、什么時候用長連接,短連接?
1、需要
頻繁交互的場景使用長連接,如即時通信工具(微信/QQ,QQ也有UDP),相反則使用短連接,比如普通的web網站,只有當瀏覽器發起請求時才會建立連接,服務器返回相應后,連接立即斷開。
2、
維持長連接會有一定的系統開銷,用戶量少不容易看出系統瓶頸,一旦用戶量上去了,就很有可能把服務器資源(內存/CPU/網卡)耗盡,所以使用需謹慎。