当前位置: 首页 > news >正文

用户数据报协议UDP

UDP的格式

载荷存放的是:应用层完整的UDP数据报

报头结构: 

  • 源端口号:发出的信息的来源端口
  • 目的端口号:信息要到达的目的端口
  • UDP长度:2个字节(16位),即UDP总长度为:2^16bit = 2^10bit * 2^6bit = 1KB * 64 = 64KB.所以一个UDP的最大长度为64KB
  • UDP校验和:网络的传输并非稳定传输,还有很多额外的因素.校验和可以在一定程度上判断传输的信息是否正确

UDP的特点

  1. 无连接:对目的IP与端口号直接传输,不要建立连接(类似于寄信)
  2. 不可靠:只负责发送,如果发送失败也不会给发送端返回任何错误信息(只负责发,发完就不管了)
  3. 面向数据报:应用层交给UDP的报文不会被进行拆分,UDP按照原样进行发送.同样也不会进行合并.
  4. 只有接收缓冲区:发送的信息会直接交给内核.在接收缓冲区中不能保证收到信息的顺序与发送的一致,缓冲区满后丢弃新的UDP数据.
  5. 全双工:UDP的socket既能发送也能接收

拓展

基于UDP怎样实现可靠传输 :

针对不可靠,可引入确认应答.确保接收端收到信息后返回应答.

针对信息接收与发送的顺序不一致,可引入序列号.给每一个发送的UDP加上一个序列号,接收端对序列号进行一定的排序可得到发送时的UDP数据顺序

还可额外引入一个超时重传,可能发送端因为网络阻塞信息没能发送到接收端,接收端无法接收信息也不会应答.当一定时间后,发送端没有收到答应可以进行信息的重传

基于UDP发送大于64KB的数据:

既然无法在传输层对数据报进行分拆,程序员可以在应用层对要发送的数据报进行手动一定的拆分.拆分成多个包后,通过多个UDP进行发送出去

http://www.lryc.cn/news/121690.html

相关文章:

  • STM32F429IGT6使用CubeMX配置外部中断按键
  • 时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)
  • [开发|前端] 路由守卫笔记
  • 网络基础——网络的由来与发展史
  • 八数码(bfs)
  • CCLINK IE FIELD BASIC转MODBUS-TCP网关cclink与以太网的区别
  • 【Rust】Rust学习 第十一章编写自动化测试
  • 关于使用pycharm遇到只能使用unittest方式运行,无法直接选择Run
  • Docker+rancher部署SkyWalking8.5并应用在springboot服务中
  • 代码随想录第45天 | 322. 零钱兑换、279. 完全平方数
  • 怎么加入Microsoft Cloud Partner Program?
  • LNMP简易搭建
  • CClink IE转Modbus TCP网关连接三菱FX5U PLC
  • PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置
  • GO学习之 微框架(Gin)
  • C语言 字符指针
  • Springboot所有的依赖
  • Flutter BottomSheet 三段式拖拽
  • php后端实现调用高德地图进行POI搜索
  • uniapp 实现滑动视图切换 顶部滚动导航栏
  • ArcGIS API for JavaScript 调用自定义地图模板总结
  • QGraphicsView实现简易地图5『经纬网格』
  • RestTemplate 请求转发异常 ERR_CONTENT_DECODING_FAILED 200 (OK)
  • 用python实现一个异或计算器
  • Sketch打不开AI文件?转换方法在这里
  • 小游戏扫雷实现教学(详解)
  • 04 mysql innodb record
  • Centos7安装Docker
  • Vue中如何更好地封装组件?
  • C语言的链表的相关操作