运输层 :UDP用户数据报协议

2023-10-29

1.相关概念

UDP数据包产生,上层应用产生数据,但是这与真正发送的IP数据报数量并没有什么联系,并且UDP报文并不是一种可靠的协议

我们必须关注IP数据报的长度,如果超过MTU(在链路层的一种限制),则应该进行分片

2UDP报文

16位源端口号(发送进程)|16位目的端口号(接受进程)|16位UDP长度(指的是UDP数据报首部和数据的长度)|16位检验和(计算包括伪首部-><32位源IP地址,32位目的IP地址,4位0,八位协议,16位UDP长度>,如果校验和为0,则发送全1,如果发送的是0,则证明没有开启UDP,校验和采用IP数据保一样的校验方式)|数据(可以是奇数的数据,但是如果是奇数的数据,则在校验和的时候,应该填充字节)

注意:现在的UDP校验功能一般是开启的


典型的UDP数据报TCP/IP详解P110页

bsdi.1108 (端口)> svr4.discard:udp 1024

2:IP分片


IP数据报超过了MTU,必须进行分片,列如在以太网中,MTU通常是1500

举例

bsdi.1116 > svr4.discard:udp 1473(frag 26304:1480@0+)

bsdi.1116>svr4.discard:(frag 26304:1@1480)

udp,即使用的是UDP协议,1473说明原来数据报的长度,因为MTU=1500,所以去掉IP首部,剩余1480,去掉UDP首部,剩余1472,所以超出一个字节需要进行分片

ICMP:internet控制报文协议 PING 查看ICMP目的不可达差错(需要分片)

3:应用程序采用MTU发现机制(应用程序使用UDP协议)

在发送UDP的时候其实是最好不要分片的,因为分片会增加消耗,如果没有进行分片,则在遇到MTU较小的条件下,就会发送会ICMP目的段不可达差错报文,如果路由器支持返回下一跳MTU,则直接可以利用此MTU如果没有,则猜测一个,进行发送,采用MTU发现机制的UDP会定期设置DF(不准分片标志),以确定MTU是否发生变化。

4:UDP和ARP之间的交互

列如有 bsdi % sock -u -i -n1 -w8192 svr4 discard

1024552-20160912090328898-1859547056.png

因为因为分成了六个报文,所以发送了六个ARP请求报文,但是在收到ARP应答报文的时候,只发送了一份
UDP报文,这份UDP报文是分片之后最后的一份,,返回7个ARP应答,不需要理会,在收到UDP报文的时候,不管哪一段,接收端都应该启动一个定时器,如果定时器超时,还没有收到其他的
UDP分片报文,则发挥ICMP组装超时报文(如果有这个功能的话)

5:UDP服务器的设计

UDP服务器采用输入队列方式处理接收到的数据,在这种方法中,会出现数据溢出,溢出的数据会进行丢弃

UDP服务器可以限制本地IP,限制远端IP地址





转载于:https://www.cnblogs.com/SmileLion/p/5863536.html

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

运输层 :UDP用户数据报协议 的相关文章

