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.rhkb.cn/news/210719.html

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

相关文章

面试 Java 框架八股文十问十答第二期

面试 Java 框架八股文十问十答第二期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1.AOP的术语,以及两种动态代理实现方法,以及它们的区别…

Notepad++批量添加引号

工作中经常会遇到这样情景:业务给到一批订单号,需要查询这批订单的某些字段信息。在where条件中需要传入这些订单号的数组,并且订单号用引号引起,用引号隔开。 字符串之间长度相同 可以按住CtrlAlt和鼠标左键选中区域&#xff0…

手持式安卓主板_PDA安卓板_智能手持终端方案

手持式安卓主板方案是一种智能终端设备,具备自动对焦和闪光灯功能,可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能,为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板,并搭载了八…

基于ROPNet项目训练modelnet40数据集进行3d点云的配置

项目地址: https://github.com/zhulf0804/ROPNet 在 MVP Registration Challenge (ICCV Workshop 2021)(ICCV Workshop 2021)中获得了第二名。项目可以在win10环境下运行。 论文地址: https://arxiv.org/abs/2107.02583 网络简介…

基于H5“汉函谷关起点新安县旅游信息系统”设计与实现

目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 系统开发背景及意义 3 1.2 系统开发的目标 3 第2章 主要开发技术介绍 5 2.1 H5技术介绍 5 2.2 Visual Studio 技术介绍 5 2.3 SQL Server数据库技术介绍 6 第3章 系统分析与设计 7 3.1 可行性分析 7 3.1.1 技术可行性 7 3.1.2 操作…

HTTP请求

前言 HTTP是应用层的一个协议。实际我们访问一个网页,都会像该网页的服务器发送HTTP请求,服务器解析HTTP请求,返回HTTP响应。如此就是我们获取资源或者上传资源的原理 HTTP请求报头格式 图片来自网络 HTTP请求报头总体有四部分:…

pycharm中绘制一个3D曲线

import numpy as np import matplotlib.pyplot as plt # 中文的设置 import matplotlib as mp1 from mpl_toolkits.mplot3d import Axes3D mp1.rcParams["font.sans-serif"] ["kaiti"] mp1.rcParams["axes.unicode_minus"] False # 数据创建 X…

忽略python运行出现的大量警告

添加以下代码即可 import warnings warnings.filterwarnings(ignore)

制作红木家具3d模型

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在家居行业中,设计师可以通过在3D建模中添加实际的家具、…

【python】包(package)与模块(module)、import、__name__与__main__

导入模块一般写在程序最前面,且顺序为:内置模块、第三方模块、自定义模块 一、模块(module)与包(package) 模块(module)可以理解为是一个.py文件,import 模块 相当于执行…

应用于智慧园区的AI边缘计算盒子+AI算法软硬一体化方案

工业园区多为生产型和物流型企业,劳动人员密集,外来人口多,农民工多,人员流动大,车流量大,易引发车祸、破坏公共设施和绿化工程等案件; 英码智慧园区方案,可实现100%管理所有出入人员&#xff1…

ViVo小游戏对接sdk

1.安装环境: 电脑环境:adb环境和oppo一样,npm环境和oppo一样 升级npm: npm install -g npm 清除npm缓存:npm cache clean -f 安装vivo初始化小游戏的工具: npm install -g vivo-minigame/cli 解决办法&…

【Linux】:信号(三)捕捉

信号捕捉 一.sigaction1.基本使用2.sa_mask字段 二.可重入函数三.volatile四.SIGCHLD信号 承接上文 果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下: 用户程序注册了SIGQUIT信…

Lambda表达式与方法引用

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 引子 先来看一个案例 …

Vue3获取阴历/农历日期

安装插件 pnpm add chinese-lunar-calendar引入阳历/阴历切换函数 import {getLunar} from chinese-lunar-calendarexport function lunarDate(pDate){const year pDate.getFullYear()const month pDate.getMonth() 1const day pDate.getDate()const result getLunar(yea…

房屋租赁出售经纪人入驻小程序平台

一款专为房屋中介开发的小程序平台,支持独立部署,源码交付,数据安全无忧。 核心功能:房屋出租、经纪人独立后台、分佣后台、楼盘展示、房型展示、在线咨询、地址位置配套设施展示。 程序已被很多房屋交易中介体验使用过&#x…

leetcode 287. 寻找重复数

2023.11.29 本题比较朴素得一个思路是利用map集合的key存储nums中的值,value存储对应值出现的次数,然后再遍历这个map集合的value,如果这个value大于1,说明对应的key出现的次数超过了1次,并且题目说这个key唯一&#x…

frp内网穿透

frp内网穿透 内网穿透是一种网络技术,允许您从互联网访问内部网络中的设备或服务,即使这些设备或服务位于防火墙或路由器等网络边界设备之后,也可以实现远程访问。 0x01 功能介绍 frp是一种代理工具,允许用户通过互联网轻松访问其…

mybatis源码(五)springboot pagehelper实现查询分页

1、背景 springboot的pagehelper插件能够实现对mybatis查询的分页管理,而且在使用时只需要提前声明即可,不需要修改已有的查询语句。使用如下: 之前对这个功能一直很感兴趣,但是一直没完整看过,今天准备详细梳理下。按…

Docker下安装Tomcat

目录 Tomcat简介 Tomcat安装 免修改版Tomcat安装 Tomcat简介 Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比…