美文网首页网络协议学习
八.网络协议学习笔记 传输层TCP-释放连接

八.网络协议学习笔记 传输层TCP-释放连接

作者: crazyfox | 来源:发表于2021-07-22 15:32 被阅读0次
image.jpeg

释放连接-状态解读

FIN-WAIT-1:表示主动关闭连接

  向对方发送FIN报文,进入FIN-WAIT-1状态

CLOSE-WAIT:表示等待关闭

对方发送FIN给自己,自己回应ACK给对方,进入CLOSE-WAIT状态

需要考虑自己是否还有数据要发送,没有,就发送FIN给对方

FIN-WAIT-2:只要对方发送ACK确认后,主动方就处在这个状态

CLOSING:一种比较罕见的例外状态

表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文,如果双方几乎在同时准备关闭连接的话,那么就出现了双方同时发送FIN报文的情 况,也即会出现CLOSING状态,表示双方都正在关闭连接

LAST-ACK:被动关闭一方在发送FIN报文后,最后等待对方的ACK报文

当收到ACK报文后,即可进入CLOSED状态了

TIME-WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可进入 CLOSED状态了

如果FIN-WAIT-1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME-WAIT状态,而无须经过FIN-WAIT-2状态

CLOSED:关闭状态

由于有些状态的时间比较短暂,所以很难用netstat命令看到,比如SYN-RCVD、FIN-WAIT-1等

为什么释放连接需要四次?

全双工模式

第一次挥手:主机1发出FIN报文

表示主机1告诉主机2,主机1已经没有数据要发给主机2,但是主机2还是可以发数据给主机1

第二次挥手:当主机2返回ACK报文

表示主机2知道主机1没有数据要发送,但是主机2还是可以发送数据给主机1

第三次挥手:当主机2发出FIN报文

表示主机2告诉主机1,主机2已经没有数据要发给主机1

第四次挥手:当主机1返回ACK报文

表示主机1知道主机2没有数据要发送

TCP释放连接 细节

有时候在抓包时,可能只看到3次挥手

是将第二第三次合并了

当server接收到client的Fin时,如果server后面也没有数据要发送

server可以将2,3次挥手合并,同时告诉client

已经知道client没有数据发

server没有数据要发了

相关文章

网友评论

    本文标题:八.网络协议学习笔记 传输层TCP-释放连接

    本文链接:https://www.haomeiwen.com/subject/eezemltx.html