UDP协议详解

目录

网络原生的情况

网络原生是不可靠的:

网络是不安全的:

一,UDP协议:User Datagram Protocol 用户报文协议

UDP不可靠的原因

1,UDP工作机制

 UDP的特点:

UDP协议的应用场景:

2,UDP的报头

UDP协议的解包:

 UDP数据分用:UDP协议将数据交付给那个进程?

UDP校验和:

UDP没有发送缓冲区:

UDP协议存在接收缓冲区:

 UDP发送数据报:

UDP接收数据报:


网络原生的情况

:网络中的数据在路由器之间不停的路由转发,达到主机与主机之间的通信

网络原生是不可靠的:

1,对方不一定能收到,2,不能保证收到的顺序与发送顺序相同

网络是不安全的:

1,信息在路由器之间转发时,可以被他人修改,窃取和监听,2,别人可以伪造发送数据

一,UDP协议:User Datagram Protocol 用户报文协议

        在host to host 连通的情况下,实现process to process (P2P)

UDP不可靠的原因

        网络传输的本身时不可靠的,而UDP协议没有对信息传输做处理,因此,UDP协议是不可靠的

1,UDP工作机制

UDP协议详解_第1张图片

 UDP的特点:

        不可靠,无连接,面向数据报文的(字符流),传输成本低

  • 分组首部开销小**,TCP首部20字节,UDP首部8字节。

  •  UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销

  • UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)

  • UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息

  • UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。

  • UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销。

UDP协议的应用场景:

UDP常用于多媒体应用(如IP电话,实时视频会议,流媒体等)数据的可靠传输对他们而言并不重要,TCP的拥塞控制会使他们有较大的延迟,也是不可容忍的

2,UDP的报头

UDP协议详解_第2张图片

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协议详解_第3张图片

 UDP发送数据报:

(UDP协议会将数据报完完整整的发送,不会对数据报进行拆分,应用层发100K,传输层就一次性发送100k的数据)

1,应用层接收数据报

2,传输层将数据报(payload)添加协议头(16位本地端口,16位目的端口,16位数据报长度,16位的校验码,)

3,将数据报封装成datagramPacket,发送到网络层

4,网络层接收到数据报,通知应用层数据发送成功。

UDP接收数据报:

1,从网络层接收UDP数据报

2,将数据报按照定长拆分成header和payload,

3,读取发送方端口,目的端口,数据长度,校验码

4,验证长度和校验码,无论数据是否出错,UDP协议都不会做出任何响应给发送方,所以发送方也不知道数据是否发送成功,没有得到接收的回应,所以说UDP是不可靠的。

你可能感兴趣的:(se,udp,网络,网络协议)