第11章 UDP:用户数据报协-----读书笔记
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:用户数据报协-----读书笔记的更多相关文章
- UDP用户数据报协议和IP分组
UDP总体的封装格式例如以下: 以下是8字节UDP首部: 当IP层依据协议字段把UDP报文向上传送到UDP模块后,UDP模块再依据port号将数据发送到对应的进程中,以此实现进程到进程间的通信. 16 ...
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- 第十章 用户数据报协议和IP分片
用户数据报协议和IP分片 UDP是一种保留消息边界的简单的面向数据报的传输层协议.它仅提供差错检测.只是检测,而不是纠正,它只是把应用程序传给IP层的数据发送出去,但是并不会保证数据能够完好无损的到达 ...
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《Effective C++》第3章 资源管理(2)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- 《Effective C++》第3章 资源管理(1)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- 《Effective C++》第1章 让自己习惯C++-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
随机推荐
- 【Jackson】使用学习
Jackson学习 文档:http://tutorials.jenkov.com/java-json/index.html https://github.com/FasterXML/jackson/w ...
- CentOS7安装部署squid服务(透明代理+反向代理)
一.squid服务介绍 Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的 ...
- ELK和EFK的区别
ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...
- tomcat session共享
1.版本 redis3.2 nginx tomcat8.5 2.下载jar包 tomcat-cluster-redis-session-manager 解压后大家可以看看 readMe.tx ...
- 遇见一只黑猫,她说Python是个怪物
导读: Python猫是一只喵星来客,它爱地球的一切,特别爱优雅而无所不能的 Python.我是它的人类朋友豌豆花下猫,被授权润色与发表它的文章.如果你是第一次看到这个系列文章,那我强烈建议,请先看看 ...
- Nginx安装(我觉得我这篇可能是全网最清晰的一篇安装步骤了)
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/46aadb8f-5 ...
- Cesium案例解析(二)——ImageryLayers影像图层
目录 1. 概述 2. 实例 2.1. ImageryLayers.html 2.2. ImageryLayers.js 2.2.1. 代码 2.2.2. 解析 3. 结果 1. 概述 Cesium支 ...
- C# MySql Transaction Async
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- [20191218]降序索引疑问4.txt
[20191218]降序索引疑问4.txt --//前几天优化一个项目,我发现许多表里面有有隐含字段,一般开发很少建立函数索引.我自己检查发现里面存在大量的降序索引.--//我感觉有点奇怪,为什么开发 ...
- CentOS 7上的进程管理
一些杂乱的基础概念 程序是一种静态的文件,躺在磁盘上.而进程则是将程序运行起来放置于内存中.因此进程就是运行中的程序,是程序运行起来的一个实例.同一个程序可以运行为多个进程/实例. 进程之间有父子关系 ...