zoukankan      html  css  js  c++  java
  • TCP 三次握手四次挥手

    1.报文格式

    在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西。

    1.1 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)

    1.2报文主要字段的意思

      序号 表示返送的数据字节流,确保TCP传输有序,对每个字节编号
      确认序号 发送方期待接收的下一序列号,接收成功后的数据字节序列号加1.只有ACK=1时才有效
      ACK 确认序号的标志,ACK=1表示确认序号有效,ACK=0表示报文不包含序号信息
      SYN 连接请求序号标志,用于建立连接,SYN=1表示请求链接
      FIN 结束标志,用于释放链接,为1白石关闭本方数据流
    

    2 三次握手

    2.1 三次握手过程

    建立TCP连接时,需要客户端和服务器共发送3个包

    • 第一次 客户端发送初始序号x和syn=1请求标志
    • 第二次 服务器发送请求标志syn,发送确认标志ACK,发送自己的序号sep=y,发送客户端确认序号ack=x+1
    • 第三次 客户端发送ACK确认号,发送自己的序号sep=x+1,发送对方确认序号ack=y+1

    2.2 三次握手过程分析

    • 第一次 客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,sep=x

    • 第二次 服务器发给客户端,客户端知道自己发送,接收正常,发送正常

    • 第三次 客户端发给服务器 服务器知道客户端发送,接收正常,自己接受,发送也正常,sep=x+1,ACK=1,ack=y+1

    上面分析过程可以看出,握手两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论的

    3 四次挥手

    3.1四次挥手过程

    • 第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
    • 第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
    • 第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
    • 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

    3.2 四次挥手过程分析

    • 第一次:客户端请求断开FIN,seq=u
    • 第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
    • 第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
    • 第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1

    4. 其他问题

    4.1 为什么三次握手和四次挥手

    • 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
    • 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。

    4.2 为什么客户端最后还要等待2MSL

    • 客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。

  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/yimeng123/p/14010140.html
Copyright © 2011-2022 走看看