TCP会话通过三次握手来建立连接。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接
双方通信之前都处于CLOSED 状态
三次握手过程:
第一次握手
源主机发送一个同步标志位SYN=1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值,即SYN=1,SEQ=x。源主机进入SYN-SENT状态
第二次握手
目标主机接收到SYN包后,发回确认数据报文。该数据报文ACK=1,同时确认序号字段,表明目标主机期待收到源主机下一个数据段的序号,即ACK=x+1(表明前一个数据段已收到并且没有错误)。
此外,此段中设置SYN=1,并包含目标主机的段初始序号y,即ACK=1·,确认序号ACK=x+1,SYN=1,自身序号SEQ=y。此时目标主机进入SYN-RCVD状态,源主机进入ESTABLLSHED状态。
第三次握手
源主机再回送一个确认数据段,同样带有递增的发送序号和确认序号(ACK=1,确认序号ACK=y+1,自身序号SEQ,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。)