搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
华为OD 面试手撕代码真题【判断一个数能否分解为几个连续自然数之和】_华为od面试手撕代码
2
基于征程5芯片的Transformer量化部署实践与经验_合并算子 matmul和transpose
3
大模型中 .safetensors 文件、.ckpt文件和.pth以及.bin文件区别、加载和保存以及转换方式_safetensors和ckpt
4
python控制输出速度_获取python速度
5
想用开源模型跑自己的数据集,但出现无属性的问题_训练出的模型缺少transitions
6
LLMs RAG检索增强生成在应用中使用LLM Retrieval Augmented Generation Using the LLM in applications_arg检索增强生成
7
CycleGAN的基本原理以及Pytorch框架实现
8
教你使用Pycharm搞定YOLOV5部署 BPU(版本: 6.2)_yolov5使用教程pycharm
9
【数据结构初阶】第四篇——双链表(实现+图解)_双链表头插法图解
10
eclipse导入其他项目运行时报404错误_eclipse运行报404
当前位置:
article
> 正文
2012-03-25 17:31 以太网中的UDP编程:udp分包问题_udp分片包 怎么排序
作者:很楠不爱3 | 2024-04-11 17:53:28
赞
踩
udp分片包 怎么排序
1.在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?
当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对
像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:
首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.
UDP属于运输层,下面我们由下至上一步一步来看:
以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.
这个1500字节被称为链路层的MTU(最大传输单元).
但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.
并不包括链路层的首部和尾部的18个字节.
所以,事实上,这个1500字节就是网络层IP数据报的长度限制.
因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.
而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.
又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节.
这个1472字节就是我们可以使用的字节数。:)
当我们发送的UDP数据大于1472的时候会怎样呢?
这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).
把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.
这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便
无法重组数据报.将导致丢弃整个UDP数据报。
因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好.
进行Internet编程时则不同,因为Internet上的路由器可能会将MTU设为不同的值.
如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机
制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.
鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.
最好将UDP的数据长度控件在548字节(576-8-20)以内.
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/406497
推荐阅读
article
华为
Atlas200DK
开发
从零开始
1.
开发
环境搭建_
atls200
sdk
...
目录前言给SD卡烧写镜像通过读卡器与制卡脚本通过烧写好的镜像直接制卡
Atlas200DK
连接Ubuntu服务器(虚拟机)...
赞
踩
article
git
submodule
拉取子
模块
最新
代码
_
git
获取子
模块
的
最新
版本...
转载请注明出处:http://a.html之前由于对
git
子
模块
操作不熟悉,碰到子
模块
更新
代码
了本地死活拉取不到
最新
代码
...
赞
踩
article
CentOS安装
docker
-
compose
...
ps:如果第三步,
docker
-
compose
拉不下来,恰好手上有已经安装好的
docker
-
compose
可以把安装后的...
赞
踩
article
组合
框
ComboBox
...
组合
框(
ComboBox
)的本质是文本框(TextBox)和列表框(ListBox)的
组合
。
组合
框的属性方法和事件与文本...
赞
踩
article
通过 Tomcat 获取 Websocket 的远程客户端 IP_从 org.
apache
.tomc...
因为
websocket
的连接只有 session,所以需要借助
tomcat
来获取远程的客户端 IP。程序如下...
赞
踩
article
windows10
bat
命令
获取
日期
时间_
bat
日期
...
系统版本win10 英文OSWindows Edition:Windows 10 ProSettings-Languag...
赞
踩
article
centos7
环境
下:DolphinScheduler
3
.1.5简介和伪
集群
模式安装部署_dolph...
centod7
环境
下:DolphinScheduler
3
.1.5伪
集群
模式部署_
dolphinscheduler
3
集群
...
赞
踩
article
阿里云
原生
架构
白皮书...
云
原生
架构
是基于云
原生
技术的一组
架构
原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接...
赞
踩
article
用
python
做
石头
剪刀
布
_
python
石头
剪刀
布
代码...
现在我们来做一个
石头
剪刀
布
。_
python
石头
剪刀
布
代码
python
石头
剪刀
布
代码 现在我们来做...
赞
踩
article
mysql
cat
sharding
_Mysql系列八:My
cat
和
Sharding
-
jdbc
的區別...
一、My
cat
和
Sharding
-
jdbc
的區別1)my
cat
是一個中間件的第三方應用,
sharding
-
jdbc
是一個...
赞
踩
article
VB 以下是
Visual
Basic
语言的
程序代码
,用于定义一个函
数
用以判断给定的
数
是否是
素
数
。_v...
使用IsPrime函
数
判断给定的
数
是否是
素
数
,如果是
素
数
,输出"%d是
素
数
",否则输出"%d不是
素
数
"。以下是Visua...
赞
踩
article
MySQL
慢
查询
优化案例...
优质博文
MySQL
慢
查询
优化案例 >优质博文:IT-B...
赞
踩
article
基于
单片机
数字
频率计
系统仿真
设计
...
*
单片机
设计
介绍, 基于
单片机
数字
频率计
系统仿真
设计
。基于
单片机
数字
频率计
系统仿真
设计
...
赞
踩
article
解决
git
/
git
hub下载速度缓慢的问题_a
python
library
for
fermi
s...
官网下载Git时,速度几乎是超不过20KB,解决方法有很多,这里介绍几个简单粗暴的方法。这里使用windows系统作为演...
赞
踩
article
pg
中
循环
批量
插入
数据
(变量i从
1
到
1
0000)_
pg
用动态表
循环
插入
...
造
数据
时
批量
插入
_
pg
用动态表
循环
插入
pg
用动态表
循环
插入
1
....
赞
踩
article
ucosIII
自学笔记
_
_
任务
创建与切换
_
0
_
注释
osstarthighrdy
汇编程序
,
说明
操作系统
...
写在前面:
任务
调度切换时OSTCBHighRdyPtr值变化;中断处理函数中OSTCBCurPtr值变化
任务
的创建过程:...
赞
踩
article
Git
Submodule
嵌套子模块_
git
submodule
update
--
remote
...
摘要:本文介绍了包含有
git
Submodule
的常用操作,包含创建
Submodule
,拉取,提交等常用开发操作. _g...
赞
踩
article
关于
ruoyi
(
若依
)
框架
的
介绍
,
若依
项目
的
入门
,
ruoyi
(
若依
)
框架
的
优缺点
_
若依
框架
...
若依
(Ruoyi)
框架
是一款基于 Spring Boot 2.5.5、Spring Cloud 2020.0、OAuth...
赞
踩
article
Git
submodule
拉取子模块...
$ git clone https://code.Xcode.com.client.gitCloning into 'v...
赞
踩
article
GIT
带着子
模块
拉取
代码
_
git
拉取
多个
module
的
代码
...
根据supper的父项目配置获取对应子项目。父
模块
仅进行
拉取
操作,
拉取
完毕后,进入子
模块
进行构建操作使用命令:#父级+子...
赞
踩
相关标签
linux
ubuntu
git
centos
docker
vb6
windows
自定义命令
bat
服务器
ds-3.1.5
云原生
架构
python
开发语言
mysql cat sharding
数学建模
算法
mysql
android
数据库
java
后端
sql