【UDP通信】

news/2024/5/18 12:07:39 标签: 网络, udp, tcp/ip

UDP通信

TCP: 传输控制协议 安全可靠 丢包重传 面向连接(电话模型)

UDP: 用户数据报协议 不安全不可靠 丢包不重传 快 不面向连接(邮件模型)

传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。

相较于TCP而言,UDP通信的形式更像是发短信。不需要在数据传输之前建立、维护连接。只专心获取数据就好。省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证。因此,我们称UDP为“无连接的不可靠报文传递”。

那么与我们熟知的TCP相比,UDP有哪些优点和不足呢?由于无需创建连接,所以UDP开销较小,数据传输速度快,实时性较强。多用于对实时性要求较高的通信场合,如视频会议、电话会议等。但随之也伴随着数据传输不可靠,传输数据的正确率、传输顺序和流量都得不到控制和保证。所以,通常情况下,使用UDP协议进行数据传输,为保证数据的正确性,我们需要在应用层添加辅助校验协议来弥补UDP的不足,以达到数据可靠传输的目的。

与TCP类似的,UDP也有可能出现缓冲区被填满后,再接收数据时丢包的现象。由于它没有TCP滑动窗口的机制,通常采用如下两种方法解决:

  1. 服务器应用层设计流量控制,控制发送数据速度。

  2. 借助setsockopt函数改变接收缓冲区大小。如:

 #include <sys/socket.h>
 int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
 •   int n = 220x1024
 •   setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &n, sizeof(n));

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

相关文章

如何系统的学习IT技术?

学习IT技术需要一个系统化的方法和计划。 1. 设置目标&#xff1a;明确你想要学习的IT技术领域。 例如&#xff0c;网络安全、软件开发、数据分析等。确保你的目标具体、可测量和实际可行。 2. 制定学习计划&#xff1a; 根据你的目标&#xff0c;制定一个学习计划。 确定你需…

esxi从6.0升级到6.7

###检查主机是否在维护模式 [rootlocalhost:~] vim-cmd /hostsvc/hostsummary | grep inMaintenanceMode inMaintenanceMode true,##检查升级包 [rootlocalhost:~] esxcli software sources profile list -d /vmfs/volumes/5e7ab5b5-35d557e8-c053-10517255d4d3…

【学习记录】win10 + ubuntu 22.04双系统安装

一、背景 因为家里的台式&#xff08;Windows 10&#xff09;最近一直频繁蓝屏&#xff0c;再加上Win10之前经常性的资源管理器未响应&#xff0c;对Windows系统逐渐失去了信心&#xff0c;于是想着安装稳定性较好的Linux。以前抵触Linux是因为其人机交互界面没Windows那么直观…

Springboot启动过程入口和加载配置

文章目录 前言1.SpringApplication启动类ConfigurableApplicationContextgetSpringFactoriesInstances根据类加载器加载springfactoriesOrderComparator 控制启动顺序 2.spring.factories配置文件2.1 properties或者yml加载的类2.2 Run Listeners运行时的监听器2.3 Error Repor…

提高数据处理效率的有力工具:TopK算法解析

文章目录 TopK是什么TopK算法的实现总结 在现实生活中&#xff0c;TopK算法是非常常见的一种应用&#xff0c;你可能已经在电商平台上使用它来搜索最畅销的商品或者在音乐应用中使用它来发现最受欢迎的歌曲。那么&#xff0c;让我们深入了解TopK算法的原理和实现吧&#xff01;…

爬虫学习笔记05-异步

爬虫学习笔记05-异步 高性能异步爬虫&#xff1a;在爬虫中使用异步实现高性能的数据爬取操作。 异步的意义&#xff1a;通过一个线程利用其IO等待时间去做一些其他事情。 异步爬虫的方式 -1.多线程&#xff0c;多进程&#xff08;不建议&#xff09;&#xff1a;好处&#…

【Android -- 开源库】腾讯 TBS 浏览器 SDK 接入

简介 在 Android 开发项目中&#xff0c;经常会用到 Webview 。而 WebView 是出了名的坑&#xff0c;各种 Bug。腾讯 TBS 浏览服务面向应用开发商和广大开发者&#xff0c;提供浏览增强&#xff0c;内容框架&#xff0c;广告体系&#xff0c;H5游戏分发&#xff0c;大数据等服…

Flask中debug的用法详解

Flask默认是没有开启debug模式的&#xff0c;使用app.run()运行程序后&#xff0c;控制台输出* Debug mode: off。 在具体使用Flask时&#xff0c;可以根据应用场景选择是否使用debug。 开发模式&#xff1a;在程序员自己写代码的时候&#xff0c;开启debug模式&#xff0c;即…