首页   注册   登录
ChristopherWu

ChristopherWu

🏢  阿里月饼公司
V2EX 第 164255 号会员,加入于 2016-03-21 16:10:43 +08:00
今日活跃度排名 4278
ChristopherWu 最近回复了
总结:确保状态正确,也就是上面的同学说的 “保证最后发出的断开连接的消息对面能够收到”

```
TCP A TCP B

1. ESTABLISHED ESTABLISHED

2. (Close)
FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT

3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT

4. (Close)
TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK

5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED

6. (2 MSL)
CLOSED

Normal Close Sequence
```

在最后的 4、5 阶段,假如 5 返回给`TCP B`的时候,`1 msl` 过去了,报文过期了;`TCP B` 没有收到,再发一遍,如果设置 `time_wait 状态` 是 `1msl`,那么 `TCP A` 处于`closed`状态,拒收`TCP B`的`FIN 包`,B 无法关闭。

所以要设置大于 1MSL。

而 TCP B 重传过来的包,你也要假设他可能需要`1 msl`吧,那么 time_wait 就要`2 msl`的时间来保证此极端情况下,B 能重传成功。
8 天前
回复了 woahishui 创建的主题 程序员 golang 语言学习有感
@libook 一个问题,你写业务的时候,没有泛型用,都 copy-paste,看着一大坨逻辑都一样的代码,不觉得有🤢难受的感觉吗
9 天前
回复了 woahishui 创建的主题 程序员 golang 语言学习有感
来让我喷一下 go:

1. 没有高性能好用的泛型,你说 interface{}?那个连 go 作者都受不了,因此导致没有抽象库可用如 reduce, map, flitter, any 等等函数;
2. 错误处理,就算是用`product type`,也没有设置好用的语法糖将 error 迭代下去,导致大量重复冗余的 if else
3. 自作主张的 golint, 你要是希望自己比较严谨,希望社区统一,就不要定死那么多可有可无的东西,大括号换行这些没所谓。cpu CPU Cpu 大小写没所谓,但,if else 我就喜欢用 else 显示标注,你连这要管我?? 我 export 函数就是不喜欢写注释你给我报错???还不能自定义??
4. 一开始没有想做好 包管理器 给开源社区的人用。。导致现在一大堆。。
想到再补充。。
14 天前
回复了 CMGS 创建的主题 酷工作 [新加坡] 年底了又来招点人
lz 是我组长,他说的都是真的,他带头 WLB 🐶
14 天前
回复了 q409640976 创建的主题 程序员 iptables 怎么屏蔽 https 请求图片
用 cotent-type 过滤不就好了
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1737 人在线   最高记录 5168   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 32ms · UTC 03:08 · PVG 11:08 · LAX 19:08 · JFK 22:08
♥ Do have faith in what you're doing.