网络---TCP协议(一)三次握手、四次挥手

news/2024/4/24 12:43:53/文章来源:https://blog.csdn.net/flyingcloud6/article/details/128851380

目录

一、面向连接

三次握手:

1、双方发送的数据包名称

 2.双方连接状态:

 问题:为什么tcp需要三次握手才能建立连接,两次不行吗?

3、包序管理(重要!!!)

序号与确认序号

通过抓包研究tcp的序号与确认序号

结论:纯ACK数据包不消耗序号

 发送数据的时候,针对每一个字节都进行了编号

二、四次挥手

2.1  连接数据包名称    双方连接状态

面试题1:挖坑分析TIME_WAIT的在哪里

面试题2:主动断开连接方为什么需要等待2MSL的时候之后,状态才能从TIME_WAIT状态,变迁为CLOSED状态

面试题3:如果服务端存在大量的TIME_WAIT状态,如何快速的重启进程?


一、面向连接

三次握手:

我们先来回想一下,三次握手是什么时候发生的呢?

结论1:服务端处于监听状态,客户端调用connect函数,才会进入三次握手阶段

结论2:三次握手阶段,程序猿没有具体参与,是由客户端和服务端的TCP协议进行连接的

1、双方发送的数据包名称

我们可以通过抓包来验证下三次握手的数据包名称:

 2.双方连接状态:

 问题:为什么tcp需要三次握手才能建立连接,两次不行吗?

1. 通过状态去解释

思路:2次握手,客户端认为连接已经建立,服务端认为连接还没有建立

2. 为什么服务端认为连接没有建立?

因为,没有第三次的ACK,服务端是没有办法确认,SYN+ACK数据包是否到达了客户端

3、包序管理(重要!!!)

先来复习一下TCP_socket的内容

服务端和客户端通过网络进行发送数据:

 结论:

tcp维护了发送缓冲区和接收缓冲区,send函数发送的内容, 会先放到tcp的发送缓冲区当中,tcp自己择机发送 (tcp自己选择发送的时机, 自己选择发送的数据量)。             rev函数接收的内容, 是从tp的接收缓冲区当中进行接收的, 接收的数量由
                                                              程序员调用的recv函数的第三次参数决定。

那么这个东西和包序管理有什么关系呢?

在上面的图中,不论是服务端给客户端发送数据还是客户端给服务端发送数据,都需要保证两个东西

可靠:  一定要能 可靠到达对方

有序:  针对于应用层而言的,发送方发送的数据是有顺序的,接收方接收数据的时候也是有顺序的。

结论:TCP要保证可靠和有序,TCP的发送方在发送数据的时候,针对发送的数据,进行了序号的编号

序号与确认序号

那么服务端给客户端发送数据的时候有没有序号的编号呢?

肯定是有的,有两套序号

通过抓包研究tcp的序号与确认序号

序号:发送方发送数据的时候,针对数据的编号

确认序号:接收方告诉发送方,期望下一次发送方从哪个序号开始发送数据,引申含义就是:接收方告诉发送发,确认序号之前的内容都收到了

我们可以直接把之前的HTTP的数据包拿来分析,只分析里面的TCP的部分

 追踪一下就能得到:

 我们来分析一下这个过程:

 面试问题:

                双方在连接建立的过程,序号一定要从0开始吗?

不一定,只要满足后续发送的数据,按照之前的序号进行编号就行了

结论:纯ACK数据包不消耗序号

 我们现在用之前写的tcp_demo更好的理解一下这个:

 我们利用抓包分析一下这个过程

 上面过程画成图的话就是:

 发送数据的时候,针对每一个字节都进行了编号

 ack  = 发送方发送数据的起始序号  +   发送方发送的数据长度

二、四次挥手

2.1  连接数据包名称    双方连接状态

强调:在连接建立的情况下,双方都可以发起断开连接的动作

面试题1:挖坑分析TIME_WAIT的在哪里

客户端先告诉服务端连接断开,这个时候服务端存在大量的TIME_WAIT状态怎么办呢?

          1、 客户端由于是先给服务端发送的断开连接请求,所以TIME_WAIT状态不会存在服务端,而是客户端

           2、面试官你是想问客户端存在大量的TIME_WAIT状态吗?----》最终问题可能归结为服务端先断开,存在大量TIME_WAIT状态怎么解决?

面试题2:主动断开连接方为什么需要等待2MSL的时候之后,状态才能从TIME_WAIT状态,变迁为CLOSED状态

面试题3:如果服务端存在大量的TIME_WAIT状态,如何快速的重启进程?

 设置端口重用, setsockopt函数,就能解决这个问题。

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The last packet sent successfully to the server was 0 milliseconds ago. 解决办法

mybatis-generator-maven-plugin插件The last packet sent successfully to the server was 0 milliseconds agoYou must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to…

【✨十五天搞定电工基础】基本放大电路

本章要求1. 理解放大电路的放大作用和共发射极放大电路的性能特点; 2. 掌握静态工作点的估算方法和放大电路的微变等效电路分析法; 3. 了解放大电路输入、输出电阻和电压放大倍数的计算方法,了解放大电路的频率特性、 互补功率放大…

全国青少年编程等级考试scratch四级真题2022年9月(含题库答题软件账号)

青少年编程等级考试scratch真题答题考试系统请点击电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手1、运行下列程序,说法正确的是?( )A.列表…

