Linux网络编程(三)-UDP协议及网络通信详解

news2024/11/30 2:25:07

1.UDP协议

概念:

除了 TCP 协议外,还有 UDP 协议,想必大家都听过说,UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接、不可靠的协议,同样它也是工作在传顺层。它只是简单地实现从一端主机到另一端主机的数据传输功能,这些数据通过 IP 层发送,在网络中传输,到达目标主机的顺序是无法预知的,因此需要应用程序对这些数据进行排序处理,这就带来了很大的不方便,此外,UDP 协议更没有流量控制、拥塞控制等功能,在发送的一端,UDP 只是把上层应用的数据封装到 UDP 报文中,在差错检测方面,仅仅是对数据进行了简单的校验,然后将其封装到 IP 数据报中发送出去。而在接收端,无论是否收到数据,它都不会产生一个应答发送给源主机,并且如果接收到数据发送校验错误,那么接收端就会丢弃该UDP 报文,也不会告诉源主机,这样子传输的数据是无法保障其准确性的,如果想要其准确性,那么就需要应用程序来保障了。

特点:

  • 无连接、不可靠
  • 尽可能提供交付数据服务,出现差错直接丢弃,无反馈
  • 面向报文,发送方的udp拿到上层数据直接添加个udp首都,然后进行效验后就递交给IP层,而接受的一方在接收到UDP报文后简单进行效验,然后直接去除数据递交给上层应用
  • 速度快,因为 UDP 协议没有 TCP 协议的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快,即使在网络拥塞的时候 UDP 也不会降低发送的数据。

UDP 虽然有很多缺点,但也有自己的优点,所以它也有很多的应用场合,因为在如今的网络环境下,UDP 协议传输出现错误的概率是很小的,并且它的实时性是非常好,常用于实时视频的传输,比如直播、网络电话等,因为即使是出现了数据丢失的情况,导致视频卡帧,这也不是什么大不了的事情,所以,UDP协议还是会被应用与对传输速度有要求,并且可以容忍出现差错的数据传输中。

2.网络通信

网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种, 通常称为 socket IPC,在前面给大家简单地提到过,如图 10.2.1 中所示。所以网络通信是为了解决在网 络环境中,不同主机上的应用程序之间的通信问题。

大概可以分为三个层次,如下所示:

  1. 硬件层:网卡设备,收发网络数据
  2. 驱动层:网卡驱动(Linux 内核网卡驱动代码)
  3. 应用层:上层应用程序(调用 socket 接口或更高级别接口实现网络相关应用程序)

图 29.1.1 网络连接

在硬件上,两台主机都提供了网卡设备,也就满足了进行网络通信最基本的要求,网卡设备是实现网络数 据收发的硬件基础。并且通信的两台主机之间需要建立网络连接,这样两台主机之间才可以进行数据传输,譬如 通过网线进行数据传输。

网络数据的传输媒介有很多种,大体上分为有线传输(譬如双绞线网线、光纤等)和 无线传输(譬如 WIFI、蓝牙、ZigBee、4G/5G/GPRS 等),PC 机通常使用有线网络,而手机等移动设备通 常使用无线网络。

在内核层,提供了网卡驱动程序,可以驱动底层网卡硬件设备,同时向应用层提供 socket 接口。 在应用层,应用程序基于内核提供的 socket 接口进行应用编程,实现自己的网络应用程序。需要注意 的是,socket 接口是内核向应用层提供的一套网络编程接口,所以我们学习网络编程其实就是学习 socket 编 程,如何基于 socket 接口编写应用程序。 除了 socket 接口之外,在应用层通常还会使用一些更为高级的编程接口,譬如 http、网络控件等,那么这 些接口实际上是对 socket 接口的一种更高级别的封装。

在正式学习 socket 编程之前,我们需要先了解一些 网络基础知识,为后面的学习打下一个理论基础。 网络通信知识庞大,其中涉及到一大堆的网络协议(TCP/IP 协议族)。

