TCP长连接与短连接的区别

来源:互联网 发布:淘宝潮流社区怎么申请 编辑:程序博客网 时间:2024/06/11 12:07

TCP长连接与短连接的区别

TCP/IP,http,socket,长连接,短连接——小结

HTTP的长连接和短连接

 

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 长连接快速通道。两者之间后续进行直接的数据互相传送,不再需要发起连接和相应。

0 0
原创粉丝点击