学习笔记17——通俗易懂的三次握手四次挥手

news2025/1/12 20:43:46

提供一种博主本人觉得很好理解的三次握手和四次挥手场景,帮助记忆

  • 在这里插入图片描述
  • 三次握手过程
    • 初始状态:客户端处于closed状态,服务器处于listen监听转台
    • 客户端向服务器发送一个SYN连接请求,并告诉对方自己此时初始化序列号为x,发送之后处于SYN_send状态
    • 服务器收到客户端发来的请求,如果同意建立连接,那么就也发送一个SYN=1的信号,并发送自己的初始化序列号seq = y,同时为了告诉客户端自己下一步想要接收的信息(为了告诉客户端你的消息我收到了),发送确认序列号ack = x+1,并将ACK置为1发送回去,服务器此时为SYN_Receive状态【站在客户端,此时发送信息并得到回应,她会认为这是个靠得住的服务器,但是对于服务器来说,你发送我就全盘接收可太没有保障了,我都不知道你是谁,也不知道你到底有没有发送能力,就白白留一个连接等着你,所以服务器不答应两次握手,他也要试试客户端是真有能力还是假有能力,此时迎来第三次握手】
    • 第三次握手是客户端收到服务端的返回后,客户端发送同步序列号seq = x+1,并对服务器端的序列进行确认响应,将ACK置为1并回复ack=y+1,客户端转为established,服务器收到这个消息之后也转为established。
  • 在这里插入图片描述
  • 四次挥手流程
    • 1、客户端:我要和你离婚,这是离婚协议书,我已经签了你签个字吧【发送FIN=1,并发送此时的序列号seq=u,进入FIN_WAIT1】
    • 2、服务端:啊?你再说一遍?你要和我离婚,我还有好多愿望没和你一起实现呢【发送ACK=1,ack=u+1,seq=v,服务端进入CLOSE_WAIT,客户端听了进入了FIN_WAIT2】你听我说啊巴拉巴拉
    • 3、服务器端见到自己挽回了这么久,客户端也没有说一句话,知道没有希望了:好吧,缘分尽了莫强求。他狠下心来签了离婚协议书【FIN=1,ACK=1,seq=w,ack=u+1,服务端进入LAST_ACK状态】
    • 4、客户端冷静的看到签好的离婚协议书,说:从此一别两宽吧,她顿了一下,想看看服务器还要说什么,毕竟夫妻一场以后再也见不到了,心中还是空落落的,【ACK=1,seq=u,ack=w+1,客户端发送消息完进入TIME_WAIT,服务器收到直接进入CLOSED】,可过了一会儿见还是一阵沉默,她心想:”算了,一切都结束了!“【客户端进入CLOSED】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s的策略

集群调度: Scheduler的调度算法: 预算策略 过滤出合适的节点 优先策略 选择部署的节点 NodeName:硬策略,不走调度策略,node1 nodeSelector:根据节点的标签选择,会走一个调度算法 只要是…

MySQL:索引失效场景总结

1 执行计划查索引 通过执行计划命令可以查看查询语句使用了什么索引。 EXPLAIN SELECT * FROM ods_finebi_area WHERE areaName = 福建 执行查询计划后,key列的值就是被使用的索引的名称,若key列没有值表示查询未使用索引。 2 在什么列上创建索引 (1)列经常被用于where…

工程送样!手把手教你用好广和通RedCap模组FG131FG132系列

2024年1月,广和通RedCap模组FG131&FG132系列已进入工程送样阶段,可为终端客户提供样片。广和通RedCap模组系列满足不同终端对5G速率、功耗、尺寸、成本的需求,全面助力RedCap技术的行业应用。 FG131&FG132系列基于骁龙X35 5G调制解调…

2020年认证杯SPSSPRO杯数学建模C题(第二阶段)抗击疫情,我们能做什么全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 C题 抗击疫情,我们能做什么 原题再现: 2020 年 3 月 12 日,世界卫生组织(WHO)宣布,席卷全球的冠状病毒引发的病毒性肺炎(COVID-19)是一种大流行病。…

[Android自定义View]实现一个环形进度条控件

[Android View]实现一个环形进度条 导言 之前的文章里我们已经介绍了自定义View相关的知识了,本篇文章我们就来实战一下,从零到一,实现一个环形进度条的控件。 具体实现 大体框架 我们说过,如果要实现一个自定义控件的话一般有…

XCTF-Misc1 pcap1 misc2-1

