TCP的三次握手和四次挥手

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程。

一、服务器、客户端状态

图片[1] - TCP的三次握手和四次挥手 - 正则时光
TCP状态转换图
  • LISTEN:侦听来自客户端的TCP端口的连接请求
  • SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
  • SYN-RCVD:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
  • ESTABLISHED:代表一个打开的连接
  • FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
  • FIN-WAIT-2:从远程TCP等待连接中断请求
  • CLOSE-WAIT:等待从本地用户发来的连接中断请求
  • LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
  • TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
  • CLOSED:没有任何连接状态,连接结束

二、连接重要字段

在开始讲解之前,先来讲几个重要字段的全称,方便记忆

  • 标志位:
    • SYN :(SYNchronization)同步
    • ACK :(ACKnowlegment)确认
    • FIN   :(FINish)终止
    • URG:紧急指针(urgent pointer)有效。
    • PSH:接收方应该尽快将这个报文交给应用层。
    • RST:重置连接。
  • seq:sequence number)序号
  • ack:acknowledgement number)确认号

三、三次握手

学习了上面的状态和字段后,下面的图就很好理解了。

客户端和服务端沟通时,使用请求和响应报文。报文的内容:标志位+seq/ack

图片[2] - TCP的三次握手和四次挥手 - 正则时光

四、四次挥手

图片[3] - TCP的三次握手和四次挥手 - 正则时光
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享