查找某个年龄段的用户信息TCP头格式为什么需要 TCP 协议? TCP 工作在哪一层?

查找某个年龄段的用户信息

select device_id,gender,age
from user_profile
where age>=20 and age<=23;

TCP头格式

序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。

确认应答号:指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收(累计确认机制)。用来解决丢包的问题。

首部长度:

  • TCP 首部中有一个 4 位的 “首部长度” 字段。这个字段的单位是 4 字节。
  • 由于首部长度字段是 4 位,它能表示的最大值是 1111(二进制),换算成十进制是 15。
  • 当首部长度字段的值为 15 时,首部长度为15*4=60字节。
  • 这 60 字节包括了固定的 20 字节和可变的选项部分,所以 TCP 首部长度最大是 60 字节。

保留:目前未使用,保留扩展功能

控制位:

URG(紧急指针有效):表示紧急指针字段有效,紧急指针指向紧急数据的末尾。

ACK(确认应答):该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1

PSH(推送):接收方收到设置了 PSH 标志的报文段后,应尽快将数据交付给应用程序,而不必等待缓冲区满。

RST(重置连接):该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。

SYN(同步序号):该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。

FIN(结束连接):该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段

窗口大小:用于流量控制,指示接收方当前能够接收的数据量(以字节为单位)。发送方根据接收方的窗口大小来调整发送速率,避免接收方缓冲区溢出。

校验和:用于检验 TCP 报文段的完整性,包括头部和数据部分。发送方计算校验和并将其填入该字段,接收方收到报文段后重新计算校验和,与该字段的值进行比较,如果不一致则说明报文段在传输过程中出现了错误。

紧急指针:只有当 URG 标志位为 1 时,紧急指针才有效。它指向紧急数据的末尾,与序列号一起用于标识紧急数据的位置。

标识紧急数据位置

        紧急数据的界定:当 TCP 报文段中的 URG 标志位被设置为 1 时,表示该报文段中包含紧急数据,此时紧急指针才有效。紧急指针指向紧急数据的末尾(在序列号的基础上),与序列号一起用于标识紧急数据在报文段中的位置范围。

        示例说明:假设一个 TCP 报文段的序列号为 1000,紧急指针的值为 50,那么紧急数据就是从序列号 1000 开始到 1049(1000 + 50 - 1)结束的这部分数据。接收方收到这样的报文段后,会优先处理这部分紧急数据,而不必等待接收缓冲区中其他非紧急数据处理完毕。

实现紧急数据的优先处理

 

        接收方处理机制:接收方在收到设置了 URG 标志且紧急指针有效的 TCP 报文段后,会尽快将紧急数据交付给上层应用程序进行处理,而不必按照正常的顺序等待缓冲区中其他数据的处理。这确保了紧急信息能够及时被应用程序获取和处理,例如在一些实时性要求较高的场景中,如远程登录(Telnet)中,用户可能需要立即发送一个中断命令来停止当前正在进行的操作,这时紧急指针就可以确保该中断命令作为紧急数据优先被处理。

选项(长度可变):用于一些可选的功能,如最大报文段长度(MSS)协商、窗口扩大因子、时间戳等。选项部分的长度是可变的,根据实际使用的选项而定。

数据:TCP 头部后面就是实际要传输的数据部分,其长度由 TCP 报文段的总长度减去头部长度得到。

为什么需要 TCP 协议? TCP 工作在哪一层?

IP 层是「不可靠」的,它不保证网络包的交付、不保证网络包的按序交付、也不保证网络包中的数据的完整性。

如果需要保障网络数据包的可靠性,那么就需要由上层(传输层)的 TCP 协议来负责。

因为 TCP 是一个工作在传输层可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。

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

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

相关文章

后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权

目录 后端注册拦截器 实现对 WebMvcConfigurer 接口的类实现 静态变量 方法重写 注册 Spring Framework拦截器 Sa-Token中SaServletFilter拦截器 思考 为什么使用两个拦截器 1. Spring Framework 拦截器 2. SaServletFilter 为什么要注册两个拦截器&#xff1f; 总结 …

使用 Charles 调试 Flutter 应用中的 Dio 网络请求

为了成功使用 Charles 抓取并调试 Flutter 应用程序通过 Dio 发起的网络请求&#xff0c;需遵循特定配置步骤来确保应用程序能够识别 Charles 的 SSL 证书&#xff0c;并正确设置代理服务器。 配置 Charles 以支持 HTTPS 请求捕获 Charles 默认会拦截 HTTP 流量&#xff1b;…

亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?

三防笔记本是什么意思&#xff1f;和普通笔记本的优势在哪里&#xff1f; 在现代社会中&#xff0c;笔记本电脑已经成为人们工作和生活中不可或缺的一部分。然而&#xff0c;在一些特殊行业或环境中&#xff0c;普通笔记本电脑由于其脆弱性和对环境条件的敏感性&#xff0c;往…

Spring Boot教程之五十七:在 Apache Kafka 上发布 JSON 消息

Spring Boot | 如何在 Apache Kafka 上发布 JSON 消息 Apache Kafka是一个发布-订阅消息系统。消息队列允许您在进程、应用程序和服务器之间发送消息。在本文中&#xff0c;我们将了解如何在 Spring Boot 应用程序中向 Apache Kafka 发送 JSON 消息。 为了了解如何创建 Spring…

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one&#xff08;青柠学术插件&#xff09;的时候&#xff0c;使用插件跳转obsidian中的对应笔记&#xff0c;出现上图情况。&#xff08;错误中提到的…

