Tcp状态机
1、为什么建立连接需要三次握手,断开连接需要四次握手? 举例来说,C与S要可靠的沟通,沟通之前要又准备工作,沟通完了,要有清理工作。 沟通之前的准备工作 C:我要跟你说话,你注意听(SYN) S:好的(ACK),我也要跟你说话,你注意听(SYN) C:好的(ACK) ........ 交流过程中 ....... 沟通完了的清理工作 C:我说完了(FIN) S:我知道了(ACK) S 再 说一些...... S:我说 完了(FIN) C:我知道了(ACK) tcp是全双工的, 建立连接,ACK的同时可以SYN,而断开连接,往往不满足条件,C说完了,S可能还要再说一会。 2、为什么,TIME_WAIT要经过 2个MSL(Maximum Segment Lifetime),才进入CLOSED? 考虑下面的情况,C回了ACK立即进入CLOSED,假如S没有收到ACK,站在S的角度,S认为:C还不知道我已经说完了,我要再说一遍。但是这个时候C已经CLOSED,怎么解决这个问题? 站在C的角度考虑,如果我回了ACK,S没有收到,那么S会重发FIN,从C回ACK,到C再次收到S的FIN,最多需要两个报文段周期。如果在两个报文段周期没有收到FIN,则说明,S肯定收到了我了ACK,进入CLOSED 转载于:https://www.cnblogs.com/nzbbody/p/4320925.html