1.分片
应用程序只关心IP数据报的长度,如果它超过MTU值,那么就要对数据包进行分片。

2.UDP首部字段图:

(16位源端口号+16位目端口号+16位UDP长度+16位UDP校验和+数据)

3.UDP校验和
UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。

(UDP伪首部+UDP首部+数据+填充字节)
udp打印出值为0,则发送端没有计算校验和;1位已计算。
不要完全相信数据链路(如以太网,令牌环等)的 C R C检验。应该始终打开端到端的检验和功能。

4.IP数据报及分组的关系:
ip数据报是指iP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的 I P数据报,也可以是I P数据报的一个分片。

(UDP分片举例)

5.ICMP不可达差错(需要分片)
MTU发现机制:当设备收到一份需要分片的数据报,但又在IP首部设置了不分片(DF)标志时,如果某个程序需要判断到达目的端的路途中最小MTU多少。

(需要分片但又设置不分片标志比特时的ICMP不可达差错报文格式)

6.借助traceroute来判断对端MTU值
如第5点所属,当DF标志位1,但数据报确实需要分片时,需要返回一个icmp MTU值为0的不可到打包。那么借助tracroute向目的地址发送不同的MTU值,可判断对端真实的MTU值。

(MTU符合的时候,将到达下一跳)

7.ICMP源站抑制差错
当一个系统(路由器或主机)接受数据报的速度比其处理数据的速度快时,系统可能会发送icmp源站抑制差错报文。使用UDP很容易产生这样的ICMP差错。

(ICMP源站抑制差错报文格式)

(来自路由器s u n 的ICMP源站抑制)

8.(现网)H3C默认MTU值为1500。当数据大小为1500-20(IP头部)=1480时,则需要分片。每个分片为1500,数据大小为1480字节。

1.其实一个标准的以太网数据帧大小是:1518,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 - 14 - 4 = 1500

2.在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。我们从下到上分析一下:
 在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,46+18=64是以太网帧的最短帧长,1500+18=1518是最大帧长。也就是说数据帧的内容最大为1500,即MTU(Maximum Transmission Unit)为1500;
  (可是为什么我用wireshark抓下的包看到的帧头部是14字节,木有校验位4位?!,最短帧长是62?!)
 在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480;
 在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472;
 所以,在应用层,你的Data最大长度为1472。
 (当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃)。
 从上面的分析来看,在普通的局域网环境下,UDP的数据最大为1472字节最好(避免分片重组)

第11章 UDP:用户数据报协-----读书笔记的更多相关文章

  1. UDP用户数据报协议和IP分组

    UDP总体的封装格式例如以下: 以下是8字节UDP首部: 当IP层依据协议字段把UDP报文向上传送到UDP模块后,UDP模块再依据port号将数据发送到对应的进程中,以此实现进程到进程间的通信. 16 ...

  2. 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  3. 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识

    第16章      UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...

  4. 第十章 用户数据报协议和IP分片

    用户数据报协议和IP分片 UDP是一种保留消息边界的简单的面向数据报的传输层协议.它仅提供差错检测.只是检测,而不是纠正,它只是把应用程序传给IP层的数据发送出去,但是并不会保证数据能够完好无损的到达 ...

  5. 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  6. 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  7. 《Effective C++》第3章 资源管理(2)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  8. 《Effective C++》第3章 资源管理(1)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  9. 《Effective C++》第1章 让自己习惯C++-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

随机推荐

  1. ELK和EFK的区别

    ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...

  2. 《Java基础知识》Java正则表达式

    正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简单的正则表达式,例如  ...

  3. 3、看源码MVC中的Controllr的Json方法

    无论ViewResult还是JsonResult都继承ActionResult,ActionResult里只有一个方法ExecuteResult 1.Controllr的Json方法 实际上是new ...

  4. 闲鱼hu超赞,有赞必回,24小时在线!咸鱼互赞超赞留言评

    有没有在闲鱼上卖东西没有浏览量的人! 我们来一起互赞互相提高彼此宝贝的浏览量,从而更快的促进交易! 我打算建个群,我们可以一起交流下哈! 需要的进入QQ群   : 530980712

  5. 「STM32 」IIC通讯原理及其实验

    I2C两线式串行总线通讯协议,它是由飞利浦开发的,主要用于连接微控制器及其外围设备之间,它是由数据线SDA和信号线SCL构成的,可发送和接收数据即在MUC和I2C设备之间,I2C和I2C之间进行全双工 ...

  6. Android 开机充电图标和充电动画

    首先驱动需要先获取到2个power supply kernel\msm-3.18\drivers\usb\phy\phy-msm-usb.c motg->usb_psy.name = " ...

  7. inux 内存监控分析

    一.free 查看系统总的内存情况 第一部分Mem行: total 内存总数: 3768M used 已经使用的内存数: 3136M free 空闲的内存数: 632M shared 当前已经废弃不用 ...

  8. 活久见: maven pom 竟然都会崩溃!

    问题是: 我的应用的pom 并没有任何报错,但是代码报错,而且编译不通过. 如下,我本地项目,从 spring-cloud-alibaba-dependencies 0.2.1.RELEASE 升级到 ...

  9. Java方法之重载

    Java方法之重载 本篇探究Java中的方法重载.那么,什么是重载呢?先上一串代码: package com.my.pac06; /** * @author Summerday * @date 201 ...

  10. `http-equiv` meta 标签

    来看以下有趣的代码, <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv=& ...