TCP三次握手
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
TCP作为可靠的协议,其可靠性依赖的就是ACK确认。A向B发送了一个TCP报文,B便要回复一个ACK确认,当A向B发送的数据包丢失时或B向A发送的ACK丢失,发送方在超时时间内未收到对方发来的ACK,发送方会一直周期性的重传数据包,直到收到ACK为止、或者达到重传上限重新建立TCP链接。
建立连接、数据传输、断开链接需要A