TCP协议报头详解

目录

前言

TCP特点

TCP报头

1.源端口和目的端口

2.序号

3.确认号

4.数据偏移

5.保留

6.控制位

        ① 紧急URG(URGent)

        ② 确认ACK(ACKnowledgment)

        ③ 推送PSH(PuSH)

        ④复位RST(ReSeT)

        ⑤ 同步SYN(SYNchronization)

        ⑥ 终止FIN(FINish)

7.窗口

8.检验和

9.紧急指针

10.选项

参考

共勉


前言

        总结了一下TCP报头中各个字段的作用,希望可以帮到你呀。


TCP特点

        面向连接:在使用TCP协议进行通讯时,必须先进行TCP连接,传送数据完毕后,必须释放用于传输数据的TCP连接。

        可靠性:通过TCP连接传送的数据,无差错、不丢失、不重复、并且按需到达。

        面向字节流:TCP中的“流(stream)”指的是流入到进程火铳进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP并不知道所传送的字节流的含义。

        全双工通信:TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存。


TCP报头

1.源端口和目的端口

        各占两个字节,分别写入源端口号和目的端口号。


2.序号

        占4字节,序号范围是[0, 2^32 - 1],共2^32(4294 967 296)个序号。序号增加到2^32 - 1后,下一个序号又会回到0。在一个TCP连接中传送的每个字节流中的每个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的抵押给字节的序号。例如,一报文段的序号字段是301,则携带的数据共有100字节。下一个报文段(如果存在)的数据序号以当从301开始,即下一个报文段的序号字段应为401。这个字段的名称也叫做“报文段序号”。


3.确认号

        占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如,B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501~700),着表明B正确收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。

若确认号 = N,则表明:到序号N - 1为止的所有数据都已正确收到


4.数据偏移

        占4位,它指出TCP报文段的首部长度的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是有必要的。但应注意,“数据偏移”的单位是32位字(即4字节的字位计算单位)。由于4位二进制数能够表示的最大十进制数字位15,因此数据偏移的最大值位60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。


5.保留

        占6位,保留为今后使用,目前应该置为0。


6.控制位

        总共六位,每位说明一个性质,6位一起说明本报文段的性质。

        ① 紧急URG(URGent)

                当URG置为1时,表明紧急指针字段有效。它告诉系统此报文段中由紧急数据,应尽快传送(相当于高优先级的数据),而不是按照原来的排队顺序传送,紧急数据后面的数据仍然是普通数据。

        ② 确认ACK(ACKnowledgment)

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

        ③ 推送PSH(PuSH)

                当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付为应用进程,而不再等到整个缓存都填满了后再向上交付。

        ④复位RST(ReSeT)

                当RST=1时,表明TCP连接中出现严重差错(如主机崩溃),必须释放连接,然后再重新建立连接。将RST置为1还用来拒绝一个非法报文段或拒绝打开一个连接。RST也称为重置位。

        ⑤ 同步SYN(SYNchronization)

                在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应当响应的报文段中使用SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或者同意连接报文。

        ⑥ 终止FIN(FINish)

                用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已经发送完毕,并要求释放运输连接。


7.窗口

        占2字节。窗口值是[0, 2^16 - 1]之间的整数。窗口指的是发送本报文段的一方接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。

窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。

8.检验和

        占2字节,检验和字段检验的范围包括首部和数据这两部分。

9.紧急指针

        占2字节,紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就高数应用程序恢复到正常操作 。注意:即使窗口为零时也可发送紧急数据。

10.选项

        长度可变,最长40字节。填充字段仅仅是为了使整个TCP首部长度是4字节的整数倍。
 


参考

        《计算机网络》第八版 谢希仁编著 

        RFC 793

共勉

        以上就是我对TCP报头的全部理解。有什么问题和疑问欢迎在评论区讨论,或者私信我呀。后面还有出拥塞控制、三次握手和四次挥手相关的文章,关注可以第一时间看到呀。

感谢阅读

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

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

相关文章

Hexo 搭建个人博客(ubuntu20.04)

1 安装 Nodejs 和 npm 首先登录NodeSource官网: Nodesource Node.js DEB 按照提示安装最新的 Node.js 及其配套版本的 npm。 (1)以 sudo 用户身份运行下面的命令,下载并执行 NodeSource 安装脚本: sudo curl -fsSL…

【牛客面试必刷TOP101】Day32.BM68 矩阵的最小路径和和BM69 把数字翻译成字符串

文章目录 前言一、BM68 矩阵的最小路径和题目描述题目解析二、BM69 把数字翻译成字符串题目描述题目解析总结 前言 一、BM68 矩阵的最小路径和 题目描述 描述: 给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空&#x…

webpack逆向

声明:个人总结记录一下,避免忘记 1、webpack 类型 单文件 直接可以在文件顶部找到加载器 多文件 顶部找不到加载器 如图所示 多文件的这话,全局搜所 69725 找到类似n(69725) ,单点n进去,可以找到加载器 2、调用 通过赋值的方…

Linux 并发与竞争实验学习

Linux 并发与竞争实验学习 原子操作实验 这里原子操作就是采用原子变量来保护一个程序运行的完整过程,使用atomic 来实现一次只能允许一个应用访问 LED,创建atomic.c文件,其实改动内容就是添加原子变量, 要在设备结构体数据添加…

