当前位置:网站首页>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是不可靠的。
边栏推荐
猜你喜欢

微信小程序 31 分包机制

Cooler Navigation helps you shop easily in shopping malls without confusion

940. 不同的子序列 II

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

Come in now!!!Take you to know the basic data types of C language

五个供应商销售谈判策略的识别以及应对它们的方法

怎么实现您的个人知识库?

In the past six months, I have done those things about the automatic return of the transaction link...

全自动化机器学习建模!效果吊打初级炼丹师!

336. Palindromic Pairs
随机推荐
R language for airbnb data nlp text mining, geography, word cloud visualization, regression GAM model, cross-validation analysis
MySQL数据查询 - 简单查询
Unity determines whether a string can be converted to float type
MSNs-SS-siRNA二氧化硅-二硫键-核酸RNA|HA-SS-siRNA,hyaluronic acid透明质酸修饰RNA(RNA修饰剂)
7 行代码搞崩溃 B 站,原因令人唏嘘!
Hyaluronic acid-siRNA透明质酸修饰核糖核酸|peptide–siRNA 多肽偶连RNA/DNA核酸(齐岳PNA修饰物)
Huawei laptop keyboard locked (how does the laptop keyboard light up)
五个供应商销售谈判策略的识别以及应对它们的方法
微博账号奇葩逻辑产品设计
240. Searching 2D Matrix II
First thoughts on the first attempt to avoid killing without a file (Part 1)
手写dialog弹框
Oracle问题: ORA-01882: 未找到时区
关于安装软件时x86 ,x64,x86_64,ARM 64, ARM 32 的选择
如何让 x == 1 && x == 2 && x == 3 等式成立
写出优雅的Kotlin代码:聊聊我认为的 “Kotlinic“
解析掌握现代化少儿编程实操能力
What are the software development modes (software engineering development mode)
双功能RGD-TAT修饰DNA纳米胶束|聚苯胺纳米线修饰DNA(PAINW/DNA)
C# 窗体与子线程数据交互