网络分析纪录
查看端口状态数
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