3.通信方式

单工:单工通信只支持信号在一个方向上传输,任何时候不能改变信号的传输方向。

为保证正确传送数据信号,接收端要对接收的数据进行校验,若校验出错,则通过监控信道发送请求重发的信号

用途:适用于数据收集系统、如气象数据的收集、电话费的集中计算等

半双工:允许信号在两个方向上传输、但某一时刻只允许信号在一个信道上单向传输

因此,半双通信实际上是一种可切换方向的单工通信

此方式适用于闻讯、检索、科学计算等数据通信系统

示例;对讲机,不允许同时进行讲话

全双工;全双工通信允许数据同时在两个方向上传输,既有两个信道,因此允许同时进行双向传输

要求双方都有接受和发送能力

全双工通信效率高,控制简单,但造价更高,示例:电话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于FreeRTOS的LWIP移植

目录 前言一、移植准备工作二、以太网固件库与驱动2.1 固件库文件添加2.2 库文件修改2.3 添加网卡驱动 三、LWIP 数据包和网络接口管理3.1 添加LWIP源文件3.2 Lwip文件修改3.2.1 修改cc.h3.2.2 修改lwipopts.h3.2.3 修改icmp.c3.2.4 修改sys_arch.h和sys_arch.c3.2.5 修改ether…

利用Python filestream实现文件流读

在 Python 中,文件流(filestream)操作通过内置的 open() 函数实现,它提供了对文件的读取、写入、以及流控制的支持。常见的文件模式包括: r:只读模式(默认)。w:写入模式…

用Python构建动态折线图:实时展示爬取数据的指南

背景/引言 随着大数据和人工智能的不断发展,实时数据分析变得越来越关键,尤其是在金融市场中。股市数据的实时可视化可以帮助投资者快速做出决策,避免错失良机。Python 凭借其强大的数据处理能力和丰富的可视化库,成为分析和展示…

你不是算法工程师,就可以不了解AI大模型技术吗?

身处人工智能的大浪潮之中,除了算法工程师,其他的角色也都应当对人工智能大模型技术有一定的了解。所以,笔者将针对“什么是人工智能?”“非技术人员对于人工智能大模型的理解存在哪些门槛?”等问题与大家分享自己的见…

项目集成工作流,走审批流程,activiti,springboot,集成工作流,业务审批,驳回,会签,流程设计

前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 项目源码配套文档获取:本文末个人名片直接获取。 一、项目形式 springboot…

健康补充维生素

在快节奏的现代生活中,健康养生已成为我们不可忽视的重要议题。而提及养生,维生素这一关键词往往跃然纸上,它们作为人体不可或缺的微量营养素,对维持生命活动、促进健康起着至关重要的作用。今天,就让我们深入探讨如何…

中小型医院网站:Spring Boot框架详解

5 系统实现 5.1 用户功能模块的实现 用户进入本系统可查看系统信息,包括首页、门诊信息、药库信息以及系统公告信息等,系统前台主界面展示如图5-1所示。 图5-1系统前台主界面图 5.1.1用户登录界面 用户要想实现预约挂号功能,必须登录系统&a…

修改Linux的IP地址

方法一(特点:命令执行后,IP立即修改,但重启后会恢复原来的IP地址) 1.含义: inet ip地址 netmask 子网掩码 broadcast 广播地址 inet 192.168.44.129 netmask 255.255.255.0 broadcast 192.168.1.255 …

仅涨粉1.3万、清空橱窗,贾跃亭直播带货这么快就哑火了?

还记得上周,贾跃亭声势浩大的做了个重大决定,也就是几个月前说的要个人IP商业化这盘菜端到了直播带货行业。‍‍ 当时,说他口气大,那真是一点也不小,比如要给中美人民、中美零售业、中美产品、中美品牌,搭一…

LeNet-5(论文复现)

