TCP首部格式_基本知识

TCP首部格式

表格索引:

源端口目的端口
序号
确认号
数据偏移保留 ACK等 窗口
检验和紧急指针

在这里插入图片描述

TCP报文段首部格式图


源端口与目的端口:
各占16位

序号:占32比特,取值范围0~232-1。当序号增加到最后一个时,下一个序号又回到0。用来指出本TCP报文段数据载荷的第一个字节的序号

确认号:占32比特,取值范围0~232-1。当序号增加到最后一个时,下一个序号又回到0。用来指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认


数据偏移:

  • 占4比特,该字段的取值以4字节为单位
  • 指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远,这实际上指出了TCP报文段的首部长度
    在这里插入图片描述

保留:

  • 占6比特
  • 保留为今后使用
  • 目前置为0




窗口:

  • 占16比特,该字段的取值以字节为单位
  • 指出发送本报文段的一方的接收窗口的大小,即接收缓存的可用空间大小,这用来表征接收方的接收能力.
  • 在计算机网络中,经常用接收方的接收能力的大小来控制发送方的数据发送量,这就是所谓的流量控制

检验和:
  • 占16比特
  • 用来检查整个TCP报文段在传输过程中是否出现了误码

在这里插入图片描述

发送方检验和计算方法:

(1)将TCP首部中检验和字段的值置为0。
(2)将伪首部、TCP首部以及数据载荷这三部分划分成若干个2字节的字。若伪首部、TCP首部以及数据载荷这三部分的总长度不是偶数个字节,则在最后添加1个“全0”字节。
(3)对划分出的全部2字节的字进行反码算数运算求和,并将求和结果取反码。
(4)将步骤③得到的结果写入TCP首部中的检验和字段。

与IPv4数据报首部检验和的计算方法类似,

差别仅在于前者只对首部进行检验。

接收方通过检验和字段的值判断TCP报文段在传输过程中是否误码的方法:

(1)给接收到的TCP报文段前面添加一个12字节的伪首部。
(2)将伪首部、TCP首部以及数据载荷这三部分划分成若干个2字节的字。
(3)对划分出的全部2字节的字进行反码算数运算求和,并将求和结果取反码。
(4)若步骤③得到的结果为0,则表示TCP报文段在传输过程中没有误码。否则,表示出现了误码。




确认标志位ACK:只有当ACK取值为1时,确认号字段才有效。ACK取值为0时,确认号字段无效。TCP规定:在TCP连接建立后,所有传送的TCP报文段都必须把ACK置1


同步标志位SYN:

  • 用于TCP“三报文握手”建立连接
  • SYN=1且ACK=0时,表明这是一个TCP连接请求报文段
  • 对方若同意建立连接,则应在响应的TCP报文段的首部中使SYN=1且ACK=1
  • 综上所述,SYN为1的TCP报文段要么是一个连接请求报文段,要么是一个连接响应报文段。

终止标志位FIN:

  • 用于TCP“四报文挥手”释放连接
  • FIN=1时,表明此TCP报文段的发送方已经将全部数据发送完毕,现在要求释放TCP连接

复位标志位RST:

  • 用于复位TCP连接
  • RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接
  • RST置1还用来拒绝一个非法的TCP报文段或拒绝打开一个TCP连接

推送标志位PSH:

  • 发送方TCP把PSH置1,并立即创建一个TCP报文段发送出去,而不需要积累到足够多的数据再发送。
  • 接收方TCP收到PSH为1的TCP报文段,就尽快地交付给应用进程,而不再等到接收到足够多的数据才向上交付。
出于效率的考虑,TCP的发送方可能会延迟发送数据,而TCP的接收方可能会延迟向应用进程交付数据。这样可以一次处理更多的数据。
但是当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,应用进程可以通知TCP使用推送(PUSH)操作。

紧急标志位URG:
  • 当URG=1时,紧急指针字段有效。
  • 当URG=0时,紧急指针字段无效。

紧急指针:
  • 占16比特,以字节为单位,用来指明紧急数据的长度。
  • 发送方有紧急数据时,可将紧急数据“插队”到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出本报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
  • 接收方收到紧急标志位为1的TCP报文段,会按照紧急指针字段的值从报文段数据载荷中取出紧急数据并直接上交应用进程,而不必在接收缓存中排队

选项与填充:
  • 选项是一些可选择添加的字段,如窗口扩大选项等等
  • 填充是若选项字段的长度加上20字节固定首部的长度不能被4字节整除时,需要填充相应数量的比特0,以确保首部长度能被4字节整除。

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

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

相关文章

ctfhub技能树_web_信息泄露

目录 二、信息泄露 2.1、目录遍历 2.2、Phpinfo 2.3、备份文件下载 2.3.1、网站源码 2.3.2、bak文件 2.3.3、vim缓存 2.3.4、.DS_Store 2.4、Git泄露 2.4.1、log 2.4.2、stash 2.4.3、index 2.5、SVN泄露 2.6、HG泄露 二、信息泄露 2.1、目录遍历 注&#xff1…

【ArcGIS Pro微课1000例】0050:如何清除坐标系信息

文章目录 一、目的二、方法1. 使用【定义投影】工具2. 清除数据的投影信息3. 删除坐标文件 一、目的 地理信息数据的坐标系是将地理信息数据进行融合、叠加、分析的重要数学框架,而其描述信息是非常重要的元数据,涉及整个国家的测绘坐标系统&#xff0c…

DSSS技术和OFDM技术

本内容为学习笔记,内容不一定正确,请多处参考进行理解 https://zhuanlan.zhihu.com/p/636853588 https://baike.baidu.com/item/OFDM/5790826?frge_ala https://zhuanlan.zhihu.com/p/515701960?utm_id0 一、 DSSS技术 信号替代:DSSS技术为…

