网络分析纪录

 查看端口状态数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

tcp三次握手和四次挥手

client发送syn(SYN=x)请求到server,client状态syn_send状态;

server收到syn包,确认client的syn(ACK=x+1),同时发送自己的syn包(SYN=y),即SYN+ACK包,此时server进入syn_recv状态;

client收到server的包,向server发送确认包(ACK=y+1),此包发送完毕,client进入ESTABLISHED状态,server收到确认包,进入ESTABLISHED,三次握手完成;

 

client发出连接释放,且停止发送数据,FIN=1,seq=u;此时,客户端进入FIN_WAIT_1状态;

server收到连接释放报文,发出确认报文,ACK=1,ack=u+1,带上自己的序列号seq=v,server进入close_wait状态;此时数据半关闭状态,client没有数据发送了;

此时server发送数据,client还是接收;

client收到server的确认请求后,此时client进入FIN_WAIT_2状态,等待server发送连接中断报文;此时server还能发送数据

server将数据发送完毕,像client发送释放连接报文,FIN=1,ack=u+1,此时是假死状态,假定此时序列号seq=w,server进入last_ack状态,等待client确认;

client收到server释放连接报文,必须进行确认,ACK=w+1,ACK=1,自己的序列号seq=u+1,此时client进入time_wait状态,此时client连接还没有释放,经过2*MSL时间,客户端关闭;

server收到client消息,进入close

原文地址:https://www.cnblogs.com/Shoudler/p/12205806.html