计算机网络之TCP四次挥手

这篇具有很好参考价值的文章主要介绍了计算机网络之TCP四次挥手。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机网络之TCP四次握手

1.TCP四次挥手过程

定义:建立一个连接需要三次握手,而终止一个连接要经过四次挥手;这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力

刚开始双方都处于ESTABLISHED 状态,假如是客户端先发起关闭请求。四次挥手的过程如下
1.第一次挥手:
当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据)
Client发送一个FIN报文,用来关闭Client到Server的数据传送,报文中会指定一个序列号,即发出连接释放报文段(FIN=1,序号seq=u);
Client进入FIN_WAIT_1(终止等待1)状态
2.第二次挥手:
即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v);
Server进入CLOSE_WAIT(关闭等待)状态;
此时TCP链接处于半关闭状态,客户端到服务端的连接释放,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收;
客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段
3.第三次挥手:
Server发送一个FIN,且指定一个序列号,用来关闭Server到Client的数据传送(和客户端的第一次挥手一样);
Server进入LAST_ACK状态。
4.第四次挥手:
Client进入TIME_WAIT状态, 等待 2MSL 时间;
Server进入CLOSED状态

tcp四次挥手,计算机网络,网络,tcp/ip,网络协议

tcp四次挥手,计算机网络,网络,tcp/ip,网络协议

2.任何一方执行close()操作即可产生挥手操作为什么要等待呢

附:在socket编程中,任何一方执行close()操作即可产生挥手操作
为什么要等待呢?
为了防止这种情况:A接到B的释放连接请求后会发送一个确认信息,但是如果这个确认信息丢了,也就是B没有收到确认释放连接,那么B就会重发一个释放连接请求,这时候A还处于TIME_WAIT状态,所以会再次发送一个确认信息。
为什么TIME_WAIT 状态还需要等2*MSL秒之后才能返回到CLOSED 状态呢?
因为虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到CLOSED 状态(就好比从SYN_SENT 状态到ESTABLISH 状态那样),但是我们必须假想网络是不可靠的,你无法保证你最后发送的ACK报文一定会被对方收到,就是说对方处于LAST_ACK 状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT 状态的作用就是用来重发可能丢失的ACK报文。

3.说说 TCP 四次挥手过程

思路: TCP 的四次挥手,也是最重要的知识点,一般跟三次握手会一起考的,必须得记住。

tcp四次挥手,计算机网络,网络,tcp/ip,网络协议

● Client状态变化:Fin-Wait-1 -> Fin-Wait-2 -> Time-Wait -> Closed
● Server状态变化:Close-Wait -> Last-Ack -> Closed

具体流程:
1.第一次挥手:客户端发送连接释放报文FIN=1,序号(握手时初始序号 + 发送的字节数据数量 + 1)seq=u,发送完毕后,客户端进入FIN_WAIT_1状态。
2.第二次挥手:服务器发出确认收到报文ACK=1,确认号ack=u+1,序列号(握手时初始序号 + 回复的字节数据)seq=v,发送完毕后,服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态。
3.第三次挥手:关闭连接,发送连接释放报文FIN=1,确认号ack=u+1,初始序号seq=w,发送完毕后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个 ACK。
4.第四次挥手: 客户端接收到来自服务器端的关闭请求,发回确认收到报文ACK=1,确认序号ack=u+1,初始序号seq=w+1,客户端进入 TIME_WAIT 状态,等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

4.TCP挥手为什么需要四次呢

思路: TCP 挥手为什么需要四次呢?为了方便大家理解,再举个生活的例子吧。
★ 小明和小红打电话聊天,通话差不多要结束时,小红说,“我没啥要说的了”。小明回答,“我知道了”。但是小明可能还有要说的话,小红不能要求小明跟着她自己的节奏结束通话,于是小明可能又叽叽歪歪说了一通,最后小明说,“我说完了”,小红回答,“我知道了”,这样通话才算结束。

tcp四次挥手,计算机网络,网络,tcp/ip,网络协议

总结:
Server端可能还有数据没有发送完毕。Client发出连接释放通知,Server确认收到后,Client就进入半关闭状态(只收消息不发消息),Server把未发完的数据发送完毕后,发送连接释放通知,Client确认后就关闭连接。

5. TCP 四次挥手过程中,为什么需要等待 2MSL, 才进入 CLOSED 关闭状态

2MSL,two Maximum Segment Lifetime,即两个最大段生命周期。假设主动发起挥手的是客户端,那么需要 2MSL 的原因是:
● 1. 为了保证客户端发送的最后一个 ACK 报文段能够到达服务端。 这个 ACK 报文段有可能丢失,因而使处在LAST-ACK状态的服务端就收不到对已发送的FIN + ACK报文段的确认。服务端会超时重传这个 FIN+ACK 报文段,而客户端就能在 2MSL 时间内(超时 + 1MSL 传输)收到这个重传的 FIN+ACK 报文段。接着客户端重传一次确认,重新启动 2MSL 计时器。最后,客户端和服务器都正常进入到CLOSED状态。(简述:防止ack报文丢失,Server再次发送Fin报文,一来一回最长时间就是2MSL)
● 2. 防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个连接中不会出现这种旧的连接请求报文段。

