TCP长链接/短链接
2016-03-23 22:10
381 查看
什么是长链接什么就短链接,为什么链接要区分长短?
当采用TCP数据传输是,在client与server之间要建立链接,数据传输结束,链接关闭,这是我们常见的方式,但我们看链接人建立过程及关闭过程
连接创建过程
连接释放过程
很经典的3次握手交流4次握手说再见,回故乡探亲,十年未见面,见面再三确认身份,分手时依依不舍哦。
相信看完这个过程就会问了,这俩人十年未见这样也就忍了,毕竟十年未见,变化比较大,但是天天见面也这样,这就有点防贼的感觉了,
好了,回故里呆的时间比较长,亲人不能天天陪着你,你也不能天天就在家带着,给你一把家门钥匙,没事出去溜达,累了可以回家休息,这才是探亲么,对不对,但也不能长住,住几天差不多了,赶紧拜拜吧。
ok,说到这里,估计大家应该们白怎么回事了,
TCP短连接
client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
TCP长连接
client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
需要注意的是,在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,
Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个客户端累夸整个后端服务。
长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择。
当采用TCP数据传输是,在client与server之间要建立链接,数据传输结束,链接关闭,这是我们常见的方式,但我们看链接人建立过程及关闭过程
连接创建过程
连接释放过程
很经典的3次握手交流4次握手说再见,回故乡探亲,十年未见面,见面再三确认身份,分手时依依不舍哦。
相信看完这个过程就会问了,这俩人十年未见这样也就忍了,毕竟十年未见,变化比较大,但是天天见面也这样,这就有点防贼的感觉了,
好了,回故里呆的时间比较长,亲人不能天天陪着你,你也不能天天就在家带着,给你一把家门钥匙,没事出去溜达,累了可以回家休息,这才是探亲么,对不对,但也不能长住,住几天差不多了,赶紧拜拜吧。
ok,说到这里,估计大家应该们白怎么回事了,
TCP短连接
client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
TCP长连接
client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
需要注意的是,在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,
Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个客户端累夸整个后端服务。
长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择。
相关文章推荐
- Android中okhttp的基本用法1
- linux socket编程之TCP与UDP
- 新媒体时代崛起靠什么:李帅和您论“网络”
- 网络编程(一)
- TCP状态图的理解以及TIME_WAIT状态的作用
- javaWeb:http响应状态码大全
- nginx如何做到TCP的负载均衡
- 五分钟为HTTP接口提供Java/Scala SDK
- meta name的含义:<META http-equiv=Content-Type content="text/html; charset=gb2312">
- HTTP状态码大全(转自wiki)
- c/c++ socket发送http请求访问网站
- IOS 网络浅析-(十二 UIWebView简介)
- 理解HTTP幂等性
- 浅谈编程语言的类型系统http://blog.csdn.net/hittata/article/details/42360773
- HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
- HTTP/SSL/TSL 服务器客户端双向验证
- 加载网络图片
- 网络编程基础
- oracle11G与10G网络通信差异
- iOS---对AFNetworking进行二次封装,使用单例单独处理网络请求数据