简单了解三次握手原理

三握原理:

简单了解三次握手原理
(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之间可以开始传输数据了。

为什么要用三次握手:

假设客户端和服务端要通信:
如果一次握手:
客户端发出SYN后不知道服务器是否收到了请求
如果二次握手:
服务器收到客户端建立链接的请求后,发送一个确认(SYN+ACK)给客户端,但是服务器并不能确认客户端是否收到了确认信息。
第三次握手:
客户端收到服务器的确认信息后,也返回一个信息接收成功(ACK),服务器确定客户端收到了确认信息,然后就可以建立相互通信

链接拆除(四次挥手简单了解)

连接拆除:
客户端:向服务器发送 FIN 报文段,等待服务器确认
服务器:向客户端发送 ACK 报文段,确认其请求
服务器:向客户端发送 FIN 报文段,等待客户端确认
客户端:向服务器发送 ACK 报文段,等待一段时间后,结束

握手标志含义

PSH: 指示接收方应立即将数据交给上层
ACK: 指示确认号字段有效
RST: 指示不接受连接
SYN: 用于建立连接
FIN: 用于拆除连接