没搞清运输层的UDP协议? -哎呀, 咋来这看就好了啊

Sachi ·
更新时间:2024-11-14
· 666 次阅读

UDP协议详解

最近在看计算机网络自顶向下,中间会陆陆续续发出来一些笔记,每一章完整的笔记以及思维导图会在以后在学习笔记计算机网络专栏发出来,第一次学,如果出现错误,还请各位大佬指正。/抱拳

写在前面:这里是小王成长日志,一名普通在校大学生,想成学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人,平时博客内容主要是一些系统的学习笔记,项目实战笔记,一些技术的探究和自己的一些思考。欢迎大家关注,你们的每一个评论点赞关注我都会仔仔细细去看的。有任何问题欢迎交流,我会尽我所能帮助大家的,共创CSDN美好环境。

文章目录UDP协议详解@[toc]1.UDP协议简介2.UDP传输报文的过程:3.UDP的特点1).关于何时、发送什么数据的应用层控制更为精细2).无需连接建立3).无连接状态4).分组首部开销小4.UDP的报文段结构5.UDP检验和的计算检验和的计算方式检验和出现的原因:6.参考7.同类文章推荐 1.UDP协议简介 UDP协议是一种简单的运输层协议,和它经常放在一起的还有TCP协议,两者都是运输层协议,但UDP是不可靠,无连接的,相较而言,TCP则可靠,面向连接。 不懂什么叫做运输层,点这进入百度百科。 我们需要知道UDP 协议只做了运输协议能够做的最少工作 。 除了复用/分解能及少量的差错检测外,它基本上没有对 IP 增加别的东西 。 2.UDP传输报文的过程:

UDP 先从应用进程得到数据附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层

网络层将该运输层报文段封装到一个IP数据报中,然后尽力而为地尝试将此报文段交付给接收主机 。

如果该报文段到达接收主机UDP 使用目的端口号将报文段中的数据交付给正确的应用进程

值得注意的是,使用 UDP 时,在发送报文段之前,发送方和接收方的运输层实体之间没有握手 。 正因为如此, UDP 被称为是无连接的

3.UDP的特点 1).关于何时、发送什么数据的应用层控制更为精细 采用 UDP 时,只要应用进程将数据传递给 UDP , UDP 就会将此数据打包进 UDP 报文段井立即将其传递给网络层 。 此外UDP可以避免TCP的拥塞控制机制,UDP协议不会理会网络是否拥塞,只会竭尽所能一窝蜂地立马交付数据,因此其数据交付延迟低但也可能造成网络的堵塞。 2).无需连接建立 TCP 在开始数据传输之前要经过三次握手 。UDP 却不需要任何准备即可进行数据传输 (这也是DNS采用UDP的重要原因)。 HTTP 使用 TCP 而不是 UDP ,因为对于具有文本数据的 Web网页来说,可靠性是至关重要的 。 3).无连接状态 TCP 需要在端系统中维护连接状态 ,并追踪一些用于维护连接的参数 UDP 不维护连接状态,也不跟踪这些参数4).分组首部开销小 每个 TCP 报文段都有 20 字节的首部开销,而 UDP 仅有 8 字节的开销4.UDP的报文段结构

下面我们一起来看看UDP的报文段结构下图是一个UDP报文段的结构示意图
在这里插入图片描述

UDP 首部只有 4 个字段,每个字段由两个字节(16位)组成 。 通过端口号可以使目的主机将应用数据交给运行在目的端系统中的相应进程(即执行多路分解功能) 。 长度字段指示了在 UDP 报文段中的字节数(首部加数据) 。 因为数据字段的长度在一个 UDP 段中不同于在另一个段巾,故需要一个明确的长度。 接收方使用检验和检查在该报文段中是杏出现了差错 。 检验和计算方式在后面会讲到,这里知道用处是检验传输中是否出现差错即可。 数据就是要传输的应用层数据,这是报文段存在的最重要的原因。 5.UDP检验和的计算 我们之前提到UDP提供了少量的差错检测功能,而检验和就是UDP提供的少量的差错检测功能,即检验和用于确定UDP字段从源到目的地移动时,其中比特是否发生改变 检验和的计算方式

总的方式就是将所有字段相加,若有超出则回卷(将超出部分相加到未超出部分),将最后的结果取反即是检验和

下面举个栗子来看看:

我们给定三个16比特字段,其值如下并将其相加

给定下列三个字
字段1 0110 0110 0110 0000
字段2 0101 0101 0101 0101
前两个字段之和 1011 1011 1011 0101
字段3 1000 1111 0000 1100
1 0100 1010 1100 0001

将最后一个和的超出部分进行回卷

回卷操作
0100 1010 1100 0001
+ 1
0100 1010 1100 0010

最后将回卷完的和进行取反结果即为1011 0101 0011 1101

所以这三个字段的检验和就是最后的取反结果1011 0101 0011 1101

再来看一遍总的流程

流程
字段1 0110 0110 0110 0000
字段2 0101 0101 0101 0101
字段3 1000 1111 0000 1100
三个字段之和 1 0100 1010 1100 0001
超出部分回卷 0100 1010 1100 0010
对最后的结果取反 1011 0101 0011 1101
检验和出现的原因:

是由于不能保证源和目的之间的所有链路都提供差错检测;

这就是说,也许这些链路中的一条可能使用没有差错检测的协议。

此外,即使报文段经链路正确地传输,当报文段存储在某台路由器的内存中时,也可能引入比特差错 。

在既无法确保连链路的可靠性,又无法确保内存巾的差错检测的情况下,如果端到端数据传输服务要提供差错检测,所以UDP 就必须在端到端基础上在运输层提供差错检测 。

6.参考 UDP-百度百科 7.同类文章推荐 一文带你看懂多路复用与多路分解

都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。

如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。


作者:小王成长日志



udp协议 udp

需要 登录 后方可回复, 如果你还没有账号请 注册新账号