
时长:大小10.04M
作者回复: BINGO。太多了,大家也不好接受,我想我还是不求面面俱到,但求有所启发和引领。
作者回复: 这个是解决端口复用的问题,并不是解决TIME_WAIT,这个是告诉内核,即使TIME_WAIT状态的套接字,我也可以继续使用它做为新的套集字使用。
作者回复: 学到了
作者回复: 总结很到位。
作者回复: 帮我回答了,赞
作者回复: 这里针对的TIME_WAIT是指主动关闭的一方,不一定是客户端或者服务器端,如果服务器端主动关闭连接,也是属于这样的范畴的。
作者回复: 这是因为时间戳会告诉我们报文发送的时间,这样在迷走报文和正确报文同时到达的情况下,我们就可以很方便的分辨出应该丢弃掉那个报文,并不会对最后收到的报文产生任何不利的影响。
作者回复: 因为是一来一返。

作者回复: 哈哈,提前剧透啊。 这是为了解决如何快速复用处于TIME_WAIT的连接,如果不设置这个选项,处于TIME_WAIT的连接是不能被快速复用的,必须等待系统回收连接才可以,如果这个时候开启服务器端口,会报地址已被占用的错误。 这块在第15讲里会有详细阐述。
作者回复: 我一直都在回复的哦,和大家在一起自己也学到不少,哈哈。 以下试着回答你的问题: 1、看到评论区的“通过setsockopt设置SO_REUSEADDR这个方法”,感觉和net.ipv4.tcp_tw_reuse选项的作用也很像,都是端口复用,只是后者是在安全可控的基础上---这样理解对吗? 我认为不对哦,前者是针对服务端连接地址被占用的情况,后者是针对连接发起方; 2、老师在文中说的“过了2MLS这个时间之后,主机 1 就进入 CLOSED 状态”,我自己还是没有总结出答案,是评论区所说的“去时ACK的最大存活时间(MSL)+来时FIIN的最大存活时间(MSL) = 2MSL”这个原因吗? 你的意思是为什么要制定2MSL这个时间段才CLOSED是么?如果是这样,评论去的"去时ACK的最大存活时间(MSL)+来时FIIN的最大存活时间(MSL) = 2MSL"算是一个靠谱的理解吧。 3、TIME_WAIT=2MLS和TCP_TIMEWAIT_LEN有啥关系?是:TIME_WAIT实际上是由TCP_TIMEWAIT_LEN控制,然后只不过其值约等于2MLS来控制迷走报文的消亡 这样么? TIME_WAIT是一个抽象的定义,而TCP_TIMEWAIT_LEN是Linux默认的值,是一个常量。你的认识是对的 4、文中说TCP_TIMEWAIT_LEN、net.ipv4.tcp_tw_reuse都是linux的选项,但是客户端来说的话,有android、ios、windows各种系统吧?是每个系统都有类似的控制选项么? Android是裁剪过的Linux,应该可以复用;其他两个我不是很清楚,想必应该有自己的控制选项。