TCP报文格式

2023-11-12

TCP报文格式

TCP首部

在这里插入图片描述

  • 源端口和目的端口,各占16bit

  • 序号:SEQ序号。给发送的每个数据包标上序号。

  • 确认号:ACK序号。是指即将接收的数据包序号。注意,这里指的是序号不是标志位

  • 数据偏移:占4bit,指TCP首部第一个字节和数据的第一个字节之间相差的字节数。

  • 标志位:共有六个。

    • URG:紧急比特,当URG=1时,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送。

    • ACK:确认比特,当ACK=1时,确认号字段才有效。

    • PSH:推送比特,告诉接收端此报文段应尽快提交给应用进程,而不再等到整个缓存都填满再提交。

    • RST:复位比特,当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。

    • SYN:同步比特,当SYN=1时,表示建立连接,在TCP的前两次握手中SYN置1.

    • FIN:终止比特,当FIN=1时,表示此报文段的发送端已发送完毕,要求释放连接。

  • 窗口字段:占16bit。双方说出自己的数据缓存区大小,单位为byte,然后约定一个比两者中较小的大小还要小的数值作为双方通信的缓存区大小。防止出现发送方一次可以发送30000个数据,接收方一次只能接收20000个数据

  • 检验和字段:占16bit。检验和字段检验的范围包括首部和数据两部分

  • 紧急指针字段:占16bit。指出此报文段中紧急数据的最后一个字节的序号。

  • 选项字段:长度可变。TCP只规定了一种选项,即最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。1

  • 保留字段:占6bit。保留为今后使用,但目前应置为0。

选项字段和保留字段似乎只出现在含有SYN信号的报文段中

三次握手

  1. 第一次握手:客户端发送一个数据包,其SYN置1,发送序号SEQ=X,是随机生成的。
    在这里插入图片描述

  2. 第二次握手:服务器返回数据包应答。其SYN和ACK均置1,同时将ACK序号+1,即ACK=X+1,发送序号SEQ=Y,随机生成。
    在这里插入图片描述

  3. 第三次握手:客户端再次发送确认数据包,其SYN置0,ACK置1,同时将ACK序号加1,即ACK=Y+1,发送序号上次握手的ACK序号,即SEQ=X+1。
    在这里插入图片描述

四次挥手

在这里插入图片描述

  1. 第一次挥手:客户端发送一个数据报文,其标志位FIN和ACK置1,序号SEQ=X,确认序号ACK=Y。2Client进入FIN_WAIT_1状态。
    在这里插入图片描述

  2. 第二次挥手:服务器返回一个确认包,其标志位ACK置1,序号SEQ=Y,确认序号ACK=X+1。Server进入CLOSE_WAIT状态。
    在这里插入图片描述

  3. 第三次挥手:服务器断开TCP连接,并发送一个数据包。其标志位FIN和ACK置1,Server进入LAST_WAIT状态。3
    在这里插入图片描述

  4. 第四次挥手:客户端收到服务器的断开请求后,Client进入TIME_WAIT状态,发送一个确认包。其标志位ACK=1,发送序号SEQ=X+1,确认序号ACK=Y+1。Server进入CLOSED转台。
    在这里插入图片描述


  1. https://blog.csdn.net/guizaijianchic/article/details/77524825 ↩︎

  2. 序号是随机生成的。 ↩︎

  3. 有资料说这里的发送序号要加1,但我用WireShark抓包发现第三次和第二次的SEQ以及ACK的数值并没有改变。 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP报文格式 的相关文章

  • UnityEditor-批处理Texture,spriteEditor,代码设置Pivot失效问题

    需求起因 最近制作角色2D八方向的动画 美术提供的序列帧图片资源 角色不同动作不同方向的图片大小和角色实际的中心点是不一致的 如图所示 攻击和溃败的序列帧图片尺寸和角色在图片中心位置是不一样的 这样会导致一个问题 在动画状态切换的时候 犹豫

