TCP/IP/UDP/RTP/RTCP协议

2023-11-07

IP(指定目的地址和源地址)

在这里插入图片描述

Version 版本号 四个字节
IHL:IP Header Length IP头长度
Total Length 总的长度 (总的长度减去IP头长度=数据长度)
Identification Flags Fragment Offset 拆包、组包用(超过最大传输单元时)
标识 允许/不运行拆包(一个保留字节) 每个包在原来中的偏移量
Time To Live 缩写TTL 路由的跳数(一般设置成32)
Protocol 协议的类型:TCP UDP
Header Checksum 整个的校验和 从一个路由到另一个路由有没有发送变化,比如被篡改
Source Address 源地址
Destination Address 目的地址
Options 实际需求选项
Padding 用于填充,保证32位

相关定义

MTU

最大传输单元,是指网上可传输数据的最大尺寸
可通过ICMP查询最大传输单元。它通过设置IP层的DF(Don‘t Fragment)不分片位,比如将这一
比特置1,IP层将不对数据报进行分片
获取MTU的好处是传输过程中不拆包,提高传输效率。以太网MTU默认是1500B

TCP(指定端口号)

在这里插入图片描述

第四行:MAC Header 帧头 MAC Ender 帧尾 中间的是以太网帧的数据
第三行:IP头 数据
第二行:TCP/UDP头 数据

在这里插入图片描述

Source Port 源端口
Destination 目的端口 用于确定某个具体应用程序
Sequence Number 保证有序 编号 接受后有序排序(按字节为单位编号)
Acknowledgment Number 保证可靠 一个主机向另一个主机发一个包,它来收发应答。
Data offset 数据 因为Options是动态变化,所以数据从哪里开始,用它指定
Reserved 保留字
URG 紧急数据标识
ACK 目的主机收到包后发送的确认消息 置1
PSH 发送的主机 置1
RST 复位标记 比如对80端口发送消息,对方该端口没有开通,就会收到这个标记
SYN 三次握手中用 每次握手都置1
FIN 四次挥手中使用 每次置1 断开连接
window 发送数据包的一个滑动窗口 用于增加发送数据包的吞吐量
Checksum 校验和
Urgent Pointer 紧急指针
Options 选项 比如传输最大报文是多少
padding 保证32位对齐
data 数据

Seq Number具体含义

在TCP,数据不是按包排序的,而是按字节排。每个包的Seq Number代表的是发送字节的起始序号
发送的第一个包的初始序号是随机的,在创建连接的三次握手过程中交换。

Ack Number

希望对方下一个发送包从什么位置开始。
比如发送的四个包都收到了,只需要回第四个包的ack就可以了。

TCP 三次握手

在这里插入图片描述

TCP四次挥手

在这里插入图片描述

TCP ACK机制

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

TCP滑动窗口

在这里插入图片描述
在这里插入图片描述

UDP与RTP

在这里插入图片描述
在这里插入图片描述

RTP是上层协议(实时传输协议),可用于TCP上,也可用于UDP上。主要用于UDP上
就是对UDP进行模拟的TCP管理。关键字段Sequence number(以包为单位)
timestamp 时间戳 如果数据一次传不开 多个包同一源,同一时刻只能有一个包 除非timestamp有差别
SSRC 每一个信源(比如麦克风,电脑声音)都有一个唯一标识
CSRC 共享源,比如混音,将他们混合成一个信源发送出去
PT 类型 音频都音频的数据类型,视频有视频的数据类型
M 标记,对于视频,一个帧的最后一个包 它会置1
CC CSRC的个数

总结:通过seq number可以排序包,通过samestap可以判断包是否属于同一帧

RTCP

就是RTP的控制协议 (丢了多少包,来了多少包)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

