UDP

  1. 用户数据报协议UDP只在IP的数据报服务之上增加了很少的一个功能,就是复用,分用,差错检测功能。UDP的主要特点是:

    1. UDP是无连接的,即在发送数据报之前不需要建立连接(当然发送数据结束的时候也不会有连接释放),因此减少了开销和发送数据之前的时延。

    2. UDP是尽自己最大努力交付,且并不提供可靠服务,因此主机并不需要维持复杂的链接状态表。

    3. UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部之后就可以交付给IP层。UDP对于应用层交付下来的报文,既不拆分,也不合并,只是只是保留这些报文的边界。意思就是,不管上层传给UDP多长的报文,UDP照样发送,至于是否进行切片处理等等,那是IP层的事情。

    4. UDP没有拥塞控制,因此网络上出现拥塞不会使得源主机的发送速率降低。这种就特别的适合实时场景的使用。例如视频通话,语音通话等等。

    5. UDP支持一对一,一对多,多对一,多对多的交互通信。

    6. UDP的首部开销小,相比TCP的20字节,只有8字节。

  2. UDP首部的格式:

    1. 源端口(两个字节):源端口号。不需要的时候用全0
    2. 目的端口(两个字节):目的端口号。
    3. 长度(两个字节):UDP用户数据报的长度,其最小值为8(仅含首部)。
    4. 检验和(2字节):检测UDP用户数据包在传输中是否出错。有错就丢弃。
  3. 当运输层从IP层接收到UDP数据报的时候,就根据首部中的目的端口,把UDP数据报通过响应的端口,最终交付给相应的用用进程处理。如图

  4. 如果接收方UDP接收到的目的端口号不明确(即不存在相应的目的端口号),就丢弃这个UDP报文,并由网际控制协议(ICMP)发送端口不可达差错报文给发送方。

  5. 请注意,虽然在UDP之间的通信需要使用到端口号,但由于UDP通信是无连接的,因此并不需要使用socket(TCP之间就要必须使用socket建立连接)。

  6. UDP用户数据报首部中校验和的计算方法有些特殊。在计算校验和的时候,要在UDP用户数据报之前加上12字节的伪首部(伪首部的第三个字段全是0,第四个字段是IP首部中的协议字段,以前讲过,对于UDP,就是17;第五个字段是UDP用户数据包的长度。因此检验和,既检查了UDP用户数据报的源端口号和目的端口号以及检查了UDP用户数据包的数据部分,又检查了IP数据报的源IP地址和目的IP地址)。所谓的伪长度是因为者追踪伪长度并不是UDP用户数据真正的首部。只是在校验和的时候,临时加到UDP数据报的前面,得到一个临时的UDP用户数据报,检验和就是根据这个UDP临时数据报来计算的,伪长度既不向下传送也不向上递交,而仅仅是为了计算校验和。,至于怎么校验呢?其实UDP计算校验和的方法和计算IP数据报的首部校验和的方法类似。但不同的是:IP数据报的检验和只校验IP数据报的首部,但是UDP检验和是把首部和数据部分一起校验。在发送方,首先把全0放到校验和字段中。再把伪首部UDP用户数据报看成是由许多16位的字符拼接起来的。若UDP用户数据报的数据部分不是偶数字节,则要填入一个全零字节(但此字节不发送),然后按照二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段后,就发送这样的UDP用户数据报。在接收方,把收到的UDP用户数据报连同伪首部一起,按二进制反码求出16位字的和,当无差错时,其结果为1,否则就是出现差错,接收方就应该丢弃这个UDP报文,并把错误信息通过ICMP(网际控制协议)差错报告给上层。

  7. 这种简单的差错检测方法能力并不强,但它的好处是简单,处理起来比较快。

UDP用户数据报的更多相关文章

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

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

  2. udp用户数据报协议

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层 ...

  3. 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议

    11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...

  4. TCP/IP详解学习笔记(8)-- UDP:用户数据报协议

    1.UDP概述 UDP是一种无连接的, 即发送数据前不需要建立连接,因此减小的开销和发送数据的延迟. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表. UDP是面向报文 ...

  5. 运输层2——用户数据报协议UDP

    目录 1. UDP概述 2. UDP首部格式 3. UDP首部检验和计算方法 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户数据报协议U ...

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

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

  7. 《TCP/IP具体解释卷2:实现》笔记--UDP:用户数据报协议

    用户数据报协议.即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作仅仅产生一个UDP数据报,从而发送 一个IP数据报. 进程通过创建一个Internet域内的SOCK_DGRAM类型的插口 ...

  8. UDP:用户数据报协议

    UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报.这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数 ...

  9. TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)

    UDP是一个简单的面向数据报的运输层协议. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地. UDP首部的个字段如下图所示

随机推荐

  1. mybatis学习日志二

    一.动态sql语句 if语句 if+where语句 if+set语句 choose(when,otherwise)语句 trim语句 sql片段 foreach语句 总结 bean部分的User类代码 ...

  2. 【转】分布式之redis复习精讲

    转自:https://www.cnblogs.com/rjzheng/p/9096228.html 引言 为什么写这篇文章? 博主的<分布式之消息队列复习精讲>得到了大家的好评,内心诚惶诚 ...

  3. VMware中安装CentOS Linux release 7.4.1708 (Core)

    本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:Ce ...

  4. Java Web基础 --- Servlet 综述(理论篇)

    摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...

  5. JAVA中的clone方法剖析

    原文出自:http://blog.csdn.net/shootyou/article/details/3945221 java中也有这么一个概念,它可以让我们很方便的"制造"出一个 ...

  6. MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...

  7. Linkerd 2.10(Step by Step)—3. 自动轮换控制平面 TLS &Webhook TLS 凭证

    Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...

  8. java 线程基础篇,看这一篇就够了。

    前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...

  9. three+pixi 将二维和三维结合

    PIXI+THREE 使用 PIXI 和 THREE 将三维和二维渲染在同一个 canvas 下面 效果 思路 初始化 PIXI 的 Application, 作为 pixi 最重要的变量 const ...

  10. L2TP协议简介

    传送门:L2TP代码实现 1. L2TP 概述 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是 VPDN(Virtual Private Dial-up Networ ...