vue2 + element-ui,前端配置化表单封装(2024-06-14)

技术栈是 vue2 element-ui,主要能解决的问题就是 提高代码复用能力、提升开发效率,特别是需要开发多个大型表单系统的,配置化可以极大的提升效率,让你上班摸鱼不再是梦想!为了早点下班,我们接着往下看吧&a…

(Java微服务项目实战)dtpay聚合支付系统对账管理模块系统设计

1 聚合支付系统对账流程 dtpay聚合支付系统对账模块主要涵盖商户侧对账和渠道侧对账、平台侧对账,本文主要分析渠道侧对账。dtpay聚合支付系统通过支付渠道微信、支付宝等产生的支付退款交易数据需要和平台侧产生的数据进行交易数据比对。接下来我们具体分析对账流…

一款不写代码的开源爬虫工具!!【送源码】

爬虫,也被称为网络爬虫或网络蜘蛛,是一种自动化的网络机器人,其主要功能是按照一定的规则,自动浏览互联网并从网页中提取信息。 作为一个开发人员,相信大家都尝试过写一些爬虫,合理的利用一些爬虫工具&…

金融行业的等保测评要求

金融行业的等保(网络安全等级保护)测评要求是确保金融机构的信息系统达到一定的安全保护水平,以保护客户信息和金融交易的安全。等保测评在金融行业中的具体要求和流程主要包括以下几个方面: 等保级别 金融行业信息系统依据其重…

深入理解并打败C语言难关之一————指针(4)

前言: 我们在前面的几讲中已经讲了指针的很多内容了,现在我们开始层层递进,要探寻更多的指针喽,不多废话了,直接进入正题,开始今天的指针之旅喽! 目录: 1.字符指针变量 1.1常量字符…

MEGALODON:突破传统,实现高效无限上下文长度的大规模语言模型预训练和推理

在人工智能领域,尤其是在自然语言处理(NLP)中,大模型(LLMs)的预训练和推理效率一直是研究的热点。最近,一项突破性的研究提出了一种新型神经网络架构——MEGALODON,旨在解决传统Tran…

阿里新发布的UniAnimate现高效人像动画生成;在ComfyUI中使用Stable 3模型;音频版的gpt2o;将 PDF 文档转换为音频播客

✨ 1: UniAnimate 阿里新发布的UniAnimate通过统一的视频扩散模型,实现高效人像动画生成,支持长视频生成 UniAnimate 是一种专注于一致性人像动画生成的统一视频扩散模型。该模型通过映射参考图像、姿势指导和噪声视频到一个共同特征空间,实…

ZED双目相机环境配置

官方资料:stereolabs/zed-python-api: Python API for the ZED SDK (github.com) 1,配置ZED相机环境 1.安装CUDA 查看电脑是否安装CUDA,安装过程可参考以下博文: 如何选择匹配的CUDA版本:https://blog.csdn.net/iam…

MoCo v3(ICCV 2021)

paper:An Empirical Study of Training Self-Supervised Vision Transformers official implementation:https://github.com/facebookresearch/moco-v3 出发点 本文并没有提出一种新的方法,而是对计算机视觉领域最近进展中的一个重要且基础…

沃尔玛自养号测评:优势与技术要求解析

沃尔玛自养号测评是一种卖家在沃尔玛平台上提升店铺权重和排名的营销手段。传统运营策略的局限性日益显现,如营销手段单一、难以应对市场竞争等。因此,许多卖家为了提升店铺权重和排名,选择了自养号测评这一技术手段。 以下是对沃尔玛自养号…

关于BERT和embedding

embedding到一个低维向量,但是需要回到onehot高维表示,所以大部分填词游戏最后都需要加上一个MLP接头。 word2vec如此简单的结构,学习到的是embedding 基于计数的统计方法和word2vec融合就形成了glove词嵌入模型 总结:通过各种…

消费者消费数据时报错:INVALID_REPLICATION_FACTOR

今天部署了kafka集群,三台服务器,启动后,生产者发送数据,消费者接收数据的时候报错,INVALID_REPLICATION_FACTOR。 查了很多资料,说是要改kafka下config目录的server.properties,可能是副本数太小&#xff…

【计算机视觉】人脸算法之图像处理基础知识(四)

图像的几何变换 图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。 1.插值算法 插值通常用来放缩图像大小,在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次…

sap怎么批量给信息记录打上删除标识

1.MEMASSIN-----事务代码 2.选择完成字段 3.根据条件查询需要冻结的信息记录 4.输入查询条件 5.全部勾选完成标识,点击保存,即可冻结完成

盘点国内外免费AI视频工具,助你先人一步拥抱AI

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 6月13日,Luma AI 在 X 平台(原 Twitter)宣布其视频生成模型 Dream Machine 开放测试,并提供免费试用,这在海外 AI 圈掀起了一…

配置中心理论学习

配置中心是一种用于集中管理应用程序配置信息的系统或服务。在微服务架构中,由于服务数量众多且可能分布在不同的环境中,配置中心的作用尤为突出。它允许开发者将配置信息从应用程序代码中分离出来,集中存储和管理,从而提高配置的…