udp协议-看这篇就够了

UDP 概述

用户数据报协议 UDP 只在 IP 的数据报服务之上增长了不多一点的功能,这就是复用和分用的功能以及查错检测的功能html

UDP 的主要特色

  1. UDP 是无链接的,即发送数据以前不须要创建链接(发送数据结束时也没有链接可释放),减小了开销和发送数据以前的时延
  2. UDP 使用尽最大努力交付,即不保证可靠交付,主机不须要维持复杂的链接状态表
  3. UDP 是面向报文的,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界

UDP协议-图1

  1. UDP 没有拥塞控制,网络出现的拥塞不会使源主机的发送速率下降。这对某些实时应用是很重要的
  2. UDP 支持一对1、一对多、多对一和多对多的交互通讯
  3. UDP 的首部开销小,只有8个字节,比 TCP 的20个字节的首部要短
《PHP面试问答》 https://github.com/colinlet/P...
结合实际 PHP 面试,系统的汇总面试中的各类各样的问题,尝试提供简洁准确的答案。若是你在 PHP 面试中遇到问题,欢迎提 Issues 交流。包含网络协议、数据结构与算法、PHP、Web、MySQL、Redis、Linux、安全、设计模式、架构、自我介绍、离职缘由、职业规划、准备问题等部分
若是以为不错欢迎 star 关注,正在不断持续更新中~~

存在问题

  1. 某些实时应用须要使用没有拥塞控制的 UDP,但不少的源主机同时都向网络发送高速率的实时视频流时,网络就有可能发生拥塞,致使你们都没法正常接收。
  2. 还有一些使用 UDP 的实时应用,须要对 UDP 的不可靠传输进行适当的改进,以减小数据的丢失。应用进程能够在不影响应用的实时性的前提下,增长一些提升可靠性的措施,如采用前向纠错或重传已丢失的报文

UDP 的首部格式

用户数据报 UDP 有两个字段:数据字段首部字段。首部字段很简单,只有8个字节,由四个字段组成,每一个字段都是两个字节git

首部字段

  • 源端口 源端口号。在须要对方回信时。不须要时可用全0
  • 目的端口 目的端口号。这在终点交付报文时必须使用
  • 长度 UDP 用户数据报的长度,其最小值是8(仅有首部)
  • 检验和 检测 UDP 用户数据报在传输中是否有错。有错就丢弃

UDP协议-图2

端口分用

当运输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报经过相应的端口,上交最后的终点——应用进程github

UDP协议-图3

若是接受方 UDP 发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用程序),就丢弃该报文,并由网际控制报文协议 ICMP 发送“端口不可达”差错报文给发送方面试

伪首部

UDP 用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在 UDP 用户数据报以前增长 12 个字节的伪首部。所谓“伪首部”是由于这种伪首部并非 UDP 用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报前面,获得一个临时的 UDP 用户数据报。检验和就是按照这个临时用户数据报来计算的。伪首部既不向下传也不向上递交,而仅仅是为了计算检验和算法

本文转载自 枫叶林博客,《用户数据报协议UDP》https://blog.maplemark.cn/201...设计模式

相关文章
相关标签/搜索