http协议之长连接与短连接服务器,长连接&短连接

HTTP 协议与 TCP/IP 协议的关系

HTTP 协议是应用层的协议,而 TCP 协议是传输层的协议,IP 协议是网络层的协议。

IP 协议主要解决网络路由以及寻址等问题,而 TCP 协议主要解决如何在 IP 层之上如何更加可靠地进行数据包的传递,即在接收端收到发送端发出的所有包,并且顺序与发出顺序一致。

所以说 TCP 是可靠的,面向连接的协议。

HTTP 协议是无状态的

无状态是指 HTTP 对事务的处理没有记忆能力,服务端并不知道客户端的状态(也就是说,你现在打开一个网页,和你之前打开同一个服务器的网页之间,并没有任何的关系)。

HTTP 是无状态的面向连接的协议。(无状态并不是说明 HTTP 协议无法保存 TCP 连接,也不能代表 HTTP 使用的是 UDP 连接–无连接)

HTTP 的长连接和短连接HTTP/1.0 默认使用短连接

HTTP/1/1 默认使用长连接

短连接:例如浏览器每一次和服务器进行一次 HTTP 操作,就会建立一次连接,当任务结束的时候,该连接就会断开。

长连接:保持连接特性。每当一个网页打开,客户端和服务端用于 HTTP 数据传输的 TCP 连接将不会被关闭,如果客户端再次访问这个服务端,将会继续使用该 TCP 连接。

使用长连接的 HTTP 协议,会在响应头加上这个属性:1

Connection:keep-alive

Keep-Alive 不会永远保持连接,它会有一个失效时间,可以在服务器上进行设置。

而实现长连接的客户端和服务端都要能够支持长连接。

HTTP 的长连接和短连接的本质,其实就是 TCP 的长连接和短连接。

TCP 连接

当网络使用 TCP 的方式来进行网络连接的时候,在读写之前需要 server 和 client 之间建立起一个连接,当读写操作完成后,再去释放这个连接。

TCP 的连接需要三次握手,而释放需要四次挥手。

4fa6f4c45686d70e4137afc960c72dd8.png

1a8c296363a5fa0097bdbb529b7dc3c7.png

从上面的图可以看出,每一次连接都是很损耗资源和时间的。

TCP 的短连接

我们来模拟一下 TCP 的短连接。首先是 Client 向 Server 发送连接请求,Server 接收到请求后建立连接,此时 Client 向 Server 发送消息,Server 回应 Client,这就是一个读写操作完成了,此时两端都可以发起 close 请求,而一般是 Client 发起,因为一般 Server 不会回应完 Client 后立马关闭连接。

这就是短连接,每次连接只能进行一次读写操作。

TCP 的长连接

同样来模拟长连接。首先一样的 Client 会向 Server 发起连接请求,Server 接收到请求后建立连接。不一样的是,此时 Client 和 Server 进行一次读写操作后,两端都不会去主动发起 close 请求,即不会主动断开连接,这样后续的读写操作都会去使用到这个连接。

长连接和短连接的优缺点

长连接因为不用对此进行握手挥手等操作,所以可以省下很多的资源和时间。

但是,由于它的存活时间较长,如果遇到恶意破坏的连接时(在短时间内多个客户端发起连接请求,且这些连接都只是占用资源而已),那么这个服务器崩溃的概率就会增大。

这时的服务器应该采取一些措施来防止这样的情况发生,例如关闭一些长时间没有进行读写操作的连接,限制每一个客户端发起的连接数等。

短连接的优点显而易见,那就是易于管理,它所存在的连接都是有用的连接,不需要额外的控制手段。

但是其缺点也是很显然,当用户在频繁地发起请求的时候,将会在 TCP 的建立和关闭上浪费相当多的资源和时间。

对长连接和短连接的选择

长连接一般用于在操作频繁,点对点的通讯,而且连接数不能太多。

例如数据库的连接就可以使用长连接。

而像 Web 上的网页之类的操作就使用短连接。它适用于连接频繁的操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值