udp的一些简单记录

UDP首部字段如下图所示



UDP是无连接的传输协议,
为什么有了面向连接的可靠数据传输协议TCP,还要有UDP呢?
1 应用层可以高度控制要发送的数据 和发送的时间。 这里解释一下,难道tcp不可以吗? tcp也可以,通过设置 TCP_NODELAY 选项来取消nagle算法,nagle算法是tcp用来拥塞控制的算法,这里就不多扯了,看官可以自行去百度一下。


2无需建立连接,很明显TCP发送数据,需要先进行三次握手,这得耗费一些时间和资源。这是DNS建立在UDP之上而不是TCP最重要的原因。


3无连接状态,TCP需要维护一大堆的连接状态,包括接收,发送缓存,拥塞控制参数,序号,确认号等。而UDP则不维护连接状态,这可以让主机给更多的用户提供服务。


4首部分组小,TCP 首部20个字节,加上实际情况中选项的12个字节,32个字节。 而UDP只有短短的8个字节。大大减少了首部的开销。


对于首部的几个字段,简单解释下,源端口号,目的端口号,分别是源主机发送消息的端口号,和目的主机接收消息的端口号。

长度是指该udp报文段的整个的长度,即首部+数据的长度,这点跟TCP首部的长度字段不同,TCP首部的长度字段指的是该TCP报文段的首部的长度。长度字段占了2个字节,因此这也限定了一个UDP报文段的最大的长度,2的16次方-1,6W多字节,如果你从应用层发送的数据长度-8(UDP首部长度)大于这个长度,将会发送失败。

检验和,提供差错检测,怎么个检测法呢,检验和字段的值是报文段中所有的16比特字相加得到的值取反(求和过程中有溢出都丢掉不要),最后检验和字段和数据字段相加若不是得到16个1,则出错了。


UDP虽然不提供可靠数据传输服务,但是我们可以在应用层,做一些处理,使我们的应用实现可靠的数据传输,如在应用层上做确认与重传的机制。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值