TCP/IP协议的三次握手与四次挥手
TCP
TCP是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。TCP可用于可靠传输的原因:
- 为了确保消息传输的可靠性,TCP为每个分组提供序列号,并且还确保顺序接收、发送到接收方的分组。
- 接收实体成功接收分组后,发送ACK确认应答。
- 如果发送方在合理的往返时延内没有收到ACK,则认为数据包丢失,并重新发送响应数据包。
连接过程
- 第一次握手:
client向server发送请求报文段,该报文段包含自身的数据通讯初始序号。请求发送后,客户端进入SYN-SENT状态。 - 第二次握手:
server收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入SYN-RECEIVED状态。 - 第三次握手:
client收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发送完确认报文后进入ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHED状态,成功建立连接。
三次握手可以确保client和server的收发功能正常,可以进行报文收发工作。
断开连接过程:
- 第一次挥手:若A认为数据发送完成,则向B发送连接释放请求。
- 第二次挥手:B收到连接释放请求后,告诉应用层要释放TCP连接,并发送ACK包,A进入
CLOSE_WAIT状态。此时A到B的连接已经释放,意味着不再接收A发的数据。但是B仍然可以发送数据给A。 - 第三次挥手:B如果还有没发完的数据会继续发送,发送完毕后会向A发送连接释放请求,B进入
LAST-ACK状态。 - 第四次挥手:A收到释放请求后,向B发送确认应答,此时A进入
TIME-WAIT状态,并保持2MSL时间,如果时间段内没有B的重发请求的话,就进入CLOSED状态。当B收到确认应答后,也进入CLOSED状态。
浙公网安备 33010602011771号