网络名词拾遗--part2
关于所谓的连接上限
先要明白服务端和客户端的交互逻辑:
- 服务端创建socket
- 与提供对外服务的port端口绑定
- 开始监听
- 客户端向这个端口提出请求
- 服务端接收到这个请求后创建一个新的socket
- 基于这个新的socket来进行数据交互
从这个流程可以知道,真正作为交互通道的是socket,而socket的上限是由系统设置决定的,可以人为修改,所以最终的上限只会由系统资源所决定。
port端口是门牌号,socket才是处理的工人。
长连接,长轮询
先记住基本法,http的交互实际上就是一问一答,也就是只有客户端去问了,服务端才会回答。
先说普通的连接和轮询:
连接:
就是普通的发送请求,服务器接收后,返回响应,断开连接。
轮询:
不断地发送请求去问(实现方法:可以在前端用JS来持续发送请求),服务器会处理每个请求。
而加了一个长字的长轮询则是这样的:
服务器会hold住这个请求(实现方法:其实就是用sleep去等待,等到生成好合适的响应再返回)。
长连接:
就是数据传输完成了之后TCP连接不断开,仍然维持一段时间,后续数据传输仍然可以复用。