考研倒计时83天——UDP协议

Posted 软院网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考研倒计时83天——UDP协议相关的知识,希望对你有一定的参考价值。


我们已经讲解了物理层、链路层和网络层。链路层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层,只有一个IP协议。进入到传输层(transport layer),协议的种类又多起来(比如TCP、UDP、SCTP等)。这就好像下面的大树,根部(链路)分叉很多,然后统一到一个树干上(网络层),到了树冠(传输层)部分又开始开始分叉,而每个树枝上长出更多的树叶(应用层)。

【考研】倒计时83天——UDP协议

网络分层的“艺术”观点

传输层最重要的协议为TCP协议和UDP协议。这两者走了两个极端,TCP协议复杂,但传输可靠UDP协议简单,但传输不可靠。其他的各个传输层协议在某种程度上都是这两个协议的折中。我们先来看传输层协议中比较简单的UDP协议。我们将参考许多之前文章的内容。


UDP协议简介



UDP(User Datagram Protocol)传输与IP传输非常类似。你可以将UDP协议看作IP协议暴露在传输层的一个接口。UDP协议同样以数据包(datagram)的方式传输,它的传输方式也是"Best Effort"的,所以UDP协议也是不可靠(unreliable)。那么,我们为什么不直接使用IP协议而要额外增加一个UDP协议呢? 

【考研】倒计时83天——UDP协议

UDP:依然不是那么“可靠”

尽管UDP协议非常简单,但它的产生晚于更加复杂的TCP协议。早期的网络开发者开发出的IP协议和TCP协议分别位于网络层和传输层,所有的通信都要先经过TCP封装,再经过IP封装(应用层->TCP->IP)。开发者将TCP/IP视为相互合作的套装。

但很快,网络开发者发现,IP协议的功能和TCP协议的功能是相互独立的。对于一些简单的通信,我们只需要“Best Effort”式的IP传输就可以了,而不需要TCP协议复杂的建立连接的方式(特别是在早期网络环境中,如果过多的建立TCP连接,会造成很大的网络负担,而UDP协议可以相对快速的处理这些简单通信)。UDP协议随之被开发出来,作为IP协议在传输层的"傀儡"

这样,网络通信可以通过应用层->UDP->IP的封装方式,绕过TCP协议。由于UDP协议本身异常简单,实际上只为IP传输起到了桥梁的作用。我们将在TCP协议的讲解中看到更多TCP协议和UDP协议的对比。


【考研】倒计时83天——UDP协议

IP和他的傀儡UDP




UDP协议头部




来自wikipedia

上面的source portdestination port分别为UDP包的出发端口和目的地端口Length为整个UDP包的长度。

checksum的算法与相类似。不同的是,UDP的checksum所校验的序列包括了整个UDP数据包,以及封装的IP头部的一些信息(主要为出发地IP和目的地IP)。这样,checksum就可以校验IP:端口的正确性了。在IPv4中,checksum可以为0,意味着不使用checksum。IPv6要求必须进行checksum校验。




端口与socket



端口(port)是伴随着传输层诞生的概念。它可以将网络层的IP通信分送到各个通信通道。UDP协议和TCP协议尽管在工作方式上有很大的不同,但它们都建立了从一个端口到另一个端口的通信。

IP:端口

随着我们进入传输层,我们也可以调用操作系统中的API,来构建socket。Socket是操作系统提供的一个编程接口,它用来代表某个网络通信。应用程序通过socket来调用系统内核中处理网络协议的模块,而这些内核模块会负责具体的网络协议的实施。




总结



端口是传输层带来的最重要的概念。我们进一步了解了UDP协议。如果已经掌握了IP协议,那么UDP协议就没有任何困难可言,它只是IP协议暴露在传输层上的接口。


以上是关于考研倒计时83天——UDP协议的主要内容,如果未能解决你的问题,请参考以下文章

倒计时94天:《网传》| HTML5

传输层 TCP UDP

嵌入式自己做的考研计时小时钟

UDS(83服务-AccessTimingParameter)

什么可能导致 UDP 数据包计时不一致?

js倒计时代码还剩多少天