tcp四次挥手,计算机网络,网络,tcp/ip,网络协议文章来源地址https://www.toymoban.com/news/detail-636877.html

到了这里,关于计算机网络之TCP四次挥手的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

    TCP是面向连接的、可靠的,基于字节流的传输层通信协议 。 图片来源小林coding 序号:传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A - B且ISN = 1024,第一段数据512字节已经

    2024年02月14日
    浏览(49)
  • 计算机网络:TCP协议的三次握手和四次挥手与UDP协议区别.

    TCP协议: UDP协议: TCP协议与UDP协议都工作在传输层. TCP协议与UDP协议它们的目标: TCP协议与UDP协议的最大区别: TCP协议保持连接的三个关键步骤: UDP协议: TCP协议与UDP协议主要区别: 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的

    2023年04月15日
    浏览(53)
  • 【计算机网络】TCP握手与挥手:三步奏和四步曲

    TCP(传输控制协议)是一种面向连接的可靠的传输协议。在建立连接和关闭连接时,TCP使用了三次握手和四次挥手的机制来确保通信的可靠性。 TCP是一种非常重要的传输层协议,被广泛应用于各种网络通信场景中。无论是企业内部的数据传输,还是互联网上的数据交换,都离

    2024年01月21日
    浏览(37)
  • 计算机网络——三次握⼿、四次挥手

    1、 第⼀个SYN报⽂ : 客户端 随机初始化序列号client_isn ,放进TCP⾸部序列号段, 然后把 SYN置1 。把SYN报⽂发送给服务端,表⽰发起连接, 之后 客户端处于SYN-SENT状态。 2、 第⼆个报⽂SYN+ACK报⽂ : 服务端收到客户端的SYN报⽂,把 ⾃⼰的序号server_isn放进TCP⾸部序列号 段,

    2024年02月15日
    浏览(37)
  • 【计算机网络】三次握手 四次挥手

    目录 1.三次握手 2.四次挥手 3.总结 三次握手和四次挥手是有连接特有的。三次握手,四次挥手指的是TCP有连接特点的中的步骤 。建立连接(三次握手),断开连接(四次挥手)。建立连接操作一般都是客户端主动发起,断开连接操作客户端和服务器都可以主动发起。 1.三次握手

    2024年02月08日
    浏览(42)
  • 【计算机网络】TCP|IP协议

    目录 前言 什么是TCP/IP协议? TCP/IP协议的层次结构 TCP/IP协议的工作原理 TCP/IP协议的重要性 结语   TCP/IP协议是当今互联网世界中最重要的网络协议之一,它是网络通信的基石,为数据在网络中的传输提供了可靠性和有效性。本文将深入探讨TCP/IP协议的重要性、基本原理以及其

    2024年02月03日
    浏览(60)
  • 计算机网络——TCP/IP网络层次模型

    我们上一次了解了OSI的网络层次模型,如果还没有看过上一次OSI网络模型的可以点击这里: https://blog.csdn.net/qq_67693066/article/details/136597950 我们今天来看实际在生活中使用更广的 TCP/IP网络模型 : TCP/IP网络模型的起源可以追溯到20世纪60年代末和70年代初,当时美国国防部的高级

    2024年03月17日
    浏览(48)
  • TCP/IP 下的计算机网络江湖

            在当今数字化时代,计算机网络宛如广袤江湖,涵盖着五大门派:物理层、数据链路层、网络层、传输层和应用层。每个门派独具技能,共同构筑着现代网络的框架。物理层宛如江湖基石,将比特流传输;数据链路层如武林传承,组织数据帧传递;网络层则像导航

    2024年02月13日
    浏览(39)
  • 计算机网络—网络原理之<TCP/IP 五层协议 >图解+详述

    当应用程序间需要进行网络通讯,在 TCP/IP 五层协议的应用层需要做的工作是,程序员 自定义应用层协议 。 当前要开发一个关于“点外卖软件”的一个项目,其中有一个功能为:获取用户的订单历史(后端服务器从数据库中取出数据返回给前端页面),类似像这样的功能,

    2024年02月07日
    浏览(62)
  • 计算机网络学习01-TCP/IP 五层模型概述

    谈论计算机网络模型之前,我们先来谈谈,为什么要分层,这样的好处是什么。 当谈到Internet 时,我们总能听到的一个词汇就是 协议 (protocol)。协议定义了发送者、接收者和所有中间设备为了高效通信需要遵循的规则。当通信简单时,我们可能只是需要一个简单的协议:当通

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包