三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。
第一次握手:标志位SYN = 1,随机生成一个序列号seq1 = x\n第二次握手:标志位SYN ,ACK = 1,确认号ack = x + 1,随机生成一个序列号seq2=y\n第三次握手:标志位ACK = 1, 确认号ack = y + 1,seq2= x + 1
SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seq增加一,但是,对于ACK的传输,不会让下一次的传输packet加一,也就是说,下一个实际有数据的传输,依旧从上一次发送ACK的数据包的seq开始计算