TCP传输控制协议(2)--TCP连接和终止

本文详细介绍了TCP连接的三次握手过程和终止时的四次挥手,涉及TCP状态转变,着重解释了TIME_WAIT状态的作用以及重置报文段的应用。在连接建立时,三次握手确保了连接的可靠性,而TIME_WAIT状态则为避免重复报文影响提供了保障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP的连接和终止

TCP的连接过程称为三次握手,其过程为,主动开启方(一般为客户端)发送SYN报文段指明想要连接的IP数据报端口,和自己的起始序列号,同时还会发送一个或多个选项,其中有MSS表示能接受的最大报文段(TCP数据段大小不包括首部)。
对方端(一般为服务器)接收到SYN请求后被动开启,回复一个SYN 报文段同时将发送自己的初始序列号,另外会将ACK 位置1,同时确认序号为对方序列号+1的值,同时也会发送一个或多个选项, 包括自己的MSS
客户端收到服务器的SYN + ACK报文段时会发送一个纯ACK包回复,其确认序号为对方SYN的序列号+1,纯ACK不占序号。
TCP关闭时首先需要关闭的一方发送一个FIN报文段,同时该报文段也可以将ACK置为1用于确认应答上一个数据包,被动关闭方在接受到FIN报文段时会回复一个ACK其确认序号为FIN报文段序列号加1,同时被动关闭方可以继续发送数据,因为TCP连接是一个双工通信,当被动关闭方发送完数据后,其同样向对方发送FIN报文段, 对方回复ack此时连接断开。

TCP状态转变

TCP连接过程中状态变换如图所示:
在这里插入图片描述

首先客户端和服务器均为close装态,服务器启动定义监听套接字,绑定端口和地址,同时执行listen函数进入listen状态等待连接到来,此时服务器accept会进入阻塞,客户端定义套接字,通过connect函数向服务器发起连接,客户端主动打开发送SYN请求,进入SYN_SENT状态等待服务端回复,当服务端收到SYN请求时回复SYN+ ACK进入SYN_RCVD状态,客户端收到该回复,发送ACK回复进入ESTABLISHED状态,服务器收到ack回复时同样进入ESTABLISHED状态,同时会分配新的描述符用于和客户端通信,而监听套接字会继续进行监听其他连接,此时服务器用accept返回的套接字和客户端进行通信,当执行clos

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值