第8章 传输层(2)_UDP协议
2. 用户数据报协议(UDP)
2.1 UDP的特点
(1)UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
(2)UDP使用了尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表,通信的两端不用保持连接,因此节省系统资源。
(3)UDP是面向报文的。UDP对应用层下来的报文即既不合并,也不拆分,而是保留这些报文的边界。也就是说应用层交给UDP多长的报文,UDP就原样发送,即一次发送一个报文。(这要求应用程序必须选择合适大小的报文,以免降低IP层的效率!)
(4)UDP没有拥塞控制:如果网络出现拥塞不会使主机的发送速率降低。这对某些实时应用很重要(如IP电话、实时视频会议等),它允许在网络发生拥塞时丢失一些数据,但不允许数据有太大的时延,UDP正好适合这种要求。
(5)UDP支持一对一、一对多、多对一和多对多的交互通信。
(6)UDP的首部开销小,只有8字节,比TCP的20字节的首部要短。
2.2 UDP的首部格式
(1)抓包分析(以域名解析数据包为例)
①源端口:在需要对方回信时选用。不需要时可用全0。
②目的端口:在终点交付报文时必须要使用到
③长度:UDP用户数据据的长度(数据字段和首部字段),最小值是8(仅有首部时)
④检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。
(2)UDP首部和伪首部
①UDP用户数据报有两个字段:数据字段和首部字段。其中的首部很简单,只有8个字节(源端口、目标端口、长度和校验和)
②“伪首部”:并不是UDP数据报真正的首部,只是在计算检验和时,临时添加在UDP数据报前面,得到一个临时的UDP用户数据报,检验和就是按照这个临时的UDP数据报来计算的。这个伪首部既不向下传递也不向上递交,而仅仅是为了计算检验和之用。
(3)UDP检验和的计算
①UDP的检验和是把首部和数据部分一起都检验(有别于IP数据报检验和只检验IP数据报的首部)。
②发送方首先把全零放入检验和字段,再把伪首部以及UDP用户数据报看成是由许多16位的字(如上图)一起串接起来。如果数据部分不是偶数个字节,则填入一个全零字节(但不发送)。然后按二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段。然后发送这个UDP数据报。
③接收方把收到的UDP数据报连同伪首部(以及可能的填充全零字节)一起按二进制反码求这些16位字的和。当无差错时其结果应全为1;否则就表明有差错出现,接收方应丢弃这个UDP数据报。
第8章 传输层(2)_UDP协议的更多相关文章
- 第8章 传输层(1)_TCP/UDP协议的应用场景
1. 传输层的两个协议 1.1 TCP和UDP协议的应用场景 (1)TCP协议:如果要传输的内容比较多,需要将发送的内容分成多个数据包发送.这就要求在传输层用TCP协议,在发送方和接收方建立连接,实现 ...
- 第6章 传输层(详解TCP的三次握手与四次挥手)
第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...
- Linux内核--网络栈实现分析(五)--传输层之UDP协议(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512 更多请看专栏, ...
- 传输层:TCP 协议
传输层:TCP 协议 一.概述 TCP 和 UDP 处在同一层——运输层,但是它们有很多的不同.TCP 是 TCP/IP 系列协议中最复杂的部分,它具有以下特点: (1) TCP 提供 可靠的 数据传 ...
- 【知识强化】第五章 传输层 5.3 TCP协议
这节课我们来学习一下TCP协议的特点以及TCP报文段的格式. 首先呢我们来看一下TCP有哪些特点呢.之前我们说过TCP它是一个比较可靠的面向连接的协议,所以最主要的特点它是可以面向连接的一种传输层协议 ...
- 第8章 传输层(3)_TCP协议
3. 传输控制协议(TCP) 3.1 TCP协议的主要特点 (1)TCP是面向连接的传输层协议.即使用TCP协议之前必须先建立TCP连接.在传送数据完毕之后,必须释放己经建立的TCP连接. (2)每一 ...
- 数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点
上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Contr ...
- 数据通讯与网络 第五版第24章 传输层协议-UDP协议部分要点
24.1 介绍 本章节主要集中于传输层协议的解读,图24.1展示TCP.UDP.SCTP在TCP\IP协议栈的位置 24.1.1 服务(Service) 每个协议都提供不同的服务,所以应该合理正确的使 ...
- 【知识强化】第五章 传输层 5.2 UDP协议
这节课我们来学习一下UDP协议. 那在上节课呢我们学了这样一个打油诗. 啊,就是传输层有两个好兄弟,大哥TCP和二弟UDP.大哥很靠谱,二弟不靠谱.那只要说到UDP协议我们就要知道它的一个重要的特点, ...
- Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7549340 更多请查看专栏,地 ...
随机推荐
- Ubuntu安装时怎样分区
1./swap交换分区,一般为你机器内存的两倍.少于这个容量.系统无法进入休眠. 实质是硬盘上的交换空间而非分区.所以没有格式,默认休眠将数据储存于此 能够取消(如不用swap必须再设定方可休眠)-- ...
- S老师 背包系统 装备系统 锻造系统 学习
Inventory using UnityEngine; using System.Collections; using System.Collections.Generic; using Syste ...
- C# 获取机器码
using System.Runtime.InteropServices; using System.Management; using System; public class HardwareIn ...
- Java基础语法 第3节 常用软件安装-Webstorm
Webstorm是专用于web开发的号称最好的的编辑器,使用起来很方便. 一.安装 1.去官网下载正版安装包,官网地址:http://www.jetbrains.com/webstorm/ 2.开始安 ...
- vue-cli 创建的项目,在 nginx 上配置启用浏览器缓存
nginx 配置,关键参数: server { listen 80; server_name xxx.xxx.xxx.xxx; charset utf-8; root /home/xxx/dist/; ...
- hbase java 基本例子
一下代码实用 0.99.0 以后的版本. package hadoop; import java.io.IOException; import java.util.ArrayList; import ...
- thinkphp5 查询的数据是对象时,获取原始数据方法
获取原始数据 如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用: $user = User::get(1); // 通过获取器获取字段 echo $user->status; / ...
- java-jdbc数据库连接
web.xml:(web.xml) <!-- 加载spring容器 --> <context-param> <param-name>contextConfigLoc ...
- 如何重写hashCode()和equals()方法
hashCode()和equals()方法可以说是Java完全面向对象的一大特色.它为我们的编程提供便利的同时也带来了很多危险.这篇文章我们就讨论一下如何正解理解和使用这2个方法. 如何重写equal ...
- mac里安装Mycrypt扩展
https://jingyan.baidu.com/article/e3c78d644cf1ed3c4c85f5a8.html 先用homebrew安装mycrpt 再下载php5.6版本源码 然后进 ...