三次握手与四次挥手的爱恨情仇

2024-01-12 05:08

本文主要是介绍三次握手与四次挥手的爱恨情仇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三次握手与四次挥手的爱恨情仇---你与他(她)的爱情故事

  • 前言
  • 一、三次握手
  • 二、四次挥手
      • 为什么建立连接是三次握手,关闭连接确是四次挥手呢?
      • 如果已经建立了连接,但是客户端突然出现故障了怎么办?
  • 总结


前言

本文见面知意,介绍三次握手与四次挥手,通读全文之后,保准你记住三次握手与四次挥手


一、三次握手

三次握手,就像你追一个人,向别人表白一样。

你(客户端)说(发送SYN报文):我喜欢你,你能做我男(女)朋友吗?
你喜欢的人(服务器)说(发送SYN/ACK报文):好的呀
你(客户端)直接报上去亲了一口(发送ACK),确立了关系(建立连接)

为什么TCP客户端最后还要发送一次确认?
这就相当于问你(客户端),为什么还要亲她一口(为什么还要最后确认一次),肯定是为了防止别人(突然失效的连接)又出现,你宣示主权(携带数据)

  • 过程:

    • 第一次第二次第三次
      客户端发送SYN
      同步已发送状态
      发送ACK
      建立连接状态
      服务器发送SYN/ACK
      同步收到状态
      结果客户端结论:客户端发送能力正常
      服务器接收能力正常
      客户端结论:服务器接收、发送正常
      客户端接收、发送正常
      服务端结论:服务器接收、发送正常
      客户端接收、发送正常
  • 作用:

    • 确认双发接收、发送能力是否正常
    • 指定自己的初始化序列号,为后面的可靠传输做准备
    • 如果时https协议,三次握手还会进行数字证书的验证以及加密密钥的生成
  • 其他注意事项

    • SYN、ACK
      • SYN:证明发送方到接收方的通道没有问题
      • ACK:证明接收方到发送方的通道没有问题
    • ISN:
      • 作用:为了让对方知道接下来接收数据的时候如何按照序列号组装数据
      • ISN动态生成的
    • 半连接队列
      • 没有完全建立连接
    • 携带数据
      • 第一次、第二次没有携带数据
      • 第三次携带数据
    • 为什么TCP客户端最后还要发送一次确认:
      • 防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误

二、四次挥手

四次挥手就比较渣了,你刚刚交的男(女)朋友,你突然不喜欢了,准备和他(她)分手。
你(客户端)说(发送FIN)(进入终止等待状态1):我们分手吧
你刚刚喜欢的人(服务器)说(发送ACK)(关闭等待状态):让我想想
他(她)还喜欢你,但你不喜欢他(她),所以当他(她)说想一想的时候你在焦急的等待(进入终止等待状态2)
你刚刚喜欢的人(服务器)说(发送FIN)(最后确认状态):握不住的沙,不如扬了它
你(客户端)说(发送ACK):你好,再见(进入时间等待状态)
你刚刚喜欢的人(服务器)内心悲伤(关闭连接)

  • 过程:

    • 第一次第二次第三次第四次
      客户端发送FIN
      终止等待状态1
      终止等待状态2发送ACK
      时间等待状态
      服务器发送ACK
      关闭等待状态
      发送FIN
      最后确认状态
      关闭连接
    • 客户端的时间等待状态:为了确保服务器收到ACK报文

  • 为什么建立连接是三次握手,关闭连接确是四次挥手呢?

    • 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
    • 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
    • 总结:三次握手比四次挥手多在了服务器是否确认关闭连接上
  • 如果已经建立了连接,但是客户端突然出现故障了怎么办?

    • TCP设有一个保活计时器

总结

  • 三次握手与四次挥手的爱恨情仇到此结束,希望大家可以喜欢

这篇关于三次握手与四次挥手的爱恨情仇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596883

相关文章

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

TCP三次握手详解!

TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) UR

Linux - Tcp连接建立和释放的三次握手四次挥手

一、TCP报文段首部格式         源端口/目的端口:各占2个字节,分别写入源端口和目的端口,端口是传输层与应用层的服务接口    序号:占4个字节,TCP连接中传送的数据流中每一个字节都有一个序号,序号字段指本报文段所发送的数据的第一个字节的序号    确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号    数据偏移:占4个字节,它指出TCP报文的数据距离TCP

Ferrari求解四次方程

参考: 1) https://proofwiki.org/wiki/Ferrari’s_Method#google_vignette 2)https://blog.csdn.net/qq_25777815/article/details/85206702

tcp三次握手及其必要性

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如下图所示。 主机A为客户机,主机B为服务器 确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。 说明: (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。 (2)第二次握手:服务器B收到SY

为什么http请求要3次握手与4次挥手?

https://www.zhihu.com/question/67772889 作者:eechen 链接:https://www.zhihu.com/question/67772889/answer/257170215 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 因为HTTP是一个基于TCP的协议,而TCP是一种可靠的传输层协议. 建立

[Linux网络]TCP三次握手和四次挥手的连接建立和断开

TCP的三次握手 第一次握手:客户端发送网络包,服务器端收到,证明客户端的发送能力、服务器的接收能力是正常的。第二次握手:服务器发送网络包,客户端收到,证明服务器端的发送能力是正常的,不过此时并不能确定,客户端的接收能力是正常的。第三次握手:客户端发包,服务器端收到,服务器端可以得出结论,客户端的发送,接收能力是正常的。服务器端的接收,发送能力是正常的。 什么是半连接队列? 服务器端第一次

Nginx: 性能优化之提升CPU效率以及TCP的三次握手和四次挥手

提升利用CPU的效率 1 )CPU的调度机制 现在来看下 linux中 CPU的一个调度机制 假设现在系统上有只有一颗CPU,而linux系统是一个多任务的一个操作系统 它允许我们各个不同的用户允许在同一个操作系统上执行很多个进程 单核CPU肯定不可能同时去执行这样一些程序 CPU在同一时刻只能够调度一个进程来执行,没办法并发执行多个程序 从宏观上来看,多任务系统,都是能够一起

TLS握手性能测试工具:快速重置、多线程与高级统计分析(C/C++代码实现)

随着网络安全的日益重要,传输层安全性(TLS)协议在保护数据传输中扮演着关键角色。TLS握手作为该协议的核心部分,确保了客户端和服务器之间的安全通信。鉴于其重要性,对TLS握手的性能进行精确评估变得至关重要。该工具专注于TLS握手的性能测试,而不涉及数据传输或重协商。 快速重置TCP连接 理解快速重置TCP连接对于优化TLS握手性能具有重要意义。 在数据传输过程中,TCP连接的建立和关闭是必

TCP 之 三次握手 (面经计网篇)

这是tcp 简历连接的三次握手方式 , 其中的特殊符号 , 我解释下 , SYN 是 同步的这个单词(synchronization), ACK 是回执,承认的单词(acknowledgement), SYN-ACK 服务器收到SYN报文后,回复一个带有SYN和ACK标志的报文段,这表示服务器已经收到了客户端的SYN报文,并且期望收到下一个字节的序列号为服务器传递的确认号。拓展1,2,3 (介