TCP/UDP的首部

TCP/UDP首部信息

  • TCP首部
    • 第一个4字节
    • 第二个4字节与第三个4字节
    • 第四个4字节
    • 第五个4字节
    • 选项
      • 最大报文段长度(MSS)选项
      • 窗口扩大选项
      • 时间戳选项
  • 什么时候发送RST包
  • UDP首部

TCP首部

TCP 首部长度为20字节,加上选项部分最大可达60字节。
在这里插入图片描述

第一个4字节

  1. 源端口,16位;发送数据的源进程端口。
  2. 目的端口,16位;接收数据的进程端口。

由于端口号最多为16位,因此端口号最大值为65535。

第二个4字节与第三个4字节

  1. 序号,32位;代表当前TCP数据段第一个字节占整个字节流的相对位置。
  2. 确认号,32位;代表接收端希望接收的数据序号,为上次接收到数据报的序号+1,当ACK标志位为1时才生效。

第四个4字节

  1. 数据偏移,4位;实际代表TCP首部长度,最大为60字节。
  2. 6个标志位,每个标志位1位:
  • SYN,为同步标志,用于数据同步;
  • ACK,为确认序号,ACK=1时确认号才有效;
  • FIN,为结束序号,用于发送端提出断开连接;
  • URG,为紧急序号,URG=1是紧急指针有效;
  • PSH,指示接收方立即将数据提交给应用层,而不是等待缓冲区满;
  • RST,重置连接。
  1. 窗口值,16位;窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。

第五个4字节

  1. 校验和,16位;用于检验数据完整性。
  2. 紧急指针,16位;只有当URG标识位为1时,紧急指针才有效。紧急指针的值与序号的相加值为紧急数据的最后一个字节位置。用于发送紧急数据。

选项

长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度是20字节,加上选项部分最大可达60字节。

最大报文段长度(MSS)选项

TCP最初只规定了一种选项,即最大报文段长度MSS(Maximum Segment Szie)。MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是整个TCP报文段的最大长度,而是“TCP报文段长度减去TCP首部长度。

为什么要规定一个最大报文长度MSS呢?这并不是考虑接受方的接收缓存可能存放不下TCP报文段中的数据。实际上,MSS与接收窗口值没有关系。我们知道,TCP报文段的数据部分,至少要加上40字节的首部(TCP首部20字节和IP首部20字节,这里还没有考虑首部中的可选部分)才能组装成一个IP数据报。若选择较小的MSS长度,网络的利用率就降低。设想在极端情况下,当TCP报文段只含有1字节的数据时,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,对网络的利用率就不会超过1/41。到了数据链路层还要加上一些开销。但反过来,若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片组成成原来的TCP报文段,当传输出错时还要进行重传,这些也都会使开销增大。

因此,MSS应尽可能大些,只要在IP层传输时不需要分片就行。由于IP数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要的分片的MSS,如果改走另一条路径就可能需要进行分片。因此最佳的MSS是很难确定的。在连接过程中,双方都把自己能够支持的MSS写入这一字段,以后就按照这个数值传输数据,两个传送方向可以有不同的MSS值。若主机未填写这一项,则MSS的默认值是536字节长。因此,所有在互联网上的主机都应该接受的报文段长度是536+20(固定首部长度)=556字节。

窗口扩大选项

窗口扩大选项是为了扩大窗口。我们知道,TCP首部中窗口字段长度是16位,因此最大的窗口大小为64K字节。虽然这对早期的网络是足够用的,但对于包含卫星信道的网络,传播时延和宽带都很大,要获得高吞吐量需要更大的窗口大小。

窗口扩大选项占3字节,其中有一个字节表示移位值S。新的窗口值等于TCP首部中的窗口位数从16增大到(16+S)。移位值允许使用的最大值是14,相当于窗口最大值增大到2(16+14) - 1 = 2 30-1。

窗口扩大选项可以在双方初始建立TCP连接时进行协商。如果连接的某一端实现了窗口扩大,当它不再需要扩大其窗口时,可发送S=0选项,使窗口大小回到16。

