当前位置:网站首页>UDP协议详解
UDP协议详解
2022-07-29 20:30:00 【小趴菜学java】
目录
一,UDP协议:User Datagram Protocol 用户报文协议
网络原生的情况
:网络中的数据在路由器之间不停的路由转发,达到主机与主机之间的通信
网络原生是不可靠的:
1,对方不一定能收到,2,不能保证收到的顺序与发送顺序相同
网络是不安全的:
1,信息在路由器之间转发时,可以被他人修改,窃取和监听,2,别人可以伪造发送数据
一,UDP协议:User Datagram Protocol 用户报文协议
在host to host 连通的情况下,实现process to process (P2P)
UDP不可靠的原因
网络传输的本身时不可靠的,而UDP协议没有对信息传输做处理,因此,UDP协议是不可靠的
1,UDP工作机制

UDP的特点:
不可靠,无连接,面向数据报文的(字符流),传输成本低
分组首部开销小**,TCP首部20字节,UDP首部8字节。
UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销
UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)
UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息
UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。
UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销。
UDP协议的应用场景:
UDP常用于多媒体应用(如IP电话,实时视频会议,流媒体等)数据的可靠传输对他们而言并不重要,TCP的拥塞控制会使他们有较大的延迟,也是不可容忍的
2,UDP的报头

UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
2.目的端口:目的端口号,在终点交付报文的时候需要用到。
3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃。
该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0.
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。
如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。
UDP协议的解包:
UDP协议的header一定是8字节,剩下的长度都是payload数据报文,
UDP数据分用:UDP协议将数据交付给那个进程?
UDP协议的目的端口,可以实现协议能到到达指定的进程。同时携带自己端口号,保证双方都可以进行通信
UDP校验和:
保证数传输的完整性和准确性,
原理:利用hash函数,计算发送的数据与接收的数据的hash值是否相等,来判断接收与发送数据的hash值是否相等,CRC循环冗余码则是UDP校验发送数据是否准确到达接收方的一种校验手段。
UDP没有发送缓冲区:
应用层将数据报经过UDP协议,将UDP数据报发送成功,因为UDP没有发送缓冲区,所以应用层看到数据发送成功,只是说明数据报已经被传输层所接收。
UDP协议存在接收缓冲区:
接收方的应用层存在缓冲区,接收方的传输层在收到数据以后,会将收到的数据暂存到缓冲区,等待接收方应用层来读取数据。

UDP发送数据报:
(UDP协议会将数据报完完整整的发送,不会对数据报进行拆分,应用层发100K,传输层就一次性发送100k的数据)
1,应用层接收数据报
2,传输层将数据报(payload)添加协议头(16位本地端口,16位目的端口,16位数据报长度,16位的校验码,)
3,将数据报封装成datagramPacket,发送到网络层
4,网络层接收到数据报,通知应用层数据发送成功。
UDP接收数据报:
1,从网络层接收UDP数据报
2,将数据报按照定长拆分成header和payload,
3,读取发送方端口,目的端口,数据长度,校验码
4,验证长度和校验码,无论数据是否出错,UDP协议都不会做出任何响应给发送方,所以发送方也不知道数据是否发送成功,没有得到接收的回应,所以说UDP是不可靠的。
边栏推荐
猜你喜欢

LOG4J Learning

分布式限流 redission RRateLimiter 的使用及原理

Panorama Tutorial丨How to shoot sunrise and sunset scenes in VR panoramic shooting?

无文件落地免杀的初尝试思考(上)

探索创客教育在线管理实施体系
![LeetCode 593 有效的正方形[数学] HERODING的LeetCode之路](/img/c2/34624c9c7693ba40d0b3724c0db611.png)
LeetCode 593 有效的正方形[数学] HERODING的LeetCode之路

LeetCode 0144. 二叉树的前序遍历:二叉树必会题

R language for airbnb data nlp text mining, geography, word cloud visualization, regression GAM model, cross-validation analysis

解析掌握现代化少儿编程实操能力

双功能RGD-TAT修饰DNA纳米胶束|聚苯胺纳米线修饰DNA(PAINW/DNA)
随机推荐
从专业角度分析国内创客教育发展
.NET 6.0中使用Identity框架实现JWT身份认证与授权
单壁碳纳米管-DNA复合物(SWCNT-DNA)|作用机理
最小jvm源码分析
叶酸&适配体修饰DNA纳米载体|CdS纳米颗粒修饰DNA|科研试剂
如何进入董事会:给CIO的十条建议
RedisJson 横空出世!
Durable rules (persistent rules engine) learning notes
Minimal jvm source code analysis
Baidu internship students late night fun: originally giant is this kind of life
Internship: use easypoi to import and export excel table data
[ACTF2020 新生赛]Exec 1
Cobaltstrike and BurpSuite desktop shortcut configuration
Permutations of a small feat: cantor
336. Palindromic Pairs
双功能RGD-TAT修饰DNA纳米胶束|聚苯胺纳米线修饰DNA(PAINW/DNA)
Common power symbols meaning sharing
JUC Concurrent Programming Basics AQS
关于安装软件时x86 ,x64,x86_64,ARM 64, ARM 32 的选择
:style中颜色使用函数动态获取赋值