长连接与短连接、全双工与半双工,单工

长连接:

连接建立后,需要通过心跳继续维持连接,这样发消息的时候不用每次都建立连接。

通信的过程:建立连接 --> 数据传输 -->  维持心跳  --> 数据传输  -->   -->  关闭连接。

相当于自己要维护一个心跳来确保客户端和服务端没有断开。

短连接:

连接建立后,检测到通信交互完毕,就会关闭连接。下次需要通信时,需要再次建立连接。

通信的过程:建立连接  --> 数据传输  -->  关闭连接。

比如银行业务通信,都是采用的短连接。

Tcp 的长连接和短连接

长连接:在Tcp握手成功后,不立即断开连接,在此连接上进行数据传输,心跳交互,直至客户端或服务端中的任一方主动断开连接,此过程称为长连接。Http1.1 相对于Http1.0 最重要的特性就是引入了长连接。

短连接:客户端在收到服务端的响应后,立刻发送FIN 消息,主动释放连接。当然也有服务端主动断开连接的情况。

Tcp keepalive(保活机制)

Tcp keepalive 通过定时发送 keepalive 探测包 来探测连接的对端是否存活。

一旦发送的探测包没有响应,在重复几次后,就会断开连接。

http keep-alive(是否复用tcp连接)

在http 1.0 的时候,每个http请求都要打开一个tcp socket 连接,并且使用一次之后就关闭这个tcp连接。

在http 1.1 之后,引入了keep-alive 请求头参数,可以通过这个参数控制在一次tcp 连接中可以持续发送多份数据而不会断开连接。这样就能复用tcp 连接,减少tcp连接建立的次数。

http 位于网络协议的应用层,tcp 位于网络协议的传输层。两者的keep-alive的作用是不一样的。http的keep-alive 主要是为了复用tcp连接,避免每次连接都建立tcp。tcp的keepalive主要是一种保活机制,检测对端是否依然存活。

根据通信双方的一个分工 以及 信息传输的方向,可以将通信分为三种方式:全双工,半双工和单工。

全双工(Full Duplex):

一条宽道,通信双方都可以相互发送信息,并且可以同时发送信息。典型的场景比如打电话

半双工(Half Duplex):

一条窄道,通信双方都可以相互发送信息,但是同一时刻只能有一方向另一方发送信息。典型的应用场景比如对讲机。

单工(Simplex):

单行道,通信双方只能有一方向另一方发送消息,典型场景比如打印机。

最近研究的netty 就是 异步全双工长连接通信。

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值