美文网首页
TCP协议的三次握手与四次挥手

TCP协议的三次握手与四次挥手

作者: 晴天的晴q | 来源:发表于2019-02-08 22:00 被阅读0次

    两个序号和三个标志位:

      (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

      (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。

      (3)标志位:共6个,即URG、ACK、PSH、RST、SYNFIN等,具体含义如下:

      (A)URG:紧急指针(urgent pointer)有效。

      (B)ACK:确认序号有效。

      (C)PSH:接收方应该尽快将这个报文交给应用层。

      (D)RST:重置连接。

      (E)SYN:发起一个新连接。

      (F)FIN:释放一个连接。

    需要注意的是:

      (A)不要将确认序号ack与标志位中的ACK搞混了。

      (B)确认方ack=发起方req+1,两端配对。

    三次握手

    浏览器向服务器发出请求链接报文段

    第一次握手:浏览器随机选择一个序列号 seq = x 作为自己的初始序号发送给服务器

    第二次握手:服务器使用 ack 对浏览器的数据包进行确认,因为收到序列号为 x 的数据包,所以 ack = seq + 1,同时服务器告诉浏览器自己的初始序号 seq = y

    第三次握手:浏览器告诉服务器收到了服务器的确认消息并准备建立链接,浏览器自己此条消息的序列号是 x + 1,所以 seq = x + 1,而 ack = y + 1 是表示浏览器正准备接收服务器序列号为 y + 1的数据包

    四次挥手

    由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接

    收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。

    第一次挥手:浏览器发送一个 FIN,用来关闭浏览器到服务器的数据传送,浏览器进入 FIN_WAIT_1 状态。

    第二次挥手:服务器收到 FIN 后,发送一个 ACK 给浏览器,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入 CLOSE_WAIT 状态。

    第三次挥手:服务器发送一个 FIN,用来关闭服务器到浏览器的数据传送,服务器进入 LAST_ACK 状态。

    第四次握手:浏览器收到 FIN 后,服务器进入 TIME_WAIT 状态,接着发送一个 ACK 给服务器,确认序号为收到序号+1,服务器进入 CLOSED 状态,完成四次挥手。

    相关文章

      网友评论

          本文标题:TCP协议的三次握手与四次挥手

          本文链接:https://www.haomeiwen.com/subject/bwbosqtx.html