LeNet-5(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 LeNet-5(论文复现)概述LeNet-5网络架构介绍训练过程测试过程使用方式说明 概述 LeNet是最早的卷积神经网络之一。1998年,Yann LeCun第一次将LeN…

站在用户视角审视:以太彩光与PON之争

作者:科技作家-郑凯 园区,是企业数字化转型的“中心战场”。 云计算、大数据、人工智能等数智化技术在园区里“战火交织”;高清视频、协同办公,智慧安防等大量创新应用产生的海量数据在园区内“纵横驰骋”;加上大量的IOT和智能化设备涌入“战场”,让园区网络面对着难以抵御的…

基于YOLOv9的空中飞鸟识别检测系统(附项目源码和数据集下载)

项目完整源码与模型 YOLOv9实现源码:项目完整源码及教程-点我下载YOLOv5实现源码:项目完整源码及教程-点我下载YOLOv7实现源码:项目完整源码及教程-点我下载YOLOv8实现源码:项目完整源码及教程-点我下载数据集:空中飞…

等保测评的技术要求与管理要求详解

等保测评,即网络安全等级保护测评,是根据《中华人民共和国网络安全法》、《信息安全技术网络安全等级保护基本要求》等相关法规和标准,对信息系统的安全性进行评估的过程。等保测评分为技术要求和管理要求两大方面,旨在确保信息系…

外包干了5天,技术明显退步

我是一名本科生,自2019年起,我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定,但日复一日的重复性工作让我逐渐陷入了舒适区,失去了前进的动力。两年的时光匆匆流逝,我却在原地踏步,技术没有丝毫…

PicoQuant GmbH公司Dr. Christian Oelsner到访东隆科技

昨日,德国PicoQuant公司的光谱和显微应用和市场专家Dr.Christian Oelsner莅临武汉东隆科技有限公司。会议上Dr. Christian Oelsner就荧光寿命光谱和显微技术的最新研究和应用进行了深入的交流与探讨。此次访问不仅加强了两家公司在高科技领域的合作关系,…

成都爱尔李晓峰主任讲解“寒”已至,眼需“养”

温度逐渐走低,寒冷空气的到来带走夏季闷热潮湿,也带走了空气中的水分,环境变得干燥,眼睛水分蒸发加快,十分容易造成眼部不适,干眼患者尤其需要注意! 有干眼问题的患者,在这样的天气下…

案例实践 | 以长安链为坚实底层,江海链助力南通民政打造慈善应用标杆

案例名称-江海链 ■ 实施单位 中国移动通信集团江苏有限公司南通分公司、中国移动通信集团江苏有限公司 ■ 业主单位 江苏省南通市民政局 ■ 上线时间 2023年12月 ■ 用户群体 南通市民政局、南通慈善总会等慈善组织及全市民众 ■ 用户规模 全市近30家慈善组织&#…

【网络安全】漏洞案例:提升 Self-XSS 危害

未经许可,不得转载。 文章目录 Self-XSS-1Self-XSS-2Self-XSS-1 目标应用程序为某在线商店,在其注册页面的First Name字段中注入XSS Payload: 注册成功,但当我尝试登录我的帐户时,我得到了403 Forbidden,即无法登录我的帐户。 我很好奇为什么我无法登录我的帐户,所以我…

【unity框架开发起步】一些框架开发思维和工具类封装

文章目录 前言一、Editor操作二、快捷导出unity包三、快捷打开存储目录四、封装transform操作1、localPosition赋值简化2、封装修改transform.localPosition X Y Z3、封装transform.localPosition XY、XZ 和YZ4、Transform 重置 五、封装概率函数六、方法过时七、partial 关键字…

STM32_实验2_printf函数重定向输出

掌握串口通信,并将 printf 函数重定向到串口输出。 USART1 global interrupt 的使能与不使能对系统的影响主要体现在如何处理串口通信事件上,如数据接收和发送的方式。这些不同的配置会直接影响系统的效率、响应时间以及资源的使用。 配置printf函数使用…