三次握手四次挥手

连接管理机制:三次握手,四次挥手

什么叫连接:主机A和主机B都持有本端到对方的连接状态。连接是有方向的。
主机A发送数据,到接收ack确认应答的数据报,只表示主机A正常传数据到主机B,但主机B到主机A是不确定的。

三次握手的流程(建立连接)
服务端进程启动后,绑定并监听端口(接受到数据以后,可以监听到,并让程序处理数据)

1.客户端发送SYN(建立连接的标志位) + SEQ_NO(序号)到服务端(这里的SYN是客户端到服务端的连接)
2.服务端响应SYN+ACK(应答第一个步骤的SYN)+SEQ_NO( ) + 1到客户端(此处的SYN是服务端到客户端的连接,连接是有方向的)
客户端接收到第二步的响应,建立客户端到服务端的连接(客户端保存这个连接状态)
3.客户端再响应ACK到服务端,服务端接收以后,建立服务端到客户端的连接(服务端保存这个连接状态)

连接建立(保持连接状态)是有方向的
为什么是三次?第二次服务端返回SYN和ACK是可以合并的。

四次挥手的流程(关闭连接)

1.客户端发送FIN到服务端,申请关闭连接。服务端状态设置为CLOSE_WAIT(客户端到服务端的连接状态)
2.服务端响应ACK
3.服务端发送FIN到客户端,申请关闭连接。客户端收到后,状态设置为TIME_WAIT(服务端到客户端的连接状态)
4.客户端响应ACK,服务端接收到以后,服务端关闭连接。

第3步为什么客户端没有直接设置为close关闭连接
因为第4步的ACK可能丢包,所以要等待一下。(超时重传时间)
为什么第2步和第3步,没有像建立连接时合并数据包?
因为第2步系统对TCP协议实现时,接收FIN,自动返回ACK,不用执行代码。
第3步是程序手动执行调用(服务端关闭连接时,需要进行一些前置工作)

系统内核对TCP的实现方式:
接收到客户端FIN后,自动返回ACK。 程序手动调用close方法关闭连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值