TCP传输控制协议二

 

TCP 是 TCP/IP 模型中的传输层一个最核心的协议,不仅如此,在整个 4 层模型中,它都是核心的协议,要不然模型怎么会叫做 TCP/IP 模型呢。

它向下使用网络层的 IP 协议,向上为 FTP、SMTP、POP3、SSH、Telnet、HTTP 等应用层协议提供支持。其他的还有我们常用的 Redis 的 RESP 协议、MongoDB的网络协议,以及我们编程中用到的 Socket,都是 TCP 协议在背后提供支持的。

 

 

网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

语法:即数据与控制信息的结构或格式;
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;                                  时序(同步):即事件实现顺序的详细说明。

 

TCP协议格式

c500349af5234605be1cd2d2922f4f19.png

 TCP首部 + 用户数据被称为TCP段,其中 TCP 首部就是这里要主要研究的 TCP 协议的核心所在,用户数据部分是 TCP 段的负载。TCP 段的大小也是有限制的,最大是 1460 字节。

529c74c586ec49c899b1c3bc37911b2d.png

 最终由网卡发出去的数据包叫做以太网帧,以太网帧由以太网首部和负载构成。以太网帧的负载就是一个 IP 数据报,IP数据报由IP首部和负载构成。

 

 

 

下图是TCP协议的示意图,如果不算「可选项」部分的话,共占用 32bit x 5 = 160bit,也就是20个字节

44174e13b25d49a49336c4efaab20f83.png

 

源端口和目标端口


源端口和目标端口分别占用 2个字节,共占用 4 字节,分别记录数据发送端的端口号和数据接收端的端口号,这两个标记和 IP 协议中记录的发送端 IP 和接收端 IP组合起来,便可确定一个唯一的 TCP 连接。

序号
由于TCP段的大小有限制,当要传输的数据量大于这个限制的时候,就要对数据进行分段,一段一段的发送,既然发送方要分段,那接收方就要对分段进行重组,才能还原回原始数据。在重组的过程中,要保证各段间的先后顺序,序号正是起到保证重组顺序的作用。

序号占用 4 字节,32 位,它的范围是 0,
2(32)。
 ​TCP是字节流服务,会对每一个发送的字节进行编号。在建立连接的时候,系统会给定一个 ISN(初始序号),然后这个设备在当前连接中发送的第一个字节的序号就是 ISN+1,假设 ISN 初始为0,那第一个字节的序号就是 1。

 

 

 

举个例子:

假设ISN为0,发送端第一次发送 100 字节的数据包,那这第一个 TCP段的序号就是1,下次再发送 100字节的数据包,那这第二个 TCP段的序号就是 101。

这样一来,最大可以一直标记 2(32)
 个字节,也就是 4个G的数据。当达到最大值后,又会从 0 开始标记。

序号只有在下面两种情况下才有用:

1:数据字段至少包含一个字节。
2:是一个 SYN 段,或者是 FIN 段,或者是 RST 段。

 

 

 

 

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

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

相关文章

12-《向日葵》

向日葵 向日葵(拉丁文:Helianthus annuusL.),为木兰纲、菊目、菊科、向日葵属的一年生草本植物。高1~3.5米。茎直立,圆形多棱角,质硬被白色粗硬毛。广卵形的叶片通常互生,先端锐突或…

如何在项目中打印sql和执行的时间

目标:打印DAO方法中sql和执行的时间 一种方式是去实现Mybatis的拦截器Interceptor ,比较麻烦; 这里介绍一种比较简单的实现方式; 1、如何打印sql? 配置文件加这个可以打印出com.zhenhui.ids.busi.watch包下执行的sq…

Nacos服务公网环境登陆报密码错误问题排查

作者:小丫 一、问题现象 nacos服务内网可以正常登录,如下: 走公网代理出来之后,无法正常登录,报错"用户名密码错误" 二、排查步骤 1、链路分析 首先确认公网代理的链路: 域名—>haprox…

Stable Diffusion 深度探索:从入门到精通的全方位教程

在人工智能艺术创作的浪潮中,Stable Diffusion 作为一股不可忽视的力量,正以其独特的魅力吸引着无数创作者和科技爱好者的目光。本文旨在为大家提供一份详尽的 Stable Diffusion 教程,从基础概念到高级应用,带领你一步步走进这个充…

Detrs beat yolos on real-time object detection

Abstract 然而,我们观察到nnms对yolo的速度和准确性产生了负面影响。最近,端到端基于变压器的检测器(DETRs)为消除NMS提供了一种替代方案。然而,高昂的计算成本限制了它们的实用性,阻碍了它们充分发挥排除NMS的优势。在本文中&am…

【WebGIS】从设计层面设计系统

