UDP协议

作者: wayyyy | 来源:发表于2017-10-11 20:22 被阅读0次

UDP协议是一个简单的面向数据报的运输层协议。进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
这与面向字节流协议的TCP不同,应用层产生的全体数据与真正发送的单个IP数据报可能没什么关系。

特点
  • UDP是无连接的
    不需要建立连接,也不需要在最后释放连接,因此减少了开销和发送数据之前的时延。

  • UDP使用尽最大努力交付

  • UDP是面向报文
    进程的每一个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这个与面向字节流的协议不同,如TCP, 应用程序产生的全体数据与真正发送的单个IP数据报没有什么联系。

  • UDP没有拥塞控制
    因此网络出现拥塞不会使源主机的发送速率降低。这对某些实时应用很重要。(例如IP电话,实时视频会议)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据。

  • UDP支持一对一,一对多,多对一和多对多的交互通信
    而TCP因为建立连接,只能支持1对1,所以TCP不提供广播或多播服务

  • UDP首部开销很小
    只有8字节,比TCP的20字节的首部要短。

UDP报文格式
UDP报文格式.png
  • 源端口
    源端口号,标记发送进程。

  • 目的端口
    目的端口号,标记接收进程。

  • 长度
    UDP报文长度(首部+数据),其最小值是8(仅含首部)。UDP首部长度固定为8,所以减去8,则得到数据部分的起始地址。

  • 检验和
    包括UDP首部和数据部分,IP首部的检验和只覆盖IP的首部。
    同时UDP和TCP的检验和都会覆盖首部和数据,但UDP检验和是可选的,TCP检验和是必需的。
    其次,TCP和UDP的检验和都包括12字节的伪首部。

    检验和.png
IP分片

IP层要发送一份数据报时,要查询接口的MTU,并将IP数据报长度与其比较,如果需要则要进行分片。分片可以发生在原始发送端主机上面,也可以发生在中间路由器上。

当IP数据报被分片后,每一片都成为一个独立的分组,具有自己的IP首部,任何运输层首部只会出现在第1片数据报分片中。并在选择路由时与其他分组独立。当数据报的这些片到达目的端时,可能会发生失序,但是在IP首部中有足够多的信息让接收端能正确组装这些数据报片。

尽管IP分片过程是透明的,但即使只丢失一片数据也要重传整个数据报,因为IP层没有超时重传机制。由更高层来负责超时和重传(TCP 有超时和重传机制,但UDP没有)。当来自TCP报文段的某一片丢失了后,TCP超时后会重发整个TCP报文段,该报文段对应于一份IP数据报,没有办法只重传数据报中的一个数据报片。

以太网上,数据帧的最大长度是1500字节,其中1472字节给数据(1500 - IP首部为20字节 - UDP首部为8字节)。

IP报文.png

现在假定我们发送一个数据内容为1473长度的报文,则会发生IP分片。

IP分片.png
ICMP不可达差错

发生ICMP不可达差错的一种情况就是:当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特。
如果某个程序需要判断到达目的端的路途中最小MTU是多少(路径MTU发现机制)。那么这个差错就可以被程序利用。

这种情况下的ICMP不可达差错报文格式如图所示:

相关文章

  • 计算机网络02 - 传输层

    目录 TCP协议和UDP协议TCP首部TCP连接管理UDP首部 1. TCP协议和UDP协议 TCP协议:面向连接...

  • Linux下Socket编程(六)——udp

    简介 udp协议 udp通信流程 示例 udp协议 中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它...

  • UDP协议详解

    相比于TCP协议(传输控制协议)来说,UDP协议(用户数据报协议)要简单很多。 UDP协议的首部格式 UDP协议的...

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • 网络编程---获取ip地址 使用UDP协议发送与接收数据

    获取ip地址 UDP协议发送端 UDP协议接收端

  • 【Java】【网络编程】UDP协议

    UDP协议 概述:UDP协议是面向无连接协议,数据不安全。 DatagramSocket

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • TCP和UDP

    TCP协议为TCP/IP协议;UDP为UDP/IP协议。TCP和UDP都是对应网络七层协议上的传输层。IP属于网络...

  • 第九篇 异常处理和并发编程1

    一、异常处理 二、基于udp协议的套接字通讯 三、udp协议不会粘包 Tcp和udp的区别Tcp协议是可靠的协议。...

  • UDP协议

    UDP协议在IP协议上增加了复用、分用和差错检测功能。UDP的特点: UDP报文格式 UDP协议分为首部字段和数据...

网友评论

      本文标题:UDP协议

      本文链接:https://www.haomeiwen.com/subject/szliyxtx.html