Netty 系统参数 SO_REUSEADDR

SO_REUSEADDR 开启场景

  • 多网卡(IP)绑定相同端口;
  • 让关闭连接释放的端口今早可使用;

TCP 四次挥手

8195388-45de64cd05a5c3a6.png
TCP 四次挥手.png

TIME-WAIT 的作用一:作为 ACK 的容错时间

  • Client 最后的 ACK 不一定能成功到达 Server;
  • 如果没有到达,Server 会重发 FIN;
  • 如果 Client 没有 TIME-WAIT,就会返回一个 RST 的错误;

TIME-WAIT 的作用二:等待“迷途知返”的包“回家”

  • TCP 中有个概念 MSL(Max Segment Life),即包的最大生命周期;
  • 如果不等个 TIME-WAIT 时间,直接进入 CLOSED 状态,端口立马可以被别的程序重用,“迷途知返”的包就会进入别的程序;
  • 在这种用例下,TIME-WAIT 设置成 2 * MSL,Linux 下一般是 60s;
  • 如果开启参数 SO_REUSEADDR,TIME-WAIT 会被设置成协议认为安全的时间,1s;

是否开启 SO_REUSEADDR 参数

  • 取决于网络环境和自己的信心,如果网络环境好,有信息不会有“迷途知返”的包,并且认为 ACK 可以发到 Server,那么可以考虑开启 SO_REUSEADDR(默认关闭);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值