美文网首页
TCP状态机

TCP状态机

作者: 小小小小小台 | 来源:发表于2018-01-14 21:24 被阅读0次

【三次握手】

服务器监听端口,被动打开;

开始建立连接是,客户端向服务器发送SYN报文,服务器转为SYN_RCVD状态;

服务器回传报文表示收到,客户端确认,转为ESTABLISHED状

客户端确认回传服务端转为ESTABLISHED,连接建立

当客户端和服务端都是ESTABLISHED时,连接建立

三次握手原因:网络是不可靠的,客户端的连接请求可能会因为网络原因滞留,当客户端没有收到确认的时候会重新发送,所以需要收到客户端确认的信息才建立连接!!!!

【四次挥手】

客户端准备关闭连接,发起FIN报文,进入FIN_WAIT1状态;

服务端基于是否还有数据传输,发出ask或者FIN报文;

客户端收到ack后进入FIN_WAIT2,

如果收到ACK+FIN,则进入TIME_WAIT状态;

在TIME_WAIT状态如果两个MSL内没有FIN信号,自动转化成CLOSED

【常见问题】

1. 为什么TIME_WAIT状态要进过2个MSL(Maximum Segment Lifetime.)才能进入CLOSED状态?

    假设网路是不可靠的,最后A发出的ACK信号丢失,那么B就没有收到ACK,此时B还需要重新发一个FIN给A,这个过程最多需要2MSL,所以如果过了2MSL,没有再次收到B的FIN,那么,说明之间A发出的ACK被B收到了,所以可以可靠地关闭连接。)

2. 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

相关文章

  • 浅谈TCP(2):流量控制与拥塞控制

    上文浅谈TCP(1):状态机与重传机制介绍了TCP的状态机与重传机制。本文介绍流量控制(Flow Control,...

  • 传输层

    ICMP UDP TCP TCP的三次握手 TCP四次挥手 TCP状态机Tcp_status_map.jpg

  • TCP3次握手连接协议和4次握手断开连接协议

    TCP/IP 状态机,如下图所示: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,...

  • TCP状态机

    在网络协议栈中,目前只有tcp提供了一种面向连接的可靠性数据传输。而可靠性,无非就是保证,我发给你的,你一定要收到...

  • TCP状态机

    参考文章:https://www.2cto.com/net/201209/157585.html tcp状态: L...

  • TCP状态机

    前言 本文将会首先介绍TCP的各个状态,然后描述TCP三次握手和四次挥手时的状态变化,最后重点介绍TIME_WAI...

  • TCP状态机

    【三次握手】 服务器监听端口,被动打开; 开始建立连接是,客户端向服务器发送SYN报文,服务器转为SYN_RCVD...

  • tcp状态机

    概念 RTT:round trip time,客户端与服务端之间的往返时间通告窗口:advertised wind...

  • TCP重点系列之快速重传tcp_fastretrans_aler

    本文主要分析在TCP拥塞状态机的实现中,函数tcp_fastretrans_alert()的实现,及对一些相关函数...

  • 浅谈TCP(1):状态机与重传机制

    TCP协议比较复杂,接下来分两篇文章浅要介绍TCP中的一些要点。 本文介绍TCP的状态机与重传机制,下文讲解流量控...

网友评论

      本文标题:TCP状态机

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