时间戳选项

时间戳选项占10字节,其中最主要的字段是时间戳字段(4字节)和时间戳回送回答字段(4字节)。时间戳选项有以下两个作用:

第一、 用来计算往返时间RTT。发送方在发送报文段时把当前时钟的时间值放入时间戳字段,接收方在确认该报文段时把时间戳字段复制到时间戳回送回答字段。因此,发送方在收到确认报文后,可以准确地计算出RTT来。

第二、 用于处理TCP序号超过232的情况,这又称为防止序号绕回PAWS。我们知道,TCP报文段的序号只有32位,而每增加232个序号就会重复使用原来用过的序号。当使用高速网络时,在一次TCP连接的数据传送中序号很可能被重复使用。例如,当使用1.5Mbit/s的速度发送报文段时,序号重复要6小时以上。但若用2.5Gbit/s的速率发送报文段,则不到14秒钟序号就会重复。为了使接收方能够把新的报文段和迟到很久的报文段区分开,则可以在报文段中加上这种时间戳。

什么时候发送RST包

  1. 建立连接的SYN到达某端口,但是该端口上没有正在监听的服务。
  2. 主机收到了一个根本不存在的连接上的分节。
  3. 请求超时。

UDP首部

在这里插入图片描述

UDP首部的长度为8个字节,共包含以下四个部分,每个部分为2个字节:

  1. 源端口号:发送方的端口号,范围(0~65535)
  2. 目的端口号: 接收者的端口号,范围(0~65535)
  3. 长度:表示UDP报文段的长度(包括首部和数据)
  4. 校验和:接收方用于校验该报文段中是否存在了差错

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

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

相关文章

微服务远程调用openFeign简单回顾

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件,可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…

接口漏洞-DVWS(XXE+鉴权)+阿里云KEY

dvws靶场 靶场:https://github.com/snoopysecurity/dvws-node 开启靶场,注册一个普通用户,登录成功 来到首页点击admin area 发现进入几秒钟之后又跳转回到首页,只有管理员admin用户才能进入。 点击admin area抓包,发现…

C# List 详解四

目录 18.FindLast(Predicate) 19.FindLastIndex(Int32, Int32, Predicate) 20.FindLastIndex(Int32, Predicate) 21.FindLastIndex(Predicate) 22.ForEach(Action) 23.GetEnumerator() 24.GetHashCode() 25.GetRange(Int32, Int32) C#…

实验二十四、滞回比较器电压传输特性的测量

一、题目 滞回比较器电压传输特性的测量。 二、仿真电路 电路如图1所示。 为便于观察电压传输特性的变化,输入信号采用信号发生器产生的幅值为 10 V 10\,\textrm V 10V、频率为 20 Hz 20\,\textrm{Hz} 20Hz 的三角波电压。采用虚拟的运算放大电路,其…

js中的数据结构之栈

js中的数据结构之栈 一、定义 栈是一种限定仅在表尾进行插入和删除操作的线性表,遵循后入先出的原则。 二、描述 栈是和列表类似的一种数据结构,也可以说栈就是一种特殊的列表。 栈里面的元素只能通过列表的一端访问,这一端称为栈顶。相…

树莓派 使用 docker安装showdoc

最近在使用showdoc时感觉挺方便的,但是在树莓派上拉取showdoc对应的镜像时特别慢,熬了一天半发现镜像倒在了最后一步,重试了好几次都没有拉去下来。后来仔细阅读了官网操作文档再加一点小运气今天成功给安装成功了。 showdoc的安装环境&…

Windows系统实现唤醒+合成+命令词智能语音交互

1、之前写过离线能力调用,今天来个终极版,实现智能交互或者结合大模型的智能交互示例,下面进入正题。上B站效果离线唤醒离线合成离线命令词实现智能交互_哔哩哔哩_bilibili 2、到讯飞开放平台下载唤醒合成命令词的离线组合包,找到…

【华为OD机试】按单词下标区间翻转文章内容【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。 例如输入字符串 “I am a developer.”,区间[0,3]则输出 “developer. a am I”。 输入描述: 使用换…

