长连接与短连接的区别以及使用场景

来源:互联网 发布:数据集市 知乎 编辑:程序博客网 时间:2024/05/21 10:20
作者:郭无心
链接:https://www.zhihu.com/question/22677800/answer/63806275
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先介绍下短链接和长连接的区别:
短连接

连接->传输数据->关闭连接
比如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这种就可以认为是长连接。一般的网络游戏应用都是长连接
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 当学生压力大怎么办 高三学习不好怎么办 高考孩子焦虑症怎么办 孩子高三厌学怎么办 高三厌学家长怎么办 高中生学习压力大怎么办 孩子反应有点慢怎么办 小学计算总出错怎么办 孩子粗心丢分怎么办 总是粗心丢分怎么办 卷子落在教室了怎么办 孩子总是丢题怎么办 孩子老师落题怎么办 孩子做题不认真马虎怎么办 工作犯了大错怎么办 工作上总是出错怎么办 工作中总是出错怎么办 晚上睡觉容易惊醒怎么办 每天早上被吵醒怎么办 孩子好动不爱学习怎么办 自习课不写作业怎么办 不爱学习的小孩怎么办 一年级小孩不爱学习怎么办 小孩不听话不爱学习怎么办 父母犯错我们该怎么办 孩子学习不爱动脑筋怎么办 孩子考试太马虎怎么办 小孩做作业马虎怎么办 同学抄我作业怎么办 别人抄我答案怎么办 学生考试前紧张怎么办 科目一考试紧张怎么办 1年级不认真学习怎么办 学生考试时紧张怎么办 小朋友不写作业怎么办 面对作业多应该怎么办 小学学生作业多怎么办 二年级学生马虎怎么办 孩子做数学题粗心怎么办 小孩拉的屎很粗怎么办 生地会考没及格怎么办