码迷,mamicode.com
首页 > 其他好文 > 详细

TCP的长连接与短连接

时间:2017-04-05 14:40:06      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:实现   数据   chunk   任务   length   情况   接收   需要   模拟   

1. TCP连接

当网络通信时采用TCP协议时,在真正的读写操作之前,server(服务器)与client(客户端)之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的

2. TCP短连接

我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作

短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段

 连接->传输数据->关闭连接

    HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

    也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

3.TCP长连接

接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

长连接:

     连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。

    长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差

长连接的数据传输完成识别

    使用长连接之后,客户端、服务端怎么知道本次传输结束呢?两部分:

    1是判断传输数据是否达到了Content-Length指示的大小;

    2动态生成的文件没有Content-Length,它是分块传输(chunked),这时候就要根据chunked编码来判断,chunked编码的数据在最后有一个空chunked块,表明本次传输数据结束。  

    

    WebSocket 的实现分为客户端和服务端两部分,客户端(通常为浏览器)发出 WebSocket 连接请求,服务端响应,实现类似 TCP 握手的动作,从而在浏览器客户端和 WebSocket 服务端之间形成一条 HTTP 长连接快速通道。两者之间后续进行直接的数据互相传送,不再需要发起连接和相应。

TCP的长连接与短连接

标签:实现   数据   chunk   任务   length   情况   接收   需要   模拟   

原文地址:http://www.cnblogs.com/jingfang/p/6668592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!