协议森林05 傀儡 (UDP协议)
Posted 码农有道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协议森林05 傀儡 (UDP协议)相关的知识,希望对你有一定的参考价值。
我们已经讲解了物理层、链路层和网络层。链路层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层,只有一个IP协议。进入到传输层(transport layer),协议的种类又多起来(比如TCP、UDP、SCTP等)。这就好像下面的大树,根部(链路层)分叉很多,然后统一到一个树干上(网络层),到了树冠(传输层)部分又开始开始分叉,而每个树枝上长出更多的树叶(应用层)。
网络分层的“艺术”观点
传输层最重要的协议为TCP协议和UDP协议。这两者走了两个极端,TCP协议复杂,但传输可靠。UDP协议简单,但传输不可靠。其他的各个传输层协议在某种程度上都是这两个协议的折中。我们先来看传输层协议中比较简单的UDP协议。我们将参考许多之前文章的内容。
UDP(User Datagram Protocol)传输与IP传输非常类似。你可以将UDP协议看作IP协议暴露在传输层的一个接口。UDP协议同样以数据包(datagram)的方式传输,它的传输方式也是"Best Effort"的,所以UDP协议也是不可靠的(unreliable)。那么,我们为什么不直接使用IP协议而要额外增加一个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协议的对比。
IP和他的傀儡UDP
来自wikipedia
上面的source port和destination port分别为UDP包的出发端口和目的地端口。Length为整个UDP包的长度。
checksum的算法与相类似。不同的是,UDP的checksum所校验的序列包括了整个UDP数据包,以及封装的IP头部的一些信息(主要为出发地IP和目的地IP)。这样,checksum就可以校验IP:端口的正确性了。在IPv4中,checksum可以为0,意味着不使用checksum。IPv6要求必须进行checksum校验。
端口(port)是伴随着传输层诞生的概念。它可以将网络层的IP通信分送到各个通信通道。UDP协议和TCP协议尽管在工作方式上有很大的不同,但它们都建立了从一个端口到另一个端口的通信。
IP:端口
随着我们进入传输层,我们也可以调用操作系统中的API,来构建socket。Socket是操作系统提供的一个编程接口,它用来代表某个网络通信。应用程序通过socket来调用系统内核中处理网络协议的模块,而这些内核模块会负责具体的网络协议的实施。
端口是传输层带来的最重要的概念。我们进一步了解了UDP协议。如果已经掌握了IP协议,那么UDP协议就没有任何困难可言,它只是IP协议暴露在传输层上的接口。
原文链接:http://www.cnblogs.com/vamei
推荐阅读:
专注服务器后台技术栈知识总结分享
欢迎关注交流共同进步
码农有道,为您提供通俗易懂的技术文章,让技术变的更简单!
以上是关于协议森林05 傀儡 (UDP协议)的主要内容,如果未能解决你的问题,请参考以下文章