对三次消息握手(三次握手)的理解过去被称为三次握手。事实上,在一次握手中交换了三条消息,而不是三次握手。 握手用单数而不是复数,表示只是握手。 三方消息握手图图片1.png部分概念梳理1。SYN_SENTSYN_SENT表示请求连接。当您想要访问其他计算机服务时,您必须首先向该端口发送同步信号。此时状态为syn _ sent,如果连接成功,将变为建立。此时,syn _ sent状态非常短。 2.Acckack(确认)是确认字符,是数据通信中接收站发送给发送站的传输控制字符。 表示已确认发送的数据已被正确接收。 3.同步RCVD(同步接收)4。ESTAB_LISHED(已建立连接)5。变速器控制模块TCB变速器控制模块TCB(变速器控制块)在每个连接中存储少量重要信息。 在开始详细解释三消息握手过程时,B的PCP服务器进程首先创建传输控制模块TCB,准备接受用户进程的连接请求。 然后服务器进程处于LISTEN状态,等待用户的连接请求。 1.SYN=1和seq=xa的TCP用户进程也首先建立传输控制模块TCB,然后当它打算建立TCP连接时向b发送请求段,此时选择报头中的同步比特syn = 1和初始序列号seq = x。 即SYN=1,seq=x 根据TCP,SYN段(即syn = 1的段)不能携带数据,但它消耗一个序列号。 此时,TCP用户进程进入SYN_SENT状态。 2.SYN=1,ACK=1,seq=y,ack=x+1B收到连接请求报文段后,似乎打算建立连接,然后向a发送确认 在确认消息段中,SYN位和ACK位都要设置为1,确认号为ack=x+1,要为自己选择一个初始号seq=y。 即SYN=1,ACK=1,seq=y,ack=x+1。请注意,这个消息段也不能携带数据,但同时会消耗一个序列号。 此时,TCP服务器进程进入SYN_RCVD(同步接收)状态。 3.ACK = 1,SEQ = X+1,ACK = Y+1。收到B的确认后,TCP用户进程必须给B确认。 确认消息段的ACK被设置为1,确认号ack=y+1,它自己的序列号seq=x+1。 即ACK = 1,seq = x+1,ack = y+1。根据TCP标准,ack段可以携带数据。 但是如果没有携带数据,序列号就不会被消耗。在这种情况下,下一个数据消息的段依然是seq=x+1。 到如今 TCP连接已经建立,a进入ESTAB状态。 4.当B收到来自A的确认时,它也进入ESTAB状态。