【趟坑记录】d3.zoom()的正确使用姿势 @d3.v7

【趟坑记录】d3.zoom()的正确使用姿势 d3.v7 文章目录 【趟坑记录】d3.zoom()的正确使用姿势 d3.v7问题重现原因分析解决方案放缩平移写法特殊修改transform函数的写法 总结 在开发一个D3应用的时候遇到了一个 zoom相关的问题,记录解决思路与方案 问题重现 最近在…

动态监控U盘重启容器

需求背景 Ubuntu机器需要动态根据插入的U盘进行导入数据, 路径是约定为U盘内的固定路径. 但是服务是docker服务, 插入U盘并不会直接挂在到容器内部, 需要重启容器才能生效, 每次手动重启很麻烦, 自动检测U盘路径变化来操作容器. 配置动态监控脚本和服务 编写脚本 vim moni…

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载 Windows 10 22H2 企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-10/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Window…

FPGA——verilog实现格雷码与二进制的转换

文章目录 一、格雷码简介二、二进制转格雷码三、格雷码转二进制四、仿真 一、格雷码简介 格雷码是一种循环二进制码或者叫作反射二进制码。跨时钟域会产生亚稳态问题(CDC问题):从时钟域A过来的信号难以满足时钟域B中触发器的建立时间和保持时…

python实现远程服务器的操作

前言 测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地就行操作,以前安静经常会用到xftp工具。今天介绍一种python库Paramiko,可以帮助我们通过代码的方式进行完成对远程服务器的上传和下载操作。…

MongoDB University课程M310 MongoDB Security 学习笔记

环境准备 此课程需要两台虚机。因此需要提前安装Vagrant和VirtualBox,这些我已经有了。因此只需要下载课程提供的Vagrant文件m310-vagrant-env.zip就可以了。 解压文件,进入目录,运行以下命令即可: $ cd m310-vagrant-env $ va…

elementui el-table 封装表格

ps: 1.3版本 案例&#xff1a; 完整代码&#xff1a; 可直接复制粘贴&#xff0c;但一定要全看完&#xff01; v-slot"scopeRows" 是vue3的写法&#xff1b; vue2是 slot-scope"scope" <template><!-- 简单表格、多层表头、页码、没有合并列行…

flutter开发实战-Stagger Animation实现水波纹动画

flutter开发实战-实现水波纹动画&#xff0c;使用到了交织动画&#xff0c;实现三个圆逐渐放大与渐变的过程。 一、效果图 二、实现水波纹效果 实现水波纹动画&#xff0c;使用到了交织动画&#xff0c;实现三个圆逐渐放大与渐变的过程。 交织动画 有些时候我们可能会需要一些…

线程系列 7 - JUC高并发容器类

线程系列 7 - JUC高并发容器类 1、JUC高并发容器1.1、为什么需要JUC高并发容器1.2、什么是 JUC 高并发容器1.3、CopyOnWriteArrayList1.4、BlockingQueue1.4.1、阻塞队列的常用方法1.4.2、ArrayBlockingQueue1.4.3、LinkedBlockingQueue1.4.4、DelayQueue1.4.5、PriorityBlocki…

TypeScript快速入门

文章目录 一、初识TypeScript1、安装TypeScript2、Hello TypeScript 二、结合项目---配置1、tsconfig.jsontsconfig.json 重要字段compilerOptions 每个选项的详细说明 2、ts-loader 三、语法1、基本类型2、类型注解3、函数4、接口5、类6、泛型 四、结合项目---vue3结合使用 一…

可观测之调用链Skywalking

简介 分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 多种监控手段。可以通过语言探针和 service mesh 获得监控…

HTTPS连接过程中的中间人攻击

HTTPS连接过程中的中间人攻击 HTTPS连接过程中间人劫持攻击 HTTPS连接过程 https协议就是httpssl/tls协议&#xff0c;如下图所示为其连接过程&#xff1a; HTTPS连接的整个工程如下&#xff1a; https请求&#xff1a;客户端向服务端发送https请求&#xff1b;生成公钥和私…