UDP协议

作者: lovesora | 来源:发表于2017-07-13 21:48 被阅读0次

什么是UDP协议?

User Datagram Protocal ,用户数据报协议,它跟TCP协议不同,TCP协议是基于流的,发送的数据跟IP数据报个数无关。而UDP数据则直接封装成IP数据报发送(当然,如果UDP数据过长,会导致IP数据报分片发送)。所以UDP是简单的基于IP数据报的传输,而IP数据报的传输是不保证可到达,不保证传输顺序,所以UDP不提供任何的可靠性。

首部格式

  • 「Source port」 源端口号,可选的,如果不用可全部置0.如果喜欢接收方能回复,则源端口号很重要,要不然别人也不知道回复哪个端口,我们知道,系统内核是通过端口号来映射应用程序的
  • 「Destination port」 和「 「Source port」 一样的语义,通过指定接收方的端口号来指定特定应用程序接收到此UDP数据报
  • 「Length」 指UDP数据报的长度,注意,包括「首部」 和 「数据报内容」 的总长度
  • 「Check sum」 检验和,和 「IP」 检验和一样,不同的是UDP的检验和针对首部和内容全部计算得出检验和。
    *「Data octets」 UDP数据报内容,可以为空


    UDP协议格式

IP分片

前面已经说过,UDP协议是基于IP协议的简单封装,而IP协议对应的链路层有MTU的概念 ,即物理链路传输数据时有最大传输单元限制,这样当IP数据包长送的时候,会将MTU和当前的数据包长度进行比较,如果必要,则要进行IP分片传输。我们知道,以太网链路层的MTU是1500,则每次传输的最大数据不能超过1500字节(byte),如果超过了就要进行分片传输。

IP分片

上图所描述的示例中,如果我们发送一个超过了MTU长度的UDP数据,比如1473字节,加上IP首部20字节和UDP首部8个字节,即1501字节,它比以太网链路层的MTU:1500多1个字节,所以要进行IP分片后传输。分片的第一个分组包含了UDP首部(8个字节)和UDP数据(1472)个字节。第二个分组只包含了UDP数据的最后一个字节内容。我们可以了解到,对于分片发送的UDP数据,只有第一个分组拥有UDP首部的信息,如果所有的分组中第一片分组丢失的话,则所有分组都要丢弃,因我们知道UDP首部中包含了重要的信息,如「Destination port」,如果不知道目的地端口号,则系统不知道将该数据交给哪个应用程序去处理。所以,利用UDP传输的应用程序,应该控制数据报的升序,尽量避免分片进行。

关于接收端在接收到一个IP数据报的分片数据时,如果进行重组,即把所有分片数据再次按顺序组合起来呢,这就要利用IP首部中一些字段标识,我们一起来复习下前面文章中的IP协议:

  • Identification(唯一标识): 每一个IP数据报都要有唯一的标识字段,这样在分片和重组时不至于混淆两个完全不同的分片数据。就是说,一个IP数据报分片后,每个分片的IP首部中,该字段相同,这样接收端就知道这些分片来自一个数据报
  • Flages(标志): 这个字段也是为IP数据报的分片和重组作用的。用于标识收到的分片后续是否还有分片待接收。1代表后续还有分处,0代表分片结束,所以最后一个分片该值为0
  • Fragment offset(分片偏移):指当前分片数据在整体IP数据报中所处的偏移量,以8字节(64比特)为单位。由此可见,「identification」,「Flages」,「Fragment offset」这三个字段是为IP数据报分片和重组功能作用的字段

相关文章

  • 计算机网络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/ovughxtx.html