短链接和长连接

短链接和长连接

首先引见下短链接和长衔接的区别:

短衔接

衔接->传输数据->关闭衔接 

比方HTTP是无状态的的短链接,阅读器和效劳器每停止一次HTTP操作,就树立一次衔接,但任务完毕就中缀衔接。 

详细就是   阅读器client发起并树立TCP衔接 -> client发送HttpRequest报文 -> server接纳到报文->server handle并发送HttpResponse报文给前端,发送终了之后立刻调用socket.close办法
->client接纳response报文->client最终会收到server端断开TCP衔接的信号->client 端断开TCP衔接,详细就是调用close办法。


也能够这样说:短衔接是指SOCKET衔接后,发送接纳完数据后马上断开衔接。 

由于衔接后接纳了数据就断开了,所以每次数据承受处置不会有联络。 这也是HTTP协议无状态的缘由之一。


长衔接
衔接->传输数据->坚持衔接 -> 传输数据-> ...........->直到一方关闭衔接,多是客户端关闭衔接。 

长衔接指树立SOCKET衔接后不论能否运用都坚持衔接,但平安性较差。


HTTP在短链接和长衔接上的选择:


HTTP是无状态的 ,也就是说,阅读器和效劳器每停止一次HTTP操作,就树立一次衔接,但任务完毕就中缀衔接。假如客户端阅读器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当阅读器每遇到这样一个Web资源,就会树立一个HTTP会话


HTTP1.1和HTTP1.0相比拟而言,最大的区别就是增加了耐久衔接支持(貌似最新的HTTP1.1 能够显现的指定 keep-alive),但还是无状态的,或者说是不能够信任的。 
假如阅读器或者效劳器在其头信息参加了这行代码 Connection:keep-alive 
TCP衔接在发送后将依然坚持翻开状态,于是,阅读器能够继续经过相同的衔接发送恳求。坚持衔接俭省了为每个恳求树立新衔接所需的时间,还节约了带宽。 

完成长衔接要客户端和效劳端都支持长衔接。


什么时分用长衔接,短衔接?
长衔接多用于操作频繁,点对点的通讯,而且衔接数不能太多状况。每个TCP衔接都需求三步握手,这需求时间,假如每个操作都是先衔接,再操作的话那么处置速度会降低很多,所以每个操作完后都不时开,次处置时直接发送数据包就OK了,不用树立TCP衔接。例如:数据库的衔接用长衔接, 假如用短衔接频繁的通讯会形成socket错误,而且频繁的socket 创立也是对资源的糜费。


而像WEB网站的http效劳普通都用短链接,由于长衔接关于效劳端来说会消耗一定的资源,而像WEB网站这么频繁的成千上万以至上亿客户端的衔接用短衔接会更省一些资源,假如用长衔接,而且同时有成千上万的用户,假如每个用户都占用一个衔接的话,那不可思议吧。所以并发量大,但每个用户无需频繁操作状况下需用短连好。


总之,长衔接和短衔接的选择要视状况而定。


详细网络中的应用的话:

http 1.0普通就指短衔接,smtp,pop3,telnet这种就能够以为是长衔接。普通的网络游戏应用