UDP与IP分片
一、引言

UDP是简单的面向数据报的运输层协议。UDP不提供可靠性:它负责把应用程序传给IP层的数据发送出去,不保证能导到目的地。
二、UDP首部

端口号表示发送进程和接受进程。由于IP层已经把IP数据报分配给了TCP和UDP,因此TCP和UDP端口号是相互独立的。
UDP长度字段指的是UDP首部和UDP数据的自己长度。
三、IP分片
由于物理网络层一般要限制每次发送数据帧的最大长度,因此当IP数据报的长度大于MTU时,就会发送IP分片。
- 分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
- 已经分片过的数据报可能会再次进行分片(可能不止一次)
- IP数据报被分片以后,只有到达目的地才进行由目的端的IP层进行组装。

IP首部的16位标识、3位标志及13位片偏移用户分片过程。
- 16位标识可以唯一确定一份IP数据报
- 标志字段用一个比特来表示“更多的片”,除了最后一片外,其他每片都把该位置为1
- 标志字段有一个比特称为“不分片”位。若为1,IP不对数据报进行分片,而是将数据报丢弃并发送一个ICMP差错报文给起始端
- 片偏移字段指的是该片偏移原始数据报开始处的位置
- 分片以后,每片的总长度值要修改为该片的长度值
- 分片以后,任何传输层的首部都只出现在第一片数据中

四、ICMP不可达差错(需要分片)
当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片标志比特,路由器会发送ICMP不可达差错给源端。
可以利用这一特性来判断到达目的端的路途中的最小MTU。

UDP与IP分片的更多相关文章
- iOS TUN之避免UDP包ip分片
iOS的NetworkExtension给应用暴露了一个虚拟网卡TUN设备,可以设置其MTU值.如果上层应用发送的IP包大于这个MTU就会被分片.(详见:http://blog.csdn.net/n5 ...
- TCP/IP具体解释--UDP数据报中的IP分片
1.UDP首部 2.UDP分片 在第二章,讲链路层是,提到过以太网.刨除数据帧帧头.最多传输的长度为1500.也就是说,假设一个ip数据报,长度大于1500,则须要分片. 分片方法: 在ip头中3位标 ...
- IP分片 与 TCP分段的区别 !!!!careful========以及udp中一个包大小究竟为多大合适 ==========三次握手四次挥手细节
首先声明:TCP分片应该称为TCP分段 TCP/IP详解--TCP的分段和IP的分片 分组可以发生在运输层和网络层,运输层中的TCP会分段,网络层中的IP会分片.IP层的分片更多的是为运输层的UDP服 ...
- IP分片详解
IP分片是网络上传输IP报文的一种技术手段.IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组.不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单 ...
- IP分片重组的分析和常见碎片攻击 v0.2
IP分片重组的分析和常见碎片攻击 v0.2http://www.nsfocus.net/index.php?act=magazine&do=view&mid=584 作者:yawl ( ...
- TCP/IP 协议难点之一—— IP分片
1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...
- 【转】IP分片和TCP分段
ZC: 由于 TCP中 MSS 的关系,TCP 不会造成 IP分片和TCP分段 ! 1.http://zhidao.baidu.com/link?url=YCnR8B-1EN4-cgauRtwa-iV ...
- tcp/ip分片
from http://blog.csdn.net/cumirror/article/details/5071234 前段时间要做一个关于网络嗅探的程序,里面要重组IP分片,TCP分片. 但做的时候忽 ...
- IP分片浅析
在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头, ...
随机推荐
- zoj1037-Gridland
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37 Gridland Time Limit: 2 Seconds Me ...
- 【UVA11613 训练指南】生产销售规划 【费用流】
题意: Acme公司生产一种X元素,给出该元素在未来M个月中每个月的单位售价.最大产量.最大销售量,以及最大储存时间(过期报废不过可以储存任意多的量).你的任务是计算出公司能够赚到的最大利润. 分析: ...
- 16进制颜色转普通RGB
做开发的会遇到很多时候UI给到的是16进制的颜色 然而很多时候我们需要把它转换成适合我们方法的RGB参数 当然通过网页转换也可以达到目的 但是我现在选择写一个分类来解决 一劳永逸~ 1.首先说下 ...
- fastDFS配置及日志查看 所遇到的问题
FastDFS的配置文件在/usr/local/webserver/fastdfs/etc目录下,其中包括 client.conf 客户端上传配置文件 storage.conf 文件存储服 ...
- pthread_mutex_init函数与pthread_mutexattr_init函数
直接上英文解释: pthread_mutex_init()如下: NAME pthread_mutex_init, pthread_mutex_destroy - initialise or dest ...
- Use formatter to format your JAVA code
In order to make the codes looks unified and make it easy to understand, it's better to use the same ...
- MP3 Lame 转换 参数 设置(转)
我们在对音频格式的转换中,打交道最多的就是MP3了.如果你能彻底玩转MP3,那么对你的音频创作和对其他音频格式的掌握会有很大的帮助.下面我们给大家介绍MP3制作软件:LAME 要制作出高音质的MP3靠 ...
- springboot+mongonDB
一.mongonDB基本介绍 什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. Mon ...
- Java SimpleDateFormat用法
? Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现,以下是Si ...
- Enum , Enum Class ?
使用Enum还是Enum Class? 根据Enum和Enum Class的特点,我们可以根据对常量类型的要求决定使用Enum还是Enum Class. 以下场景适合使用Enum: 常量类型用于内部表 ...