TCP三次握手的过程以下:ide
主动链接端发送一个SYN包给被动链接端;spa
被动链接端收到SYN包后,发送一个带ACK和SYN标志的包给主动链接端;it
主动链接端发送一个带ACK标志的包给被动链接端,握手动做完成。class
TCP四次挥手的过程以下:效率
主动关闭端发送一个FIN包给被动关闭端;请求
被动关闭端收到FIN包后,发送一个ACK包给主动关闭端;通信
被动关闭端发送了ACK包后,再发送一个FIN包给主动关闭端;di
主动关闭端收到FIN包后,发送一个ACK包,当被动关闭端收到ACK包后,四次挥手动做完成,链接断开。时间
netstat中的各类状态:view
CLOSED
初始(无链接)状态。
LISTEN
侦听状态,等待远程机器的链接请求。
SYN_SEND
在TCP三次握手期间,主动链接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
SYN_RECV
在TCP三次握手期间,主动链接端收到SYN包后,进入SYN_RECV状态。
ESTABLISHED
完成TCP三次握手后,主动链接端进入ESTABLISHED状态。此时,TCP链接已经创建,能够进行通讯。
FIN_WAIT_1
在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
FIN_WAIT_2
在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
TIME_WAIT
在TCP四次挥手时,主动关闭端发送了ACK包以后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
CLOSING
在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
CLOSE_WAIT
在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
LAST_ACK
在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。
主动链接端可能的状态有:
CLOSED SYN_SEND ESTABLISHED。
主动关闭端可能的状态有:
FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT。
被动链接端可能的状态有:
LISTEN SYN_RECV ESTABLISHED。
被动关闭端可能的状态有:
CLOSE_WAIT LAST_ACK CLOSED。
在Linux下,若是链接数比较大,能够使用效率更高的ss来替代netstat。