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,一经查实,立即删除!

相关文章

【win32_004】字符串处理函数

StringCbPrintf 函数 (strsafe.h):格式化字符串 STRSAFEAPI StringCbPrintf([out] STRSAFE_LPSTR pszDest,//目的缓冲区 LPSTR指针或者数组[in] size_t cbDest,//目的缓冲区大小[in] STRSAFE_LPCSTR pszFormat,//格式 例如: TEXT("%d&…

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…

【CSP】202309-1_坐标变换(其一)Python实现

文章目录 [toc]试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定Python实现 试题编号 202309-1 试题名称 坐标变换(其一) 时间限制 1.0s 内存限制 512.0MB 问题描述 对于平面直角坐标系上的坐标 (…

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技术为…

python中列表的方法

文章目录 列表的方法sort()append() 列表的方法 列表(List)是Python中的一种数据结构, 提供了一些可以操作列表的方法。以下是一些常见的列表方法: append():向列表末尾添加一个元素。 my_list [1, 2, 3] my_list.…

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

第18关 K8s数据安全无忧——持久化存储详解

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,本期课程将深入解析Kubernetes的持久化存储机制,包括PV、PVC、StorageClass等的工作原理、使用场景、最佳实践等,帮您构建稳定可靠的状态存储,确保应用和数据 100% 安全。 Volume …

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使开发者们可以方便地在自己的应用中集成美颜功能,从而提…

前端食堂技术周刊第 107 期:技术博客节、Deno Cron、FEDAY、XState v5、Electron 2023 生态系统回顾

美味值:🌟🌟🌟🌟🌟 口味:烤椰拿铁 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…

like concat()函数

mybatis中为了防止sql注入&#xff0c;使用like语句时并不是直接使用&#xff0c;而是使用concat函数 <if test"goodName ! null and goodName ! "> and good_name like concat(%, #{goodName}, %)</if> concat()函数 1、功能&#xff1a;将多个字符串…

【5】PyQt按钮

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

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

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

AI:LangChain

LangChain是一个开源的框架&#xff0c;旨在使开发人员能够轻松构建使用大型语言模型&#xff08;LLMs&#xff09;的应用程序。它提供了一种方式&#xff0c;通过这种方法&#xff0c;开发者可以利用像OpenAI的GPT-3或GPT-3.5这样的模型&#xff0c;以及Hugging Face提供的其他…