长连接分析

一、TCP连接

1 三次握手

image.png

2 四次挥手

image.png

3 长连接和短连接

短连接的操作步骤是:

建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接

长连接的操作步骤是:

建立连接——数据传输…(保持连接)…数据传输——关闭连接

正常来说,TCP连接建立后,只要不主动释放,连接会一直存在,所以为了避免无用连接占用资源导致客户端无法建立新连接,就需要保活机制,保活机制在传输层和应用层都有实现。短连接每次交互后会主动释放连接,不需要保活。

二、tcp keep-alive

传输层保活机制

tcp具有保活功能,当tcp服务端回复之后会开启保活定时器,时间一到就会发送探测报文,重复多次后没有得到响应,则关闭连接。这个功能不是tcp的,而是内核支持的。

三、应用层保活机制

以netty举例,通过IdleStateHandler来保活。

1 client

@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
   
    // send heartbeat when read idle.
    if (evt instanceof IdleStateEvent) {
   
        try {
   
            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);
            if (logger.isDebugEnabled()) {
   
                logger.debug("IdleStateEvent triggered, send heartbeat to channel " + channel);
            }
            Request req 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值