搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 码农有道 > 【协议森林】05 傀儡 (UDP协议)

【协议森林】05 傀儡 (UDP协议)

码农有道 2018-09-24
举报

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

网络分层的“艺术”观点

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


UDP协议简介

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

【协议森林】05 傀儡 (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协议的对比。


【协议森林】05 傀儡 (UDP协议)

IP和他的傀儡UDP


UDP协议头部


【协议森林】05 傀儡 (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协议暴露在传输层上的接口。

原文链接:http://www.cnblogs.com/vamei


推荐阅读:




  


专注服务器后台技术栈知识总结分享

欢迎关注交流共同进步

码农有道 coding


码农有道,为您提供通俗易懂的技术文章,让技术变的更简单!


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【协议森林】05 傀儡 (UDP协议)》的版权归原作者「码农有道」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报