pcap1 附件是一个xxxxx.pcap流量包 分析 1. 流量包筛选 统计协议分级,发现主要是TCP协议 查看TCP协议的流量包,筛选关键词tcp contains flag 跟踪TCP流,发现是python代码,将其导出 2. 导出的代码分析 导出的代码&#xff…

AlexNet论文翻译与精读

1:该论文解决了什么问题? 图像分类问题 2:该论文的创新点? 1:使用了大的深的卷积神经网络进行图像分类; 2:采用了两块GPU进行分布式训练; 3:采用了Relu进行训练加速; 4:采用局部归一化提高模型泛化能…

夺命追问带你深入了解ArrayList与LinkedList

目录 一、ArrayList 问题1:说一下JDK1.7与1.8 ArrayList有什么区别? 问2:说一下ArrayList的扩容机制? 问3:下面这段代码会将数组扩容到多少? 问4:说说迭代器Iterator的两种规则&#xff1a…

如何理解线程池中的参数设计

如何理解线程池中的参数设计 你的线程池的参数怎么配置?线程数量设置多少合理?如何确定一个线程池中的人物已经完成了为什么不建议使用java自带的Executors创建线程池线程池里面的阻塞队列设置多少合理? 考察:了解你对技术的掌握…

如何查看SSL证书到期时间

随着互联网的发展,SSL证书在保护网站安全方面发挥着越来越重要的作用,SSL证书过期之后带给网站的损失也比较大,许多网站管理员可能会忽略SSL证书到期的问题,从而导致网站安全漏洞。今天,就随SSL盾小编了解有什么办法查…

开源云真机平台-Sonic平台-python自定义脚本(持续更新中)

开源云真机平台-Sonic平台-python自定义脚本(持续更新中) 1、获取设备序列号 udId sys.argv[1:][1] 如: # -*- coding: utf-8 -*- import os,sys,json udId sys.argv[1:][1] 2、获取全局参数 text1 sys.argv[1:][2] 如: # -*- coding: utf…

邻接矩阵、可达性矩阵、完全关联矩阵、可达性矩阵的计算

邻接矩阵:很简单,就是两个点有关系就是1,没有关系就是0 可达性矩阵:非常简单,两点之间有路为1,没有路为0 可发行矩阵的计算:有n个元素,初始可达性矩阵为A,那么最终的矩阵…

【软考中级-软件设计师】day7:图

概述 1-2道选择 图的存储 图的遍历 图的最小生成树 prim算法 kruscal算法 2135476 选7不选6是因为4的先删除(vi必须在vj之前)跟4有关的删了以后,入度为0的结点只剩下7,所以选7再6

烟火识别系统、ai视频烟火自动报警系统、烟火监测系统、烟火报警

在现代社会,烟火(包括烟雾和火焰)的及时识别对于防灾减灾具有至关重要的作用。随着人工智能技术的发展,基于AI的视频烟火识别系统已成为研究和应用的热点。这些系统通过分析监控视频,能够迅速准确地识别出烟雾和火焰&a…

内存分区模型---C++

目录 内存分区模型1.1 程序运行前1.2 程序运行后1.2.1 new操作符 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的;全局区:存放全局变量和静态变量以及常…

SpringBoot学习(五)-Spring Security配置与应用

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! Spring Security Spring Security是一个基于Java的开源框架,用于在Java应用程…

网络传输(TCP)

前言 我们tcpdump抓包时会看到除报文数据外,前面还有一段其他的数据,这段数据分为两部分,ip包头(一般20字节)和tcp包头(一般20字节),一般这两个头长度和为40,我们直接跳…

HarmonyOS 开发基础(九)forEach

HarmonyOS 开发基础(九)forEach 一、基础使用 Entry Component struct Index {// 创建一个变量,用来存储图片网络网址imageUrl: string https://gw.alicdn.com/imgextra/i2/2201227850912/O1CN01B7gVvP1Ibk6HMiDRz_!!2201227850912.jpg_Q75.…

父类,父类的分类、子类 同时重写方法,调用问题

做一个猜想,当父类、父类的分类、子类 都写了同一个方法,那么在调用的时候会优先调用哪个方法呢?我们可以先写一个简单的demo implementation Person (void)test {NSLog("%",self.class); }end然后是Person的分类 #import "…

git 使用 submodule 如何指定分支

写在前面, 作为一个前端我是不喜欢使用 submodule的, 我更喜欢 npm 包的管理方式。 首次添加子模块 git submodule add -b <branch> <remote> <path> 不指定分支就不传 -b <branch> <branch> 分支名<remote> 仓库地址<path> 子模块…