随机推荐

  • R-CNN网络基础

    目录 R CNN网络基础 Overfeat模型 RCNN模型 算法流程 候选区域生成 CNN网络提取特征 目标分类 SVM 目标定位 预测过程 算法总结 Fast RCNN模型 算法流程 ROI Pooling 目标分类和回归 模型训练 模
  • java发送邮件报SSL安全异常解决

    用公司阿里云企业邮箱发送邮件 一直报javax net ssl SSLHandshakeException PKIX path building failed sun security provider 异常 顾名思义是安全验证问题 以下是
  • R语言-地图绘制的思路

    R中的画地图的思路有三种 一种是利用包里GIS方面的数据 在R中直接画出来 第二种是从其他地方拿到数据 在R中通过某些包解析后再展现成 第三种就是直接把别人的图拿过来 自己再添加或去掉自己需要或不需要的东西 这三种方法只是数据来源不同 具体
  • BGP实验--联邦以及反射器

    实验明细 实验拓扑 实验要求 实验内容 实验拓扑 实验要求 1 R2 R7每台路由器均存在一个环回接口用于建立邻居 同时还存在一个环回来代表连接用户的接口 最终这些连接用户的接口网络需要可以和R1 8的环回通讯 2 AS2网段地址为172
  • 【C语言】扫雷小游戏的实现(爆炸展开)

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 各位朋友们大家好呀 今天又又是游戏整活环节 先介绍一下这个版本的
  • 【JavaScript】运算符及其优先级

    目录 一 算术运算符 1 常用的算术运算符 2 算术运算符的注意事项 二 递增和递减运算符 1 前置递增 递减 运算符 2 后置递增 递减 运算符 3 前缀和后缀的区别 三 比较运算符 关系运算符 四 逻辑运算符 1 运算中的短路现象 2
  • MATLAB车牌识别技术实现

    目 录 一 课程设计任务11 二 课程设计原理及设计方案22 1 系统简述22 2 图像预处理33 2 1灰度变换33 2 2边缘提取44 3 车牌定位55 4 字符分割55 5 字符识别66 三 课程设计的步骤和结果88 四 设计总结22
  • 关于深度学习中concat和eltwise两种特征融合方式用处的猜想

    在对网络不同地方的特征进行融合时 尤其是在深层网络融合浅层网络的特征的时候我们需要用到这两种融合方式 这两者的使用有有什么区别吗 在实际中 直接使用eltwise将当前的深层特征与浅层的特征融合时效果并不好 应该在eltwise前加若干层网
  • jmeter基本使用

    1 测试工具 jmeter压力测试相关工具 1 apache jmeter 3 1 2 JMeterPlugins Standard 1 4 0 JMeterPlugins Extras 1 4 0 3 ServrerAgent 2 2 1
  • windows azure系统简介

    Windows Azure Storage 云存储系统 提供给用户 貌似无限容量的数据存储 貌似可保存任意长的时间 数据按副本存放 本地副本 容忍设备故障 广域副本 容忍地域灾难 强一致性 待看 Azure存储系统的元素包括三种 Blobs
  • 随机抽奖程序(每天一个python小项目)

    import random num 用于存放抽奖码 print 欢迎来到抽奖小程序 while True usernum input 请输入参与抽奖的人数 reward input 请输入中奖人数 if usernum isdigit Tr
  • Python+Selenium-20-图片验证码处理

    前言 有些注册页面会含有验证码 本篇描述在selenium中对验证码的处理实例 需求 打开万维易源注册页面 https www showapi com auth reg 这个是第三方api平台易源接口 后面验证码识别用的就是他的 在注册页面
  • 【HBZ分享】ES索引分片的写入原理 及 流程

    当一条数据写到ES要经历哪些过程 当插入一条新的数据时 数据会进入Translog 和 MemoryBuffer两个内存中 并添加了事务日志 此时该文档不可查询 当translog大到一定程度时 会发生一个commit操作 也就是全量提交
  • python数据清洗 —— re.split()划分字符串

    需求 对于一行字符串 route views6 routeviews org 141694 2a0c b641 24f fffe 7 184891 CN apnic OTAKUJAPAN AS Otaku Limited CN 要将其划分成
  • CMD 命令行实现 Windows 下复制文件到文件夹下的所有文件夹

    目录 前言 1 学习 xcopy 2 展示命令行 前言 提示 这里可以添加本文要记录的大概内容 整件事情真是花了我大半天的时间 几个小时啊 终于从错误中尝试出了正确的做法 赶紧分享一下 1 学习 xcopy Win R 调出运行 键入 cm
  • ElasticSearch简介

    ElasticSearch是Java开发并且是当前最流行的开源的企业级搜索引擎 能够达到近实时搜索 稳定可靠快速安装使用方便 客户端支持Java net各种编程语言 ElasticSearch通Lucene的比较 Lucene只能在Java
  • MAC安装LLVM指导

    首先克隆llvm github工程代码 下载有时出现中断失败 git clone https github com llvm llvm project git 安装依赖软件 安装 ninja 也可以通过编译方式安装 brew install
  • 微信公众号内下载pdf等文件,受微信所限制,安卓和IOS不同处理方式(最最最优版)

    继上一篇文章微信公众号内下载pdf等文件 受微信所限制 安卓和IOS不同处理方式 后觉得还有更好的解决办法 这次真的找到更加优化版本 一定需要后台配合才行 后台接口返回Blob 后端设置response setHeader Content
  • OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

    文章目录 1 OPC基础知识 OPCDA OPCUA 1 1 OPC基础知识 1 2 OPC通信读写方式 2 OPC通信仿真 2 1 上位机与PLC通过ModbusTCP直接通信 2 2 OPC通信介绍及实例 2 2 1 OPC通信与Mod
  • TCP报文格式

    TCP报文格式 文章目录 TCP报文格式 TCP首部 三次握手 四次挥手 TCP首部 源端口和目的端口 各占16bit 序号 SEQ序号 给发送的每个数据包标上序号 确认号 ACK序号 是指即将接收的数据包序号 注意 这里指的是序号不是标志