Netty做tcp长连接服务器有大量坏包
使用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技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
设备 192.168.1.150 丢包了,检查网线、网卡接口、CPU 内存等占用情况。
ACK 是接收方在收到数据后,反馈给发送方的确认机制。
TCP 协议详细说明了如何判断数据或 ACK 是否丢失,详情请查标准文档。
一般情况下,当网络延时增大导致网络速度变慢,是产生重复ACK的一个主要原因。或者是服务端或者客户端响应速度变慢或者没没有响应。