HTTP的长连接与短连接介绍

在许多因特网应用程序中,客户与服务器在一个相当长的时间范围内通信,其中客户发出一系列的请求并且服务器对每个请求进行响应。依据应用程序以及该应用程序的使用方式,这一系列请求可以以规则的间隔周期性地一个接一个发出。当这种客户—服务器的交互是经由TCP进行时,应用程序的研发人员就应该做出决定,是对每个请求/响应经过各自单独的TCP连接发送,还是所有的请求/响应经由相同的TCP连接发送。前者就是短连接,后者就是长连接。HTTP既能使用短连接也能使用长连接,默认使用长连接。HTTP客户和服务器也能配置成使用短连接。

TCP、UDP

TCP:面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手断开连接
优点:在数据传输时,有确认、窗口、重传、拥塞控制机制,能保证数据正确性,较为可靠
缺点:速度相对慢一点,要求系统资源较多
UDP:面向无连接的通信协议,数据包括目的端口信息和源端口信息
优点:面向无连接,操作简单,要求系统资源较少,速度快,由于不需要连接,可进行广播发送
缺点:发送数据之前不需要与对方建立连接,接收到数据时也不需要发送确认信号,发送端不知道接收端是否正确接接收,不会重发,不可靠。

长连接

长连接也称持续性连接
连接->传输数据->保持连接 -> 传输数据-> …………->直到一方关闭连接,多是客户端关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。HTTP在短链接和长连接上的选择:HTTP是无状态的 ,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话 。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的HTTP1.1 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。 实现长连接要客户端和服务端都支持长连接。
长连接优缺点:
长连接可以省去很多的TCP建立、关闭的请求操作从而提高效率,对一些需要频繁发起请求的连接应当选择使用长连接。但是长连接是保持不断,随着时间的推移也存在达到服务器允许的上限的时候。所以任然需要采用一些措施来腾出空闲的空间。例如关闭一些长久未使用的长连接客户端连接等等。

短连接

短连接也称非持续性连接
连接->传输数据->关闭连接
比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。具体就是 浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用socket.close方法->client接收response报文->client最终会收到server端断开TCP连接的信号->client 端断开TCP连接,具体就是调用close方法。 也可以这样说:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。 因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。
短连接优缺点:
对于服务器而言,打开的短连接都是正在使用的连接,无需进行其他的控制,但对应着长连接的优点,如果客户端频繁的发起连接,会使得客户—服务器端两者之间在建立、关闭TCP连接上浪费大量时间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值