怎样理解三次握手和四次挥手?

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

目录

1. 三次握手

2. 为什么是三次握手,两次?四次不行吗? 

3. 四次挥手

4. 为什么不能三次挥手?


1. 三次握手

三次握手的大致流程图如下所示

(1)当客户端想与服务端建立连接时,客户端会先发送连接请求到服务端,该请求需要服务器接收并确认,这是一次握手;

(2)当服务端收到了客户端发来的请求后,服务端会给客户端一个响应,告诉客户端我接受到了你的连接请求,这是第二次握手;

(3)客户端收到了服务端发来的确认消息之后,会再次向服务端发送确认信息,然后链接就建立成功,这是第三次握手。

怎样理解三次握手和四次挥手?,java,服务器,前端

2. 为什么是三次握手,两次?四次不行吗? 

只进行两次握手是不行的,因为很有可能客户端只发送一次数据,或者发着玩,恶意攻击等。如果是这样,当客户端接收到请求时候,在返回响应时连接就已经建立了,此时连接已经建立,但客户端却又不发送信息,就会造成连接资源的浪费;

四次握手其实也是可以的,但是三次握手就已经能确认服务端与客户端发送与接收信息的能力,不需要再进行第四次握手,多一次握手也会造成资源的浪费。

3. 四次挥手

当我们想要关闭客户端与服务端的连接时,需要进行四次挥手,大致流程如下图所示

怎样理解三次握手和四次挥手?,java,服务器,前端

(1)客户端想要断开与服务端的链接,先向服务端发送断连请求;

(2)服务端收到了客户端发来的请求,然后会给客户端一个响应,表示已经接收到断连请求,但此时连接还未中断;

(3)服务端在接收到断连请求后,会将连接通道内的数据尽快处理完毕,当处理完成数据之后,服务端会再次向客户端发送请求,表示数据已经处理完成,可以断开连接;

(4)客户端收到了服务端发送的确认消息后,会再次发送确认消息,然后连接就会断开;

4. 为什么不能三次挥手?

有些面试官可能会问到,我们能不能将第二次与第三次客户端的发送合并在一起,这样就能减少一次发送?

其实是不行的,因为第二次服务端向客户端发送确认收到断开连接的时候,它还只是处于一个待关闭的状态,此时服务端可能还有一些资源没有释放,还有一些请求未处理完,实际上第二次挥手与第三次挥手它们中间其实可能会有很高的延迟,30s甚至是1~3分钟,如果我们将第二步与第三步合并发送,那么在此期间客户端需要等但很长时间,客户端一直未收到服务端发送的响应,很有可能超时,认为发送失败,它就会选择再重新发送一次断连请求,甚至发送好几次断连请求,就会造成重复操作,造成资源的浪费。而且第二次发送能保证客户端在发送请求后短时间内就可以收到服务端发送的信息,在保证两端收发信息的能力。文章来源地址https://www.toymoban.com/news/detail-663808.html

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

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

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

相关文章

  • TCP的三次握手和四次挥手

    既然我们文章要说的是TCP的三次握手,和四次挥手,那么肯定是说的连接,也不是说的不其他的。那么它这个连接的过程说的是什么呢? 我们还是从图中理解,这样比较好理解, TCP第一次握手:服务端的TCP进程先创建传输控制块TCB,准备接受客户端进程的连接请求,然后服

    2024年02月01日
    浏览(41)
  • tcp 三次握手和四次挥手报文分析

     报文抓取如下: 三段报文分析: 第一次:26-96报文交互 Seq-num = 567391014, ACK_NUM = 0; flags = SYN 第二次:96-26报文交互 Seq-num = 416352681,  ACK_NUM = Seq-num + 1 =567391014 +1 =567391015, flags = ACK + SYN,   第三次:26-96报文交互 Seq-num= ACK_NUM= 567391015, ACK_NUM = seq-num +1= 416352681+ 1 = 416352682, flags

    2024年02月04日
    浏览(41)
  • TCP的三次握手和四次挥手······详解

    三次握手是 建立连接 的过程 如图大致为三次握手的流程图: 当客户端对服务端发起连接时,会 先发一个包 连接请求数据,去询问能否建立连接,该数据包称为 “SYN”包 然后,如果对方同意连接,那么对方将会回复一个 “SYN+ACK”包 客户端收到后,回复一个 “ACK”包 ,连

    2024年02月09日
    浏览(28)
  • 【网络知识点】三次握手和四次挥手

    三次握手的原理如下: 客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序列号(ISN)。 服务器收到SYN包后,会发送一个SYN+ACK(同步+确认)包作为响应,其中包含确认号(ACK)和自己的随机生成的ISN。 客户端收到服务器的SYN+ACK包后,会发送一个ACK(确

    2024年02月09日
    浏览(31)
  • TCP中的三次握手和四次挥手

    TCP中的连接和断开可以说是在面试中经常被问到的问题之一,正好有空就总结一下,首先回顾一下TCP的相关知识点 1.1 TCP的基本概念 我们知道TCP是运输层的面向连接的可靠的传输协议。 面向连接的 ,指的就是在两个进程发送数据之前,必须先相互“握手”,确保两进程可以

    2024年02月03日
    浏览(41)
  • TCP协议的三次握手和四次挥手

    完整的TCP内容,请参考RFC 9293 TCP协议为应用提供可靠的、有序的的字节流服务。TCP是面向连接的,提供了全双工的通信。TCP使用端口号来识别应用程序服务并在主机之间复用不同的流。 TCP header也像IP header一样,在header中提供了一些专门用于TCP的信息,TCP header之后就是用户数

    2024年02月06日
    浏览(32)
  • 为什么是三次握手和四次挥手

    因为这是双方都有收发的最小次数 握手的目的:确认网络好着没,对方好着没 确认双方主机是否健康(双方) 验证双方是否具有全双工。 比如发送数据不是为了对方接受,而是为了证明自己能够发送数据。 一次握手,服务端知道自己能收; 两次握手,客户端知道自己能够

    2024年02月02日
    浏览(50)
  • 面试题之TCP的三次握手和四次挥手

    TCP的三次握手: 一定由 客户端主动发起 的,发生在建立连接的过程中。 此过程发生在 客户端的connect()函数 和 服务器的accept()函数 之间。 第一次握手: 客户端向服务器发送一个 带有SYN标志的数据包 ,表示客户端请求建立连接。 并且客户端会 选择一个随机的序列号a 放在

    2024年02月07日
    浏览(36)
  • 详解TCP/IP的三次握手和四次挥手

    本文章讲解TCP/IP协议的三次握手和四次挥手的流程。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 TCP协议位于传输层,作用是提供可靠的字节流服务

    2024年02月09日
    浏览(33)
  • TCP的连接和建立(三次握手和四次挥手)

    ​ 1.TCP连接的建立 ​ 连接的建立,通常称为三次握手。 ​ ​ 建立连接前服务器处在收听状态。 ​ 第一步:客户机的TCP向服务器的TCP发送连接请求报文段。同步位 = 1。这时客户进程进入同步已发送状态。 ​ 第二步:服务器TCP收到连接请求报文段后,如同意建立连接,向客

    2024年02月16日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包