自己做网站外包,四川确诊感染最新消息,为企业做网站的公司,erp系统免费版下载✅作者简介#xff1a;大家好#xff0c;我是小杨 #x1f4c3;个人主页#xff1a;「小杨」的csdn博客 #x1f433;希望大家多多支持#x1f970;一起进步呀#xff01; UDP协议
1#xff0c;UDP 简介
UDP#xff08;User Datagram Protocol#xff09;是一种无连… ✅作者简介大家好我是小杨 个人主页「小杨」的csdn博客 希望大家多多支持一起进步呀 UDP协议
1UDP 简介
UDPUser Datagram Protocol是一种无连接的传输层协议它提供了一种简单的、不可靠的数据传输服务。
UDP 提供了不面向连接的通信且不对传送的数据报进行可靠的保证适用于一次传送少量的数据不适用于传输大量的数据。 2UDP 特点
UDP 的主要特点为无连接不可靠传输面向数据报全双工通信。下面对这些特点进行逐一解释
1无连接UDP是一种无连接的传输协议这意味着在通信之前不需要进行连接建立的过程。发送方直接向目标主机发送数据报接收方无需事先建立连接就能接收数据。
2不可靠传输UDP不保证数据传输的可靠性。它将数据划分为独立的数据报并通过网络发送但不提供丢包重传、数据校验和错序整理等机制。如果在传输过程中发生数据丢失、损坏或重复UDP协议不会进行任何处理这使得UDP的传输不可靠。
3面向数据报UDP以数据报Datagram为单位进行通信。每个UDP数据包是一个独立的数据报具有自己的报头其中包含源端口号、目标端口号和数据长度等信息。这使得UDP的通信单位独立不受其他数据报的影响独立地发送和接收数据。
4全双工通信UDP支持全双工通信允许发送方和接收方同时发送和接收数据。发送方可以随时发送数据报而接收方可以在任何时间接收数据报而不受发送方的限制。这使得UDP在实现实时双向通信时具有优势。 3UDP 段格式
UDP协议的数据包也称为UDP报文由两部分组成UDP头部和UDP数据部分。
UDP 协议段格式示意图 UDP 数据包中的各字段代表含义如下
1源端口号Source Port16位字段表示发送方的端口号用于标识发起UDP通信的应用程序的发送端口。
2目标端口号Destination Port16位字段表示接收方的端口号用于标识接收方应用程序的接收端口。
3长度Length16位字段表示UDP报文的长度包括UDP头部和数据部分的总长度。
4校验和Checksum16位字段用于检测UDP报文在传输过程中是否发生错误或被篡改。
5数据区Data可选字段用于携带实际的应用数据内容。
UDP 数据包中的注意事项
1UDP协议的首部固定为8个字节即源端口、目的端口、长度和校验和其中校验和字段为可选字段可以不包含校验和。
2UDP报文长度包括UDP头部和数据部分最大长度为16位UDP数据报的最大长度被限制为65535 B 也就是最多只能传输64KB的数据。如果应用程序需要传输更大的数据则需要将数据进行分片并在应用层协议中进行重组或者采用TCP协议。
3UDP首部中的源端口和目的端口用于标识发送方和接收方的应用程序或服务。这两个字段共同决定了数据包的传输路径以确保正确地将数据包传送到相应的应用程序或服务。 4UDP 扩展知识 拓展端口号介绍
端口号是在传输层中使用的概念用于标识不同应用程序或服务的网络进程。
在传输层协议中头部中的源端口和目的端口用于标识发送方和接收方的应用程序或服务。
这两个字段共同决定了数据包的传输路径以确保正确地将数据包传送到相应的应用程序或服务。
端口号是一个16比特2字节的无符号整数代表的取值范围为0 ~ 65535在该范围内被划分3部分分别为
知名端口从0到1023的端口号被指定为知名端口用于一些广泛使用的标准服务。注册端口从1024到49151的端口号被指定为注册端口用于一些用户注册的应用程序或服务。动态或私有端口从49152到65535的端口号是动态或私有端口也称为临时端口。
下面是一些常见的知名端口号的定义和用途
22SSH端口用于安全外壳协议用于远程登录和安全文件传输。53DNS端口用于域名系统解析域名到IP地址。80HTTP端口用于超文本传输协议用于Web浏览器和服务器之间的通信。143IMAP端口用于Internet消息访问协议用于电子邮件客户端与服务器之间的通信。443HTTPS端口用于安全的超文本传输协议通过SSL/TLS加密的HTTP通信。3306MySQL数据库服务器的默认端口号。
进程与端口号之间的关系
一个进程可以绑定多个端口号但是一个端口号不能被多个进程绑定。 拓展校验和字段介绍
校验和的作用是用于验证UDP数据包的完整性以确保数据在传输过程中没有被篡改或损坏。
校验和的作用过程发送方在发送UDP数据包时会计算数据包的校验和校验和的计算涉及UDP头部和数据部分并将校验和值存储在校验和字段中。接收方在接收到UDP数据包后会重新计算数据包的校验和并将计算得到的校验和值与接收到的校验和字段进行比对。如果两者一致则说明数据包在传输过程中没有损坏如果两者不一致则说明数据包可能在传输过程中发生了错误。
校验和字段为可选字段在UDP协议中是可以不选是否使用校验和可以根据应用程序的需求和对数据完整性的要求来决定。
对于实时性要求高、数据可靠性要求较低的应用可以选择不使用校验和以减少开销和延迟。对于对数据的可靠性要求较高的应用可以自行添加校验和机制来保证数据的完整性。 经典问题基于传输层UDP协议来实现一个可靠传输应该如何设计
问题引入虽然校验和可以提供一定程度的数据完整性检查但是因为UDP本身是一种不可靠传输协议即使检测到错误或数据篡改UDP也不会进行任何恢复操作具体就是不提供丢包重传、数据校验和错序整理等机制。
若想基于传输层UDP协议来实现一个可靠传输那就是从下面这几个方面来考虑
数据包序列号为每个发送的数据包分配一个唯一的序号。序号可以是一个递增的数字或其他唯一标识符接收方根据序列号对接收到的数据包进行排序和重组以确保数据包按正确的顺序传递给应用层。确认应答机制接收端需要向发送端发送确认消息以确认已收到的数据包。发送端在收到确认消息后才能发送下一个数据包。如果发送端没有收到确认消息则会启动超时重传机制。超时重传当发送端发送一个数据包后如果在一定时间内没有收到确认消息则认为数据包丢失或发生了错误。发送端需要启动超时重传机制重新发送丢失的数据包。 结语
这就是本期博客的全部内容啦如果有什么其他的问题无法自己解决可以在评论区留言哦
最后如果你觉得这篇文章写的还不错的话或者有所收获的话麻烦小伙伴们动动你们的小手给个三连呗点赞评论✍收藏多多支持一下各位的支持是我最大的动力后期不断更新优质的内容来帮助大家一起进步。那我们下期见