TCP/IP/UDP/RTP/RTCP协议 的相关文章

  • Centos7安装Python3的方法(亲测高效)

    Centos7下安装Python3的方法 由于centos7原本就安装了Python2 而且这个Python2不能被删除 因为有很多系统命令 比如yum都要用到 root VM 105 217 centos Python 3 6 2 pyt
  • css布局中关于 块状元素和行内元素的区分

    这两天在准备实习的面试和笔试 准备复习一下这些基础的概念 避免自己处于一种仅脑袋理解嘴巴不能表述出来的状态 块状元素和行内元素的概念是在css页面布局这个地方出现 主要是将html标签按照一定的特性分成2类 块状元素和行内元素 内联元素 首
  • 循环双向链表

    循环双向链表 1 简介 单链表 总是从头到尾找结点 难道就不可以正反遍历都可以吗 当然可以 只不过需要加点东西而已 有了 next 指针 这就使得我们要查找下 结点的时同复杂度为 1 可是如果我们要查找的是上一结点的话 那最坏的时间复杂度就
  • Linux:死锁与解决方法

    死锁 死锁 指在一组进程中的各个进程均占有不会释放的资源 但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态 死锁现象 现象1 如果执行流加锁完毕后 不进行解锁则会造成死锁 上篇所述 现象2 线程A获取了1锁 线程B获取了2
  • [Qt5.12.3] 使用Chart模块中warning: ‘setAxisX‘ is deprecated, warning: ‘setAxisY‘ is deprecated的解决办法

    文章目录 问题描述 解决方案 后记 问题描述 在使用QtCharts模块绘图的过程中 X轴需要显示DateTime 不能使用默认的createDefaultAxes 遂使用了setAxisX setAxisY方法 但一直报方法被弃用 虽暂时
  • Latex: 参考文献双栏对齐

    参考 How to level columns in bibliography Latex 参考文献双栏对齐 需要实现的效果 方法1 在开头引用balance usepackage balance 在文末 参考文献前 加上 balance
  • Stream使用技巧(1)------数据处理技巧

    Stream使用技巧 1 数据处理技巧 一 背景 作为java8新特性之一的Stream API为开发者带来了极大的便利 它可以对我们需要操作的集合进行非常复杂的操作 以活的我们想要的结果 本文不会告诉你什么是Stream 毕竟网上花里胡哨
  • 双口ram 简介及Verilog实现

    简介 RAM Random Access Memory 随机存储器 是一种用来暂时存储中间数据的存储器 掉电易失 按照类型可以分为单口ram 双口ram 其中双口ram又有简单 伪 的ram 真双端口ram 在异步FIFO的内部就是一个双端
  • Networdx小案例学习

    文章目录 图的类型 无向图小案例 有向图的小案例 参考资料 图的类型 无向图小案例 import networkx as nx import matplotlib pyplot as plt G nx DiGraph 0 1 1 2 2 3
  • couldn‘t find package required on the “npm“ registry

    切换npm源就行 nrm use taobao
  • 对Attention is all you need 的理解

    本文参考的原始论文地址 https arxiv org abs 1706 03762 谷歌昨天在arxiv发了一篇论文名字教Attention Is All You Need 提出了一个只基于attention的结构来处理序列模型相关的问题
  • 遗传算法与C++实现

    1 遗传算法 核心是达尔文优胜劣汰适者生存的进化理论的思想 一个种群 通过长时间的繁衍 种群的基因会向着更适应环境的趋势进化 适应性强的个体基因被保留 后代越来越多 适应能力低个体的基因被淘汰 后代越来越少 经过几代的繁衍进化 留下来的少数
  • c++ vector

    初始化 1 默认初始化 vector为空 size为0 表明容器中没有元素 而且 capacity 也返回 0 意味着还没有分配内存空间 这种初始化方式适用于元素个数未知 需要在程序中动态添加的情况 vector
  • 华为OD机试 Python 【最小循环子数组】

    描述 给定一个数字数组 看看这个数组能否由一个子数组不断重复形成的 请找出那个可能的最小子数组 输入方式 第一行 数组里的数字数量 记作 n 1 n 100000 第二行 数组的数字 用空格隔开 每个数字都在 0 到 9 之间 输出方式 打
  • Pandas Excel Writer writer.book = book的原因

    工作 from openpyxl import load workbook import pandas as pd file r YOUR PATH TO EXCEL HERE df1 pd DataFrame Data 10 20 30
  • having子句与where子句

    1 相同点 都是对记录进行筛选 2 不同点 2 1 where 不能放在group by后面 2 2 having 是跟group by连在一起用的 放在group by 后面 此时的作用相当于where 2 3 where 后面的条件中不
  • 基于Python招聘爬虫可视化-招聘数据可视化

    视频展示 基于Python招聘爬虫可视化 项目定制 招聘数据可视化 哔哩哔哩 bilibili
  • C++primer练习12.1.4

    12 14 struct destination 连接的目的地 struct connection 使用连接所需的信息 connection connect destination 打开连接 void disconnect connecti
  • Ext智能提示 - Eclipse 3.2

    Eclipse的Ext 2 0 2智能提示 它提供了非常准确的Ext API提示 如图 下载地址 http www agpad com downloads spket 1 6 12 zip 引用方法 方法來自會員 kittig 1 将下载回
  • 【模拟电路】二极管分类

    1 TVS二极管 瞬态电压抑制器 在电路中 TVS二极管都是反向接在电源端 一旦瞬时电压超过电路正常工作电压后 TVS二极管便发生雪崩效应 提供给瞬时电流一个超低电阻通路 从而使得被保护器件或设备避免受到损毁 图1 图2 找了个网上的图 先

