UDP协议

小王成长日志

UDP协议详解

文章目录
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.同类文章推荐
一文带你看懂多路复用与多路分解
都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。

如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。
————————————————
版权声明:本文为CSDN博主「小王成长日志」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45761327/article/details/105626410

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值