Netty做tcp长连接服务器有大量坏包

发布于 2022-09-12 03:21:16 字数 1370 浏览 21 评论 0

使用Netty做TCP长连接服务器,多个设备连接该服务器,都在局域网内
业务上,大部分帧都是客户端上报,服务器不用回复,服务器发送到设备的帧设备也不用回复

在使用wireshark抓包,服务器发送到客户端,有大量黑底红字的坏包
我的ip192.168.1.168 设备的ip192.168.1.150
抓包发现客户端每发上来一帧,虽然我业务上无需回复,但tcp自己还是有个ACK的正常包发回到设备,并紧跟着一个一模一样的坏包,显示tcp dup ack

我自己发给客户端的帧,也同样都是一个正常包后面跟一个坏包,坏包显示 tcp retransmission

而且客户端是能收到帧的

为什么我发给客户端的都是一正常包紧跟一个坏包?而且有大量的不是我业务上的包,这些都是啥?是服务器收到帧后必须要回复一帧才行吗?


try {
    ServerBootstrap bootstrap = new ServerBootstrap()
        .group(boss, worker)
        .channel(NioServerSocketChannel.class)
        .localAddress(inetSocketAddress)
        .childOption(ChannelOption.TCP_NODELAY, true)
        .childOption(ChannelOption.SO_KEEPALIVE, true)
        .childHandler(new HvacChannelInitializer(context));
    ChannelFuture future = bootstrap.bind().sync();
    if (future.isSuccess()) {
        log.info("[TCP Server] server started @ {}:{}", ip, tcpPort);
    }
    future.channel().closeFuture().sync();
} catch (InterruptedException e) {
    log.error("[TCP Server] server started failed", e);
} finally {
    boss.shutdownGracefully();
    worker.shutdownGracefully();
    preDestroy();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘香 2022-09-19 03:21:16

设备 192.168.1.150 丢包了,检查网线、网卡接口、CPU 内存等占用情况。

ACK 是接收方在收到数据后,反馈给发送方的确认机制。

  1. 如果数据没有送达,发送方会重发,你便看到 “tcp retransmission”。
  2. 如果 ACK 没有送达,接收方会重发,便出现 “tcp dup ack”。

TCP 协议详细说明了如何判断数据或 ACK 是否丢失,详情请查标准文档。

∝单色的世界 2022-09-19 03:21:16

一般情况下,当网络延时增大导致网络速度变慢,是产生重复ACK的一个主要原因。或者是服务端或者客户端响应速度变慢或者没没有响应。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文