首页 > 其他 > 详细

UDP

时间:2021-01-05 19:06:55      阅读:34      评论:0      收藏:0      [点我收藏+]

一、概述

1、什么是UDP

? UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

?

2、什么时候用UDP

? 对速度要求比较高时使用UDP,比如视频聊天(流畅度优先时),qq聊天,dns域名解析等

?

3、怎么用UDP

? java socker实现udp编程(具体使用DatagramSocket )

?

4、UDP的特点

UDP 是无连接的,即发送数据之前不需要建立连接。

UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

UDP 的首部开销小,只有 8 个字节。

技术分享图片

?

5、UDP存在的问题

1、没有拥塞控制。当很多主机都向网络发送高数据量的视频流时,网络很容易就占满,导致大家都无法接收

2、是不可靠传输。需要引入确认机制改进UDP不可靠的问题

?

?

二、UDP报文格式

技术分享图片

源端口:源端口号。在需要对方回信时。不需要时可用全0

目的端口:目的端口号。这在终点交付报文时必须使用

长度:UDP 用户数据报的长度,其最小值是8(仅有首部)

检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃

?

? 另外UDP还有伪首部:

即并不是真正的UDP报文首部信息,包含源ip地址,目的ip地址等信息。只是在计算校验和时,临时添加在UDP首部的

?

?

三、UDP校验和的计算

技术分享图片

一、二进制反码求和?

1、假设要传输的数据为1100,1010 。那么首先得到数据的反码为:0011,0101

2、然后将0011 + 0101 ==》得到:1000 具体是这样的:(0+0=00 1+0=01 1+1=10)

二、反码计算

? 将以上的结果再求反码得到校验和: 0111。 那么传送的数据就是1100,1010,0111(校验和)

三、怎么判断数据是否正确

? 接收方收到之后,同样将数据进行二进制求和:即0011,0101,1000==》最后求和得到1111。如果全为1,那么说明数据是准确的

?

?

四、抓包演示

技术分享图片

?

参考链接:

https://zhuanlan.zhihu.com/p/64154915

https://blog.csdn.net/stone_Yu/article/details/81611067

https://blog.csdn.net/yjxsdzx/article/details/71937886

https://www.jianshu.com/p/f1bd10f3d170

https://blog.csdn.net/u012063703/article/details/45850343

?


如果本篇博客有任何错误和建议,欢迎大佬们批评指正

我是知逆,我们下期见

Peace

UDP

原文:https://www.cnblogs.com/mercurytan/p/14236568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!