本项目在通过现代信息技术手段,对古村古镇进行多方位、多角度的数字化记录、展示与传播,实现文化遗产的数字化保护、活化利用与共享。项目内容主要包括:1)古村古镇数据库的建立:通过多种渠道收集古村古镇的各类信息&am…

【第32章】MyBatis-Plus之代码生成器配置

文章目录 前言一、概述1.特点说明2.示例配置3. 数据库配置 (DataSourceConfig) 二、全局配置 (GlobalConfig)1.方法说明2.示例配置 三、包配置 (PackageConfig)1. 方法说明2. 示例配置 四、模板配置 (TemplateConfig)1. 方法说明2. 示例配置 五、注入配置 (InjectionConfig)1. …

近期matlab学习笔记,学习是一个记录,反复的过程

近期matlab学习笔记,学习是一个记录,反复的过程 matlab的mlx文件在运行的时候,不需要在文件夹路径下,也能运行,但是需要调用子函数时,就需要在文件所在路径下运行 那就先运行子函数,把路径换过来…

2019-2023年全球固定宽带和移动(蜂窝)网络性能(更新)

简介 全球固定宽带和移动(蜂窝)网络性能,分配给缩放级别 16 的网络 mercator 瓷砖(赤道处约 610.8 米乘 610.8 米)。数据以 Shapefile 格式和 Apache Parquet 格式提供,几何图形以 EPSG:4326 中的已知文本…

jmeter-beanshell学习8-for循环

一个稍微有点难度的东西 要把响应结果的所有名字都取出来,然后怎么处理看自己需求。比如找某个人是不是在这里,或者把所有人都写进一个文档,我就不编场景了 第一步想要取出所有名字,还得靠万能的正则表达式提取器,jso…

JDK安装详细教程(以JDK17为例)

一、JDK的下载 1. 前往oracle官网下载JDK Java Archive Downloads - Java SE 17 在这里选择对应的JDK版本,我这里就直接选择JDK17的版本了。 然后下载对应的软件包,我这里采用的是Windows的安装程序。 点击上述圈起来的链接即可下载安装包,…

GloVe: Global Vectors for Word Representation论文笔记解读

基本信息 作者Jeffrey Penningtondoi10.3115/v1/D14-1162发表时间2014期刊EMNLP网址https://aclanthology.org/D14-1162.pdf 研究背景 1. What’s known 既往研究已证实 全局矩阵分解方法:LSA,考虑整个语料库词频的统计信息得到共现矩阵,通…

vue实现a-model弹窗拖拽移动

通过自定义拖拽指令实现 实现效果 拖动顶部,可对整个弹窗实施拖拽(如果需要拖动底部、中间内容实现拖拽,把下面的ant-modal-header对应改掉就行) 代码实现 编写自定义指令 新建一个ts / js文件,用ts举例 import V…

计算机视觉之SSD目标检测

模型简介 SSD是一种单阶段目标检测算法,通过卷积神经网络进行特征提取,并在不同的特征层进行检测输出,实现多尺度检测。它采用了anchor的策略,预设不同长宽比例的anchor,并在每个输出特征层上预测多个检测框。SSD框架…

7 月12日学习打卡--栈和队列的相互转换

hello大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有不…

深度学习论文: YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision

深度学习论文: YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision YOLOv5, YOLOv8 and YOLOv10: The Go-To Detectors for Real-time Vision PDF:https://arxiv.org/pdf/2407.02988v1 PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks 1 概…

通过maven基于springboot项目构建脚手架archetype

1、引入脚手架构建的插件依赖 <!--构建脚手架archetype--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.1</version></plugin><plugin><…

nodejs安装配置详解

一、下载Node.js安装包 官网下载链接[点击跳转] 建议下载LTS版本&#xff08;本教程不适用于苹果电脑&#xff09; 二 、安装Node.js 2.1 下载好安装包后双击打开安装包&#xff0c;然后点击Next 2.2 勾选同意许可后点击Next 2.3 点击Change选择好安装路径后点击Next&#x…

Mysql的语句执行很慢,如何分析排查?

1、检查服务器性能是否存在瓶颈 如果系统资源使用率比较高&#xff0c;比如CPU,硬盘&#xff0c;那访问肯定会慢&#xff0c;如果你发现是Mysl占比比较高&#xff0c;说明Mysql的读写频率高&#xff0c;如果本身网站访问量不大&#xff0c;说明你的sql参数&#xff0c;sql语句查…

羧基聚乙二醇生物素的制备方法;COOH-PEG-Biotin

羧基聚乙二醇生物素&#xff08;COOH-PEG-Biotin&#xff09;是一种常见的生物分子聚合物&#xff0c;具有多种应用&#xff0c;特别是在生物实验、药物研发和生物技术等领域。以下是对该化合物的详细解析&#xff1a; 一、基本信息 名称&#xff1a;羧基聚乙二醇生物素&#x…