5-2传输层-UDP协议

news/2024/5/18 13:17:12 标签: udp, 网络, tcp/ip

文章目录

  • 一.UDP数据报
  • 二.UDP校验
  • 三.优缺点
  • 四.应用

一.UDP数据报

1.UDP实现了传输协议能够做的最少工作,在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测

2.UDP优点
(1)UDP无须建立连接:不会有建立连接的时延
(2)无连接状态:UDP不维护连接状态,应用服务器使用UDP时,一般都能支持更多的活动客户机
(3)分组首部开销小
(4)UDP无拥塞控制,适合很多实时应用
(5)UDP首部开销小(8B),而TCP为20B
(6)IP数据报只能找到目的主机而无法找到目的进程,UDP提供端口功能及复用和分用功能,可以将数据报投递给对应的进程。因此,UDP数据报比IP数据报多提供了端口功能

3.特点
(1)UDP常用于一次性传输较少数据的网络应用,如DNS、SNMP等
(2)UDP提供尽最大努力的交付,即不保证可靠交付:所有维护传输可靠性的工作需要用户在应用层来完成
(3)UDP是面向报文的:报文是UDP数据报处理的最小单位

在这里插入图片描述

4.UDP的首部格式
(1)源端口:源端口号。在需要对方回信时选用(可有可无),不需要时可用全0
(2)目的端口:这在终点交付报文时必须使用到。UDP协议实现分用所依据的头部字段是目的端口
(3)长度:UDP数据报的长度(包括首部8B和数据)(不含伪首部),其最小值是8(仅有首部)
(4)校验和
①检测UDP数据报在传输中是否有错,有错就丢弃。
②该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0

在这里插入图片描述

5.收到数据报
(1)根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程
(2)如果接收方UDP发现收到的报文中的目的端口号不正确,丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方

二.UDP校验

伪首部只有在计算检验和时才出现,不向下传送也不向上递交。其中的0表示固定字段,17表示协议字段。通过伪首部,不仅可以检查源端口号、目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。

在这里插入图片描述

伪首部包括源IP地址和目的IP地址,因此伪首部包括IP分组报头的一部分

在这里插入图片描述
【在发送端】
1.填上伪首部
2.全0填充检验和字段
在这里插入图片描述
3.全0填充数据部分(使之成为4B的整数倍)

在这里插入图片描述
4.伪首部+首部+数据部分采用二进制反码求和(此时首部中校验和字段为全0)
因此:UDP校验和对伪首部、UDP报文头以及应用层数据进行校验

5.把和求反码填入检验和字段(即二进制反码运算求和再取反
如果校验和的计算结果恰好为0,那么将校验和字段置为全1
在这里插入图片描述
6.去掉伪首部,发送

【在接收端】
1.填上伪首部
2.伪首部+首部+数据部分采用二进制反码求和(此时首部中的校验和字段为刚刚计算出的值,并非全0)
3.结果全为1则无差错,如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以交付给上层(应用层),但是需要附上错误报告

三.优缺点

1.简单、处理速度快
2.检错能力并不强

四.应用

UDP的特点是开销小,时间性能好且易于实现。

1.在客户/服务器模式中,它们之间的请求都很短,使用UDP不仅编码简单,而且只需要很少的消息
2.远程调用使用UDP的理由和客户/服务器模式的一样
3.对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用UDP也是合适的,而且使用UDP协议可以实现多播,给多个客户端服务


http://www.niftyadmin.cn/n/816196.html

相关文章

系统备份linux,六条Linux系统备份优化的应用与技巧

导读当转为使用Linux时,你可能会注意到你所使用的版本会带有一个默认的备份工具。然而,可能该工具并没有被设置好去备份你系统中所有重要的部分。而且,使用该默认工具也可能导致它以比预期更低的效率去产生一些更大的备份数据。本文将向你介绍…

0数据结构-结构体struct与typedef

文章目录一.结构体(一)定义结构与说明结构变量(二)在定义结构类型的同时说明结构变量(三)直接说明结构变量(四)成员也可以又是一个结构,即构成了嵌套的结构(五…

linux 端口 拒绝,Linux中是否有任何日志告诉某个端口是否被拒绝

第一个答案没有.默认情况下没有日志,显示了这一点,但是显示当前的防火墙配置了解防火墙的配置方式:iptables -L首先查找Chain [INPUT | OUTPUT]策略.如果除了ACCEPT之外还有其他任何东西,那么使用过的端口可能需要进行彻底的接受.iptables -L INPUT | grep port2[01…

5-3传输层-TCP协议

文章目录一.TCP协议特点二.TCP报文段三.TCP连接管理四.TCP可靠传输五.TCP流量控制一.TCP协议特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题 1.TCP是面向连接(虚连接)的传输层协议…

linux j查找文件位置,linux系统文件管理与查找

which 指令 显示指令的完整路径和别名、whereis 指令 查找指令的完整路径和帮助文件locate 关键字 查找文件名或目录名中包含此关键字的路径全部显示出来updatedb 来手动更新数据库find 查询find 路径 选项 表达式-name 根据文件名来查找-type 根据文件类型来…

6-1应用层-网络应用模型

文章目录一.应用层概述二.客户/服务器模型(C/S模型)二.P2P模型(对等网络)一.应用层概述 应用进程之间的通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。具体来说,应用层协议应当定义&#xff1a…

javascript中关于cookie的使用

1)取得cookie 主要是通过传入一个参数属性(name),利用正则表达式来获得对应的属性值(value); function getCookie(name) { // (^| )name([^;]*)(;|$),match[0]为与整个正则表达式匹配的字符串…

linux centos7在哪里编译c,在Centos7下编译安装C/C++驱动

参考了这个博客的安装(https://www.cnblogs.com/ealamyan/p/9903299.html)出现了一下错误——————libmongoc-1.0.so.0.0.0:对‘__cxa_pure_virtual’未定义的引用libmongoc-1.0.so.0.0.0:对‘__cxa_rethrow’未定义的引用libmongoc-1.0.so.0.0.0&…