随机推荐

  • 必看!区块链如何推动电商行业的发展?

    区块链技术被认为是第四次工业革命中最具颠覆性的创新技术 世界上还没有见过比区块链技术更强大的技术 它可能会对所有经济部门产生潜在的影响 给它们带来一流的效率 近些年来 区块链技术在金融服务行业 能源行业 物流行业 供应链管理行业 医疗行业等
  • ambari自动化Hadoop部署

    20200922 0 引言 几年前为了处理大量的日志 简单学习了hadoop的内容 之后就在自己的几台破PC上进行了实验 当时安装的方式步骤大致如下 利用expect脚本完成免密登陆 利用clush进行集群管理 比如传输文件 或者文件及命令
  • 软件测试风险清单

    软件测试风险 主要分为 风险评估和风险控制 软件测试风险大致可以从以下几个方面考虑 一 人力 风险评估点 1 人力资源不够 2 测试用例未被完全执行 3 人员流动 测试人员对业务不熟悉 相对应的风险控制 1 按照项目计划 测试计划准备好测试
  • Altium Designer 16 放置PCB禁止布线层步骤

    放置PCB禁止布线层步骤 菜单栏中的Place gt 子菜单项Keepout gt 有几种设置模式一般选用Track 直线绘制 添加以后绘制线图不能超过禁止布线层所圈出的范围
  • 记忆碎片之python线程池、submit()、done()、result()、wait()、as_completed()、map()方法

    大量注释 小白一看就懂的多线程及参数使用 threadpool已经不再是主流 但是对于任务数量不断增加的程序 每有一个任务就生成一个线程 最终会导致线程数量的失控 例如 整站爬虫 假设初始只有一个链接a 那么 这个时候只启动一个线程 运行之
  • Go语言的图灵机

    代码如下 package main import fmt var a 30000 byte prog gt lt gt p pc int func loop inc int for i inc i 0 pc inc switch prog
  • python基础七:元组、字典、以及集合的使用

    1 元组简介 1 1元组的基本概念 元组表现形式tuple 元组是一个不可变序列 一般当我们希望数据不改变时 我们使用元组 其他情况下基本都用列表 使用 创建元素 元组不支持通过序列来修改元素 可以查找 元组不是空元组至少有一个 逗号 当元
  • Java中交集、并集、差集、补集、去重的实现

    一 交集 1 交集的实现 交集 Test public void intersection 向集合中添加元素 ArrayList
  • windows10 系统默认备份后如何还原?

    在控制面板中 如下操作 选着开始系统还原 选着备份的还原文件
  • UVA12166 Equilibrium Mobile

    VJ传送门 一道思维题 刚开始看的时候没什么思路 在博客园上参考了大佬的解析 在这里总结一下 一 分析 这道题要求让天平平衡所需要的最小改动次数 至少有一个不变 我们可以先选定一个不变的基准 然后改变其他的秤砣 得到以此为基准的天平的总重量
  • 大数据毕业设计 opencv指纹识别系统 - python 图像识别

    文章目录 0 前言 1 课题背景 2 效果展示 3 具体实现 3 1 图像对比过滤 3 2 图像二值化 3 3 图像侵蚀细化 3 4 图像增强 3 5 特征点检测 4 OpenCV 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升
  • 使用Map报错:错误 C2678 二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)

    在 C 中 使用Map时出现了这个问题 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2678 二进制 lt 没有找到接受 const Ty 类型的左操作数的运算符 或没有可接受的转换 QtWidgetsApplication1
  • pwn新手安装Ubuntu16.0.4踩雷

    为了能够实现更好的打pwn的目的 在大佬的建议下 将pwn环境换成了Ubuntu16 0 4 但是在安装的过程中产生了许多问题 导致重装过不知道多少遍虚拟机 这里写篇记录一下 防止忘记233333 步骤链接 27条消息 Pwn环境配置 三
  • java基础

    1 1 关键字与保留字 关键字 keyword 的定义和特点 gt 定义 被Java语言赋予了特殊含义 用做专门用途的字符串 单词 gt 特点 关键字中所有字母都为小写 gt 官方地址 https docs oracle com javas
  • .NET Core中使用Redis和Memcached的序列化问题

    为什么get set不直接操作对象 而需要序列化 是因为可以提高对数据库操作的执行效率 学习网址https www cnblogs com catcher1994 p 8543711 html
  • Rider 使用

    下载地址 http www jetbrains com rider fromMenu 破解 https www iteblog com archives 1542 html http idea iteblog com key php 使用
  • 约瑟夫环问题(单循环链表实现)

    用单循环链表解决约瑟夫环问题 大致思路 1 利用尾插法建立一个循环链表 建表成功后删除头结点 2 核心算法 生成一个work指针 每走到约定的step 1的位置时停止 利用pdel指针标记后继结点 循环释放pdel 直到work work
  • java数组(二)

    数组 Arrays 数组是一种数据结构 它是一组相同类型的元素的集合 该集合中的每个元素都通过一个索引访问 在Java中 数组是一个对象 它可以存储在堆上或栈上 具体取决于它如何创建 数组可以是单维数组或多维数组 数组是一个固定长度的数据结
  • C++(基础入门笔记)

    1搭建环境 include
  • TCP/IP/UDP/RTP/RTCP协议

    IP 指定目的地址和源地址 Version 版本号 四个字节 IHL IP Header Length IP头长度 Total Length 总的长度 总的长度减去IP头长度 数据长度 Identification Flags Fragme