tcp三次握手,4次挥手,端口状态介绍

tcp三次握手建立过程:

 

 

 

 

TCP三次握手的过程如下:

  客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

  服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

  客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

  三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

 

tcp四次挥手过程:

   

 

TCP四次握手挥手过程如下:
  第一次挥手:主动关闭方发送第一个包,其中FIN标志位为1,发送顺序号seq为X。

  第二次挥手:被动关闭方收到FIN包后发送第二个包,其中发送顺序号seq为Z,接收顺序号ack为X+1。

  第三次挥手:被动关闭方再发送第三个包,其中FIN标志位为1,发送顺序号seq为Y,接收顺序号ack为X。

  第四次挥手:主动关闭方发送第四个包,其中发送顺序号为X,接收顺序号为Y。至此,完成四次挥手。

 

 

 

TCP端口状态:

  TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT。 

 

1、LISTENING状态:

  当服务正常启动后首先应处于侦听(LISTENING)状态。

 

2、SYN_SENT状态:

   SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。

 

3.ESTABLISHED状态:

  ESTABLISHED的意思是建立连接。表示两台机器正在通信。

 

4.CLOSE_WAIT:

  对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

 

5.TIME_WAIT:

  我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

posted @ 2020-09-08 17:04  努力变强的菜鸟  阅读(600)  评论(0)    收藏  举报