22. TCP协议之四次挥手

TCP连接的释放通过四次挥手完成,确保双工通信的完全关闭。主动关闭方发送FIN开始挥手,进入FIN_WAIT_1状态,等待对方ACK。对方收到后回应ACK进入CLOSE_WAIT,然后发送FIN,主动关闭方收到后进入FIN_WAIT_2,发送ACK进入TIME_WAIT状态,等待2MSL以重发可能丢失的ACK。被动关闭方收到最后的ACK后彻底关闭。网络编程中可通过函数调用来控制连接的关闭。
摘要由CSDN通过智能技术生成



TCP创建的过程和释放的过程都是通过TCP/IP协议栈自动完成的. 本篇就主要是分析TCP释放过程.


TCP报文段首部格式

注意 : TCP虽然是面向字节流的, 但是TCP传送的数据单元却是报文段.

在这里插入图片描述
本篇我们主要会涉及到TCP首部的 : FIN.


四次挥手的过程

在这里插入图片描述

连接释放需要发送4次报文才能完成. 这是因为TCP连接是全双工的, 每一端都需要对读写部分分别进行关闭才行. 当一端关闭读/写或者都关闭时, 该端就会向对象发送FIN来告知对端我将要关闭了, 对端知道后挥发送确认, 关闭端确认后再发送一个确认给对端. 整体就是首先进行关闭的一方将执行主动关闭, 而另一方执行被动关闭.

上图是客户发送FIN, 当然也可以是服务端发送FIN, 一般是客户端主动断开.

  1. 客服端调用close等函数主动关闭, 并向服务端发送一个含FIN的报文, 然后就进入FIN-WAIT1阶段, 该阶段是等待对端的ACK到来.
  2. 服务端接收到对端的FIN后, 立马向对端回一个ACK确认, 然后进入CLOSE-WAIT阶段,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值