传输层--UDP协议首部格式以及每个的用途

UDP首部格式

在网络通信中,传输层将应用层的数据拿到然后,添加传输层的头部,再给网络层,那么传输层是为了保证两台主机之间的通信,就在头部中要添加必要的信息,我们就来分析一下UDP的头部信息。
首先我们通过一张图来了解:
传输层--UDP协议首部格式以及每个的用途
首先我们先介绍一下,头部分部。
UDP是以32个比特位为一组,就是四个字节为一次,我仍为计算机提高效率就是接收或者发送的数据吞吐量刚好和计算接收的相对,是最高效的发送一接收的方式。

头部总共占有8个字节,后面跟着就是从应用层拿下来的数据。因为UDP是不可靠的,所以UDP就没有很复杂的头部,这样就减少了开销,也提高了效率,也因此UDP的头部就是这么简单。

现在来说说每个的用途

  • 16为源端口号
    端口号,大家应该要了解,端口好是传输层中比较重要的概念。我们来结合UDP头部来解释一下。

    端口号:在传输层中,是负责知道消息发送到某台主机上的某个进程重要的标记,知道端口号,才知道发送给哪个进程,一个进程可以绑定多个端口号,但是一个端口号只能有一个进程(一般情况,fork),端口总共65536个端口号,为什么是这么多呢?还是因为UDP或者TCP头部中给端口号的字节数为两个字节,那么两个字节表示的最大范围就是2的16次方65536。在这些端口号中,其中0 ~ 1023是知名端口号,是专门为http、ftp、ssh等知名的应用层协议使用的端口号。1024 ~ 65535是自己可以使用的。但是严格的来说,端口号可以随意用,但是定义知名端口号主要是为了大家同一的标准,可以更为方便。
    列举一些常见的知名协议服务器使用的端口号:
    ssh 22
    ftp 21
    telnet 23
    http 80
    https 443


源端口号就是发送方主机上的端口号,为什么要写上自己的端口号呢?只写个对方端口号也好啊!其实是在通信过程中,往往是双方都要发送消息,所以要写上自己的端口号,让对方能知道自己的发送的进程。
  • 16位目的端口号
    目的端口号,是标识着要发送给对方的那个进程。没什么可说的
  • 16位UDP长度
    这个比较重要,UDP的长度为分配了16个比特位,那么这样说,每次发送的最大长度为65536个字节,既64K,而这64K中包含了头部协议信息,在今天互联网飞速发展中,64K对我们来说是非常小的,那么我们在发送数据的时候,要是发送的数据超过64K,就得手动进行分包,进行发送。
  • 16位UDP校验和
    在数据的发送过程中有可能会收到电磁等外界因素适原有的信号发生变化,所以采用了校验和的方式来进行数据的校验,发生丢包不可怕,可怕的是传过来的是错误信息,这样要是在银行系统中,那么就很恐怖了。在16为校验中采用的CRC校验,想了解,自行百度

UDP特点

无连接
不可靠
面向数据报
缓冲区
UDP没有正真意义上的发送缓冲区,因为是不可靠,所以采用的是直接将应用层的数据加上UDP头部进行转发。
有接收缓冲区,UDP是无连接,不可靠,所以接收过去可能是无序的,当接收缓冲区满了后就会丢掉新发的数据。

UDP用途

既然有这么多的缺点,那么为什么要4用UDP,UDP不可靠,无连接,主要是因为头部协议简单,那么简单就有会带来一个好处,就是发送速率快,时效性好,所以可以用作,视频、音乐、图片,等一些不需要可靠性很强,但实时性强的场景。

基于UDP实现的应用层协议

我们了解一下,基于UDP实现的应用层协议
DHCP协议:是动态主机分配IP配置协议
DNS协议:域名解析协议
TFTP协议:简单文本传输协议