创新路
我们一直在努力

TCP中的三次握手、四次挥手

其他:TCP 协议(传输控制协议)在web事务中的状态说明

  • 三次握手,四次挥手

1

各状态代表的意义:

LISTEN :监听TCP端口等待连接

SYN_SENT :客户端发送SYN等待匹配的连接请求(SYN=1,ACK=0)

SYN_RECEIVED :服务器端收到SYN并发送一个连接请求后等待确认的状态(SYN=1,ACK=1)

ESTABLISHED :连接建立,可以通信

 

FIN_WAIT_1 :等待TCP中断请求或者另一端的FIN请求确认

CLOSE_WAIT :被动关闭端收到FIN请求并未发送确认请求的状态

FIN_WAIT_2 :收到被动关闭端的ACK确认信息后并等待远程的中断请求状态

LAST_ACK :等待原来发向远程TCP的连接中断请求的确认

TIME_WAIT :等待足够的时间以确保远程TCP接收到连接中断请求的确认                               CLOSE :没有任何连接状态

 

TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭,TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。 简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:
1.服务器读通道关闭
2.客户机写通道关闭
3.客户机读通道关闭
4.服务器写通道关闭
关闭行为是在发起方数据发送完毕之后,给对方发出一个FIN(finish)数据段。直到接收到对方发送的FIN,且对方收到了接收确认ACK之后,双方的数据通信完全结束,过程中每次接收都需要返回确认数据段ACK。
详细过程:
******阶段   客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i;

1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1,关闭服务器读通道;
2.客户机收到ACK(i+1)后,关闭客户机写通道;
(此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据)
第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j;
3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1,关闭客户机读通道;
4.服务器收到ACK(j+1)后,关闭服务器写通道。
这是标准的TCP关闭两个阶段,服务器和客户机都可以发起关闭,完全对称。FIN标识是通过发送***后一块数据时设置的,标准的例子中,服务器还在发送数据,所以要等到发送完的时候,设置FIN(此时可称为TCP连接处于半关闭状态,因为数据仍可从被动关闭一方向主动关闭方传送)

 

统计高峰服务器TCP状态可使用一下命令:

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

 

TCP标志位6种表示:

SYN :建立连接

ACK :确认

FIN :断开连接

RST :重置

PSH :传输

USG :紧急

未经允许不得转载:天府数据港官方信息博客 » TCP中的三次握手、四次挥手

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机