随机推荐

  • Revit 2019: Essential Training for Architecture (Metric) Revit 2019:建筑基本培训(公制) Lynda课程中文字幕

    Revit 2019 Essential Training for Architecture Metric 中文字幕 Revit 2019 建筑基本培训 公制 中文字幕Revit 2019 Essential Training for Ar
  • PyTorch 中的数据类型 torch.utils.data.DataLoader

    DataLoader是PyTorch中的一种数据类型 在PyTorch中训练模型经常要使用它 那么该数据结构长什么样子 如何生成这样的数据类型 下面就研究一下 先看看 dataloader py脚本是怎么写的 VS中按F12跳转到该脚本 i
  • VSCODE 备注 //TODO 代码高亮方法

    VSCODE 备注 TODO 代码高亮方法 1 安装插件 2 插件配置如下 3 将配置直接复制进去 todohighlight defaultStyle color red backgroundColor ffab00 overviewRu
  • RabbitMQ安装教程

    整理了一下自己根据教程安装rabbitmq的过程 安装 环境 Linux CentOS 7 9 Erlang erlang 23 3 4 11 el7 x86 64 rpm RabbitMQ rabbitmq server 3 9 14 1
  • 20230901-文件保存

    文件保存 cpp文件 include widget h include ui widget h include
  • qt之操作鼠标 可控制鼠标连击 双击 定点点击 鼠标点击脚本等

    一 前言 一直想做一个鼠标连点器 但在网上照片各种鼠标点击软件 均不符合要求 要么收费 要么不好用 要么不好使 于是乎就想起自己会写程序 为何自己能动手非要吵吵呢 于是乎就着手去新建qt工程开始干 在qt文档里找了mouse类的api函数
  • 这款 AI 工具几分钟即可为品牌设计出高端产品图片? #Flair AI

    自动生成品牌所需的营销素材 这款 AI 工具的性能有多强大 Flair AI Flair AI 是一个品牌内容的 AI 设计工具 能够给品牌生成高质量的营销素材 根据用户的描述 自动创建出适合 CPG consumer packaged g
  • C++STL总结笔记(一)—— 容器和容器适配器

    文章目录 前言 一 概念 1 1 顺序容器 1 2 容器适配器 1 3 关联容器 二 程序示例 1 vector和Set自定义数据类型的访问 2 vector容器嵌套 3 list容器排序 4 pair对组的使用 总结 前言 STL是C 中
  • 【案例 5-4】字符串转换为二进制

    Test类 package anli5 4 字符串转换为二进制 import java util Scanner public class Test public static void main String args Scanner s
  • Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign

    一 客户端负载均衡 Spring Cloud Ribbon Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具 它是基于Netflix Ribbon实现的 通过Spring Cloud的封装 可以轻松地将面向服务的
  • 如何看懂源代码--(分析源代码方法)

    由于今日计划着要看Struts 开源框架的源代码 昨天看了一个小时稍微有点头绪 可是这个速度本人表示非常不满意 先去找了下资料 觉得不错 摘自 繁体中文Traditional Chinese http www ithome com tw i
  • HT for Web (Hightopo) 使用心得(7)- 3D场景环境配置(阴影,灯光,环境光)

    在文章 Graph3dView 环境配置 天空球 雾化 辉光 景深 中 我们介绍了在 3D 场景中的一些环境配置 包括天空球 雾化 辉光 景深等 本篇文章我们继续补充其他的环境参数 阴影 灯光 环境光 由于本人缺乏艺术细胞 文章中配置的环境
  • vue 实现抽奖大转盘

    实际解决需求 前端只是负责页面转动 在用户点击时 请求中奖接口 同同时通过设置css属性 让转盘转动起来 当转盘转动结束后 根据请求后端接口回来的中奖信息 设置转盘的转动位置 然后进行弹窗显示中奖信息 在此时 注意要重置转盘的转动角度为初始
  • python组成结构_[Python入门学习]-Python项目的组织结构

    一 工程结构 二 编码规范 1 命名规范 包 使用小写字母命名 如果有多个单词 则用下划线分隔 正确的命名方式 lower with under 模块 使用小写字母命名 如果有多个单词 则用下划线分隔 正确的命名方式 lower with
  • Notepad++ 下载

    1 输入下载网址 https notepad plus plus org 2 点击download 3 开始下载安装包 下载好双击下面 跟着向导完成 在此处点击需要创建快捷方式 然后点安装 完成安装的效果
  • 排序算法系列1--简单排序(选择,冒泡,直接插入,希尔排序)

    排序是数据处理中十分常见的操作 现代高级语言都有现成的n种排序算法 但了解它们的代码 对计算机思维有帮助 简单选择排序 每一趟从待排序的数据元素中选择最小 或最大 的一个元素作为首元素 直到所有元素排完为止 简单选择排序是不稳定排序 无论数
  • Mysql数据库迁移:善用Navicat工具,事半功倍

    数据库迁移 在说到数据库迁移方面 像很多开发工作一样 简单有简单的做法 复杂有复杂的做法 就看怎么做了 那么什么样子的数据库迁移方式才是最优的 在这里是没有准确的定义的 但是我这边分享一个比较简单而言的数据库迁移方案 一 迁移方案描述 例如
  • Linux 别名的设置与修改

    装了个 Ubuntu 在终端下 输入 ll 将全部文件显示出来了 由于平时工作中使用的 suse 系统下 输入 ll 时是不会显示隐藏文件的 文件名前面带 的文件 而且一般很少使用隐藏文件 习惯问题 不希望它显示隐藏文件 打算改改 在终端下
  • STM32-基本知识梳理8-FATFS文件系统移植

    一 基本概念 1 为什么需要文件系统 在没有文件系统的存储器中 一般通过手工记录 那些变量存放在那些位置 很难有系统的管理 难以记录有效数据的位置 难以确定存储介质的剩余空间 不明确应以何种格式来解读数据 加入文件系统后 就可以引导区 目录
  • 运输层 :UDP用户数据报协议

    1 相关概念 UDP数据包产生 上层应用产生数据 但是这与真正发送的IP数据报数量并没有什么联系 并且UDP报文并不是一种可靠的协议 我们必须关注IP数据报的长度 如果超过MTU 在链路层的一种限制 则应该进行分片 2UDP报文 16位源端