SYN:一个很小的包,tcp的第一个包(同步序列编号)
ACK:确认响应
SYN、ACK:为1表示确认连接
FIN表示关闭连接,
PSH表示有 DATA数据传输,
RST表示连接重置。
Acknowledge number(ack):确认号,大小为4个字节
ack=上次seq+1
Sequence number(seq):数据包序号(一个随机序列号),大小4个字节
三次握手:
1.第一次握手:建立连接时,客户端发送syn包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
客户端向服务器发送一个连接请求包 SYN=1,seq=x(生成一个随机序列)
2.第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。
服务器端接收到客户端请求并确认ack=x+1,同时发送一个syn包syn=1
3.第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
四次挥手:
1.第一次挥手:客户端发送fin=1,seq=x
2.第二次挥手:服务器响应客户端,发送ACK=1,seq=y,ack=x+1
3.第三次握手:服务器向客户端挥手,发送fin=1,seq=m,ACK=1,ack=x+1
4.第四次握手:客户端响应服务器,发送ACK=1,seq=x+1, ack=m+1
四次挥手后,连接会在2MSL后结束。
2MSL是TCP报文发送和接收的最长时间。
迷迷糊糊的,还是没怎么懂