C++ 操作MinIO做文件数据的上传和下载(踩坑与经验)包含编译包

前言 最近在做项目流程优化,准备将之前的java对文件的操作转换到c端,因此做了基于c的minio操作的测试demo。期间的各种踩坑与问题,花了一天时间总算是成功了,当然还有一些小问题,等待后续其他大拿解决。 项目环境 v…

Jmeter调用本地Exe程序

背景: 候使用C#编译的小工具制作压测的请求的入参,因Jmeter无法调用C#的方法,可以把C#编译个exe程序,在启动压测前,让JMeter调用本地的exe批量生成压测数据。 使用步骤: 打开Jmeter,右击选择…

【Vue】使用cmd命令创建vue项目

上一篇: node的安装与配置 https://blog.csdn.net/m0_67930426/article/details/134562278?spm1001.2014.3001.5502 目录 一.创建空文件夹专门存放vue项目 二. 查看node , npm 和vue脚手架的版本 三.安装vue脚手架 四.创建vue项目 五.运行项目 一.创建空文件…

第五期丨酷雷曼无人机技能培训圆满举办

第5期无人机技能提升培训 2023年11月28日-29日,为期2天的酷雷曼第五期无人机技能提升培训会圆满举办。本届培训会盛况依旧,数十位合作商不远千里相约,共同提升专业水准,考取执照证书。 入场签到 初冬已至,尽管天气渐…

properties出现中文乱码解决方法(万能)

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 在使用Properties类的时候,中文出现乱码 如图所示: 正常思维来讲,估计是中文编码有问题,于是我将其改为UTF-8的编码方式 通过下方的改动: 可到了这一步,中文还是乱码(这一步改成功的网友可自动立场,没改成功的网…

PVE系列-LVM安装MacOS的各个版本及VNC加密隧道访问

PVE系列-LVM安装MacOS的各个版本 环境配置大概过程:详细步骤:1.建立安装环境和下载安装工具2. 重启后,执行osx-setup配置虚拟机3. 安装到硬盘,4.设定引导盘,以方便自动开机启动5.打开屏幕共享和系统VNC6.VNC加密的ssh隧…

synchronized底层原理(二)

书接上文 文章目录 1. 锁升级原理2. Synchronized锁优化1. 偏向锁批量重偏向&批量撤销2. 自旋优化3. 锁粗化4. 锁消除 1. 锁升级原理 前面介绍了对象的几种加锁状态,分别是无锁、偏向锁、轻量级锁和重量级锁。有下面几个关键点: 当开启JVM偏向延迟…

什么是美颜sdk?美颜sdk对比评测、技术评估

为了满足用户对于更美好画面的需求,各种美颜sdk应运而生。本文将深入探讨美颜sdk的概念,进行对比评测,并对其技术进行综合评估。 一、什么是美颜sdk? 美颜sdk使开发者们可以方便地在自己的应用中集成美颜功能,从而提…

【5】PyQt按钮

QPushButton 常见的按钮实现类包括:QPushButton、QRadioButton和QCheckBox QPushButton是最普通的按钮控件,可以响应一些用户的事件 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton import sysdef func():print("按下按钮啦,火…

C语言每日一题(46)整数转罗马数字

力扣网12 整数转罗马数字 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D …

Isaac Sim教程06 OmniGraph图编程

Isaac Sim OmniGraph图编程 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. The autho…

Spring容器启动过程中的自定义操作插口汇总

目录标题 PostConstruct注解EventListener方式InitializingBean的afterPropertiesSet方法实现ApplicationRunner接口重写run方法实现AplicationContextAware接口重写setApplicationContext实现ServletContextListener接口contextInitialized方法实现ServletContextAware接口set…

7个简单技巧,让你从容应对压力面试!

01-什么是压力面试? 压力面试是指有意制造紧张,以了解求职者将如何面对工作压力的一种面试形式。 事实上,压力面试不是单独存在的一类面试,往往是穿插在面试过程中。 面试人通过提出不礼貌、冒犯的问题,或者用怀疑、…

梦回吹角连营(2)(快速幂快乘)

Description 给定f(n)(a1)*n^a(a2)*n^(a1)...b*n^(b-1) 求f(n)%10000000033 Input 输入一个正整数T(T<10),表示有T组数据&#xff0c;每组数据包括三个整数a,b,n (0<n<10^9,1<a < b-1<10^20) Output 输出 f(n)%10000000033 的结果 Sample Input 1 1 2…

十三、FreeRTOS之FreeRTOS时间管理

本节主要介绍以下内容&#xff1a; 1&#xff0c;延时函数介绍&#xff08;了解&#xff09; 2&#xff0c;延时函数解析&#xff08;熟悉&#xff09; 3&#xff0c;延时函数演示实验&#xff08;掌握&#xff09; 4&#xff0c;课堂总结&#xff08;掌握&#xff09; 一、…

最新测试开发招聘信息汇总,内含社招和实习生岗位~

1 科大讯飞 [武汉/合肥/西安] 科大讯飞&#xff08;教育事业部&#xff09; - 移动、服务端高级测试开发工程师 一、移动方向高级测试开发工程师 岗位职责&#xff1a; 1.负责教育 BG 中 APP/SDK/软硬一体等产品类型的专项测试工作&#xff0c;包括专项测试方案设计、自动化测…

通过时间交织技术扩展ADC采样速率的简要原理

前言 数据采集是将自然界中存在的模拟信号通过模数转换器&#xff08;ADC&#xff09;转换成数字信号&#xff0c;再对该数字信号进行相应的接收和处理。数据采集系统作为数据采集的手段&#xff0c;在移动通信、图向采集、无线电等领域有重要作用。随着电子信息技术的飞速发展…