一、引言

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

二、UDP首部

端口号表示发送进程和接受进程。由于IP层已经把IP数据报分配给了TCP和UDP,因此TCP和UDP端口号是相互独立的。
UDP长度字段指的是UDP首部和UDP数据的自己长度。

三、IP分片

由于物理网络层一般要限制每次发送数据帧的最大长度,因此当IP数据报的长度大于MTU时,就会发送IP分片。

  1. 分片可以发生在原始发送端主机上,也可以发生在中间路由器上。
  2. 已经分片过的数据报可能会再次进行分片(可能不止一次)
  3. IP数据报被分片以后,只有到达目的地才进行由目的端的IP层进行组装。

IP首部的16位标识、3位标志及13位片偏移用户分片过程。

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

四、ICMP不可达差错(需要分片)

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

UDP与IP分片的更多相关文章

  1. iOS TUN之避免UDP包ip分片

    iOS的NetworkExtension给应用暴露了一个虚拟网卡TUN设备,可以设置其MTU值.如果上层应用发送的IP包大于这个MTU就会被分片.(详见:http://blog.csdn.net/n5 ...

  2. TCP/IP具体解释--UDP数据报中的IP分片

    1.UDP首部 2.UDP分片 在第二章,讲链路层是,提到过以太网.刨除数据帧帧头.最多传输的长度为1500.也就是说,假设一个ip数据报,长度大于1500,则须要分片. 分片方法: 在ip头中3位标 ...

  3. IP分片 与 TCP分段的区别 !!!!careful========以及udp中一个包大小究竟为多大合适 ==========三次握手四次挥手细节

    首先声明:TCP分片应该称为TCP分段 TCP/IP详解--TCP的分段和IP的分片 分组可以发生在运输层和网络层,运输层中的TCP会分段,网络层中的IP会分片.IP层的分片更多的是为运输层的UDP服 ...

  4. IP分片详解

    IP分片是网络上传输IP报文的一种技术手段.IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组.不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单 ...

  5. IP分片重组的分析和常见碎片攻击 v0.2

    IP分片重组的分析和常见碎片攻击 v0.2http://www.nsfocus.net/index.php?act=magazine&do=view&mid=584 作者:yawl ( ...

  6. TCP/IP 协议难点之一—— IP分片

    1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...

  7. 【转】IP分片和TCP分段

    ZC: 由于 TCP中 MSS 的关系,TCP 不会造成 IP分片和TCP分段 ! 1.http://zhidao.baidu.com/link?url=YCnR8B-1EN4-cgauRtwa-iV ...

  8. tcp/ip分片

    from http://blog.csdn.net/cumirror/article/details/5071234 前段时间要做一个关于网络嗅探的程序,里面要重组IP分片,TCP分片. 但做的时候忽 ...

  9. IP分片浅析

    在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头, ...

随机推荐

  1. 【bzoj3667】Rabin-Miller算法

    3667: Rabin-Miller算法 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1200  Solved: 363[Submit][Statu ...

  2. JavaScript中的一些小技巧

    js 数字操作:1.1 取整:取整有很多方法如: parseInt(a,10); Math.floor(a); a>>0; ~~a; a|0; 前面2种是经常用到的,后面3种算是比较偏的, ...

  3. RGB直方图与UV直方图

    ------------------------------------------------------------------------------------ from skimage im ...

  4. 日志管理,springboot

    1.市面上的日志框架:JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.... 2. 日志门面: SLF4J:日志实现:Logback:SpringBo ...

  5. Linux Bash脚本编程语言中的美学与哲学

    我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更 ...

  6. [Training Video - 4] [Groovy] Object equality and variable equality check

    def x=2 def y=3 if(x == y){ log.info "equal" }else{ log.info "not equal" // prin ...

  7. [Training Video - 4] [Groovy] Function in detail

    Employee.log=log Employee e1 = new Employee() Employee e2 = new Employee() e1.name = "A" e ...

  8. Spring.net页面属性注入

    .条件spring.web程序集 1.1 system.web配置 <httpHandlers> <add verb="*" path="*.aspx& ...

  9. Animator 设置动画效果

    1. 调节预设对象大小适中 2. 设置骨骼,修改关节 3. 拖入预设动作效果对象中 4. 将预设对象拉入场景中,并新建AnimatorController 5. 新建动作或BlendTree,设置参数 ...

  10. Promises讲解

    原生 Promises 是在 ES2015 对 JavaScript 做出最大的改变.它的出现消除了采用 callback 机制的很多潜在问题,并允许我们采用近乎同步的逻辑去写异步代码. 可以说 pr ...