码迷,mamicode.com
首页 > 其他好文 > 详细

tcp的握手与挥手

时间:2020-12-22 12:47:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:接收   tcp报文   建立连接   保留   四次挥手   sed   tcp连接   listen   过程   

1、netstat的state有那些
我们使用netstat查看tcp协议的状态,通常有CLOSED、SYN_SEND、 ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、LISTEN、 SYN_RECV、ESTABLISHED、CLOSE_WAIT、LAST_ACK、CLOSED,这些状态代表什么呢。

2、认识tcp报文格式
tcp报文=tcp header + data
tcp header格式:

        ----------------------------------------
        源端口             |       目的端口
        ----------------------------------------
        序号(seq number) 
        ----------------------------------------
        确认号(ack number) ,ack=seq+1
        ----------------------------------------
        偏移  |   保留  |   flags   |   窗口
        ----------------------------------------
        校验和     |   紧急指针
        ----------------------------------------

    flags有6个,分别是URG、ACK、PSH、RST、SYN、FIN
    URG:紧急指针有效
    ACK: 确认号有效
    PSH:接收方应该尽快将这个报文交给应用层
    RST:重置连接
    SYN:发起一个新连接
    FIN:释放一个连接

3、tcp连接流程
技术图片

4、tcp三次握手

  • 客户端向服务端发送建立新连接的请求,并进入到SYN_SEND状态;
  • 服务端收到报文后,向客户端发送SYN+ACK的报文,从LISTEN进入到SYN-RCVD状态;
  • 客户端向服务端发送ACK的报文,并进入到ESTABLISHED状态;
  • 三次握手之后,客户端与服务端建立了tcp连接,接下来进行数据传送。

5、tcp四次挥手

  • 客户端想释放tcp连接,向服务端发送FIN的请求,并进入到FIN_WAIT_1状态;
  • 服务端收到FIN报文后,结束ESTABLISHED状态,并向客户端发送ACK确认报文,进入CLOSE-WAIT状态,客户端接收到ACK报文后,进入到FIN_WAIT_2状态;
  • 服务端经过CLOSED-WAIT状态,准备释放服务端到客户端的连接,再次向客户端发送FIN报文,进入到LAST-ACK状态;
  • 客户端接收到FIN报文,确认了服务器端已做好释放连接的准备,结束FIN-WAIT-2状态,并发送ACK到服务端,进入TIME-WAIT状态。

6、再次理解一下netstat检测的tcp状态
根据以上tcp三次握手与四次挥手的过程,我们认识一下netstat的状态;

  • CLOSED:处于无连接的状态;
  • LISTEN:处于等待连接的状态;
  • SYN_SEND:请求建立tcp连接状态
  • SYN_RECV:接受到对方建立连接的请求;
  • ESTABLISHED:完成TCP连接的建立;
  • FIN_WAIT_1:主动关闭连接的第一阶段;
  • FIN_WAIT_2:收到对方关闭连接的确认;
  • TIME_WAIT:发送确认关闭连接之后,就进入到该状态;
  • LAST_ACK:等待对方释放连接的确认;
    客户端可能的状态:
    CLOSED、SYN_SEND、ESTAB、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT
    服务端可能的状态
    LISTEN、SYN_RECV、ESTAB、CLOSE_WAIT、LAST_ACK、CLOSE

tcp的握手与挥手

标签:接收   tcp报文   建立连接   保留   四次挥手   sed   tcp连接   listen   过程   

原文地址:https://blog.51cto.com/2198640/2565838

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!