.Net培训 |收费模板 收费技术服务 |二次开发
网站建设套餐 |网站订制
空间域名 |软件系统开发
RGB颜色查询对照表
什么21点的电影 www.piqma.tw TCP是面向连接的,每对客户端到服务器之间成功连接,从建立到关闭都会经历3次握手与4次挥手的过程。
(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。 (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。 1. 第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了; 2. 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1,主机2进入CLOSE_WAIT状态;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求; 3. 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态; 4. 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
LISTEN,SYN_SENT,SYN_RECV,ESTABLISHED
FIN_WAIT1,CLOSE_WAIT,FIN_WAIT2,LAST_ACK,TIME_WAIT,CLOSE
TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证。
1、windows 查看端口连接状态
C:\Users\Administrator>netstat -an|findstr 80|findstr TCP
2、linux
查看tcp各个连接状态的数量 TCP连接的情况,统计命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 统计8080端口上有多少个TCP连接 netstat –tan | grep 8080 | wc –l TCP连接中有多少个连接状态是ESTABLISHED netstat –tan | grep 8080 | grep ESTABLISHED| wc -l TCP连接中有多少个连接状态是CLOSE_WAIT netstat –tan | grep 8080 | grep CLOSE_WAIT| wc -l TCP连接中有多少个连接状态是TIME_WAIT netstat –tan | grep 8080 | grep TIME_WAIT| wc -l
参考:
https://blog.csdn.net/smileiam/article/details/78226816