切削刀具热处理的作用学习笔记分享

对于一个搞冷加工的打工仔来说&#xff0c;热工的知识总是感觉那么新鲜。本期一起来学习一下切削刀具的热处理的一点点内容&#xff0c;虽然不是那么专业&#xff0c;但是了解一些还是很有好处的&#xff0c;废话不多说了&#xff0c;直接开始&#xff1a; 切削刀具热处理的作…

基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表&#xff0c;我们会发现需要开通WPS会员才能使用合并功能&#xff1b; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢&#xff1f; 1、首先我们要看excel后缀是 .xlsx 还是 .xls &#xff1b;如果是.xlsx 那么 我们需要修改为 .xls 注…

ubuntu22.4 ROS2 安装gazebo(环境变量配置)

ubuntu版本&#xff1a;ubuntu22.4 最近在学习ROS2 视频教程古月居的入门课&#xff1a; 视频教程 文字笔记 问题 在学到关于Gazebo的时候&#xff0c;遇到下面问题&#xff1a; 运行 $ ros2 launch gazebo_ros gazebo.launch.py在这里卡住&#xff0c;不弹出gazebo 解决…

【Linux】7.Linux基础开发工具使用(1)

文章目录 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 关于 rzsz1.3 查看软件包1.4 如何安装软件1.5 如何卸载软件我怎么知道要安装什么软件呢&#xff1f;源常用命令对照表&#xff1a; 2. Linux开发工具Linux编辑器-vim使用2.1 vim的基本概念命令模式&#xff1a;2.2 简单…

漫话架构师|什么是系统架构设计师(开篇)

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 关注犬余&#xff0c;共同进步 技术从此不孤单

DevOps实用场景:在哪些业务中应用DevOps最有效

随着科技的迅猛发展和客户需求的不断变化&#xff0c;IT初创公司在不断追求更高的效率、更快速的交付和更强的市场适应力。在这个背景下&#xff0c;DevOps成为了推动组织成功的关键策略之一。本文将帮助您了解什么是DevOps&#xff0c;哪些团队或企业最适合实施DevOps&#xf…

如何学习网络安全?有哪些小窍门?

学好网络安全其实没有所谓的捷径&#xff0c;也没有什么小窍门。 入门网络安全首先要有浓厚的学习兴趣&#xff0c;不然很容易就变成了从入门到放弃了。 其次要能静下心&#xff0c;踏踏实实的打好基础。如果你是零基础&#xff0c;建议从Web安全入手&#xff0c;课程难度相对…

Windows下载MySQL8.0

Windows下载MySQL8.0 MySQL :: Download MySQL Installer (Archived Versions) 在这个网页中选择相应的版本&#xff0c;点击下载即可。 但是在下载之前需要保证&#xff1a; 电脑用户名是英文相应的防火墙要关闭以前的mysql要在系统中卸载干净在控制命令里&#xff0c;以管…

使用Java Socket实现GPS定位数据处理

在许多应用场景中&#xff0c;如车辆追踪、移动设备定位等&#xff0c;GPS定位数据的实时获取和处理至关重要。本文将介绍如何使用Java Socket编程来接收GPS设备发送的数据并进行处理。 业务说明&#xff1a; 车辆追踪系统需要实时获取车辆的GPS定位信息。车辆上的GPS设备通过…

【Unity踩坑】Unity中提示缺少Visual Studio组件

问题&#xff1a; 在Unity中选择UWP平台时&#xff0c;提示Visual Studio缺少组件。 Selected Visual Studio is missing required components and may not be able to build the generated project. 解决方案&#xff1a; 在Visual Studio Installer里&#xff0c;安装上&quo…

ADC(Analog-to-digital converter)模拟-数字转换器

ADC简介 ADC&#xff08;Analog-to-Digital Converter&#xff09;&#xff0c;即模拟-数字转换器&#xff0c;是一种将模拟信号转换成数字信号的电子设备。它在现代电子系统中扮演着至关重要的角色&#xff0c;广泛应用于传感器信号处理、通信系统、医疗设备、工业自动化等多…

ASP.NET Core - 日志记录系统(二)

ASP.NET Core - 日志记录系统&#xff08;二&#xff09; 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲&#xff0c;所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…

从零开始深度学习:(1)张量的常用操作

孩子们&#xff0c;懒大王回来了&#xff01; 正如标题所说&#xff0c;今天我们继续开始新的篇章&#xff0c;我们要开始高强度学习深度学习的相关内容&#xff0c;这个专栏内容较多、全是干货&#xff0c;我们还会在合适的地方进行拓展一些额外的语法或者别的相关知识&#…

【Idea】编译Spring源码 read timeout 问题

Idea现在是大家工作中用的比较多的开发工具&#xff0c;尤其是做java开发的&#xff0c;那么做java开发&#xff0c;了解spring框架源码是提高自己技能水平的一个方式&#xff0c;所以会从spring 官网下载源码&#xff0c;导入到 Idea 工具并编译&#xff0c;但是发现build的时…