计算机组成原理第七章笔记记录

仅仅作为笔记记录,B站视频链接,若有错误请指出,谢谢 基本概念 演变过程 I/O系统基本组成 I/O软件 包括驱动程序、用户程序、管理程序、升级补丁等 下面的两种方式是用来实现CPU和I/O设备的信息交换的 I/O指令 CPU指令的一部分,由操作码,命令码,设备…

【电商】订单系统--售后的简易流程与系统关系

用户进行了订单签收并不意味着终结,这只是一个新的开始,因为商品送达后可能会由于运输过程包装或商品有破损,商品本质量并非商品详情中所描述的那样等各种原因使用户进行退货或换货;还有一种场景是用户签收后发现有的商品漏发、少…

网络通讯的理解

tcp/ip 协议族ip在真实环境中,会把主机号再分成一个子网号和一个主机号。这样的主机号才是最终容纳的主机数量。所以需要使用子网掩码(32位)来分子网号和主机号。其中值为1的比特是网络号和子网号,值为0的是比特是主机号。可以在w…

chatGPT 官网使用详细教程 (亲测可行)

文章目录1. chatGPT 介绍2. 进入官网3. 开始使用1. chatGPT 介绍 chatGPT 是一款由 OpenAI 开发的聊天机器人模型,它能够模拟人类的语言行为,与用户进行自然的交互。它的名称来源于它所使用的技术—— GPT-3架构,即生成式语言模型的第3代。 …

软件测试】测试时间不够了,我很慌?项目马上发布了......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 常见的几种情况&…

Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置

在前面有一篇博客:Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发,我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容。 我们更想要的是按照数据库表字段进行自增…

知乎kol投放怎么做?知乎kol资源从哪里找?

每个领域都有一些比较专业且具有话语权的大V博主,他们推荐某个产品或是品牌就能对粉丝产生很深的影响力,影响用户消费决策。 互联网时代,每个热门的内容平台上都活跃着一大批kol博主,做kol投放具有很高的商业价值。 知乎内容社区…

舆情监测方案怎么写,TOOM舆情监测系统解决方案

舆情监测是通过网络和媒体来收集、分析、评估和报告关于某一特定话题或组织的舆论动态的过程。舆情监测方案通常包括数据收集、数据分析、报告生成等步骤,以帮助组织了解公众对其的看法和声音,并以此作出相应的决策和行动,舆情监测方案怎么写…

Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除

1、逻辑删除 接下来要讲解是删除中比较重要的一个操作,逻辑删除,先来分析下问题: 这是一个员工和其所签的合同表,关系是一个员工可以签多个合同,是一个一(员工)对多(合同)的表 员工ID为1的张业绩,总共签了三个合同&a…

linux 安装,卸载jdk8

1>安装1 xshell,xsftp 教育版下载 https://www.xshell.com/zh/free-for-home-school/ 2下载jdk包 https://www.oracle.com/java/technologies/downloads/3在usr下新建java文件夹把jdk包拉进去解压tar -zxvf 4首先使用vim打开etc目录下的profile文件 --> vim /etc/profile…

餐饮企业数据可视化大屏(智慧餐饮)

随着信息技术的深入发展,数据大屏的适用场景日益广泛,集工作汇报、实时监控和预测分析等功能于一身。 数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 当前很多餐…

Lecture3 梯度下降(Gradient Descent)

目录 1 问题背景 2 批量梯度下降 (Batch Gradient Descent) 3 鞍点(Saddle Point) 3 随机梯度下降 (Stochastic Gradient Descent) 4 小批量梯度下降 (Mini-batch Gradient Descent) 1 问题背景 图1 上节课讲述的穷举法求最优权重值在Lecture2中,介绍了使用穷举…

重磅!微软推出首款 ChatGPT 版搜索引擎!

微软近期推出了首款 ChatGPT 版搜索引擎,今天带大家一起来看一下。 一夜之间,全球最大的科技公司仿佛都回到了自己年轻时的样子。 在谷歌宣布「实验性对话式人工智能服务」Bard 之后仅 24 小时,北京时间 2 月 8 日凌晨两点,微软发…

2023 软件测试行业内卷动荡,红利期过去后,何去何从?

前段时间席卷全互联网行业的内卷现象,想必有不少人都深陷其中。其实刚开始测试行业人才往往供不应求,而在发展了十几年后,很多人涌入这个行业开始面对存量竞争。红利期过去了,只剩内部争夺。 即便如此,测试行业仍有许…

微服务 分片 运维管理

微服务 分片 运维管理分片分片的概念分片案例环境搭建案例改造成任务分片Dataflow类型调度代码示例运维管理事件追踪运维平台搭建步骤使用步骤分片 分片的概念 当只有一台机器的情况下,给定时任务分片四个,在机器A启动四个线程,分别处理四个…

Python编程自动化办公案例(1)

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.使用库讲解 1.xlrd 2.xlwt 二.主要案例 1.批量合并 模板如下&#xf…

Monkey

文章目录一、简介二、原理2.1 特殊处理三、命令3.1 启动3.2 关闭四、事件4.1 触摸事件4.2 手势事件4.3 二指缩放事件4.4 轨迹事件4.5 屏幕旋转事件4.6 基本导航事件4.7 主要导航事件4.8 系统按键事件4.9 启动activity事件4.10 键盘事件4.11 其他类型事件五、参数5.1 常规类参数…