计算机网络-传输层:UDP协议

简介: 计算机网络-传输层:UDP协议

一、概述


传输层:负责两端之间的数据传输;TCP&UDP协议。


二、UDP协议


1.协议格式


image.png


16位源端端口&16位对端端口:


       描述通信两端(谁发送的,谁处理)


16位数据报长度:


       描述报文长度(包含头部在内),限制udp报文必须小于64k;


       sendto发送数据时,能够发送的最大数据大小(64k-8);


16位校验和:


       用于校验接收到的数据是否与对方发送的数据一致:


       校验方法:二进制反码求和算法


       1)发送方将报文组织完毕后,将校验和字段置为0;


       2)从第0字节开始(包含头部),对每个字节进行取反,然后求和;


       3)若求和过程中,数据大小超过16位,则截断,将高位与低16位继续求和;


       4)最终得到2字节的校验和数据,然后填充到校验和字段中,发送数据;


       5)接收方收到数据,同样对数据进行二进制反码求和,最终得到结果0;


       若收到的数据与发送的数据不一致,则udp会将该数据丢弃。


2.协议特性


协议特性:无连接,不可靠,面向数据报


2.1无连接


       通信的时候,不需要建立连接,只要知道对方地址就可以发送数据。


2.2不可靠


       不保证数据能够安全到达对端;也不保证数据有序到达对端。


2.3面向数据报


       无连接,不可靠,有固定最大长度限制的传输方式,必须小于64k。


3.编程影响


       1.udp不保证数据安全到达对端,可能存在丢包问题。


       2.udp不保证数据有序到达对端。


       所以需要程序员在应用层进行丢包检测以及丢包重传,以及鲍旭管理;


       3.udp面向数据报有固定最大长度限制64k(数据长度64k-8)。


       所以sendto发送数据时,需要注意给予的数据不能太大,太大则需要分包,分包则需要进行包序管理。


       4.udp要求数据整条交付,不能交付半条或多条。


       所以程序员recvfrom接收数据的时候,缓冲区需要足够大,以保证能够获取一条完整数据;


相关文章
|
9天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
46 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
|
12天前
|
缓存 算法 物联网
基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量
本系统基于MATLAB 2017b,对AODV与LEACH自组网进行了升级仿真,新增运动节点路由测试,修正丢包率统计。AODV是一种按需路由协议,结合DSDV和DSR,支持动态路由。程序包含参数设置、消息收发等功能模块,通过GUI界面配置节点数量、仿真时间和路由协议等参数,并计算网络性能指标。 该代码实现了节点能量管理、簇头选举、路由发现等功能,并统计了网络性能指标。
133 73
|
9天前
|
监控 网络协议 网络性能优化
如何办理支持UDP协议的网络
在当今网络环境中,UDP(用户数据报协议)因传输速度快、延迟低而广泛应用于在线游戏、视频流媒体、VoIP等实时服务。本文详细介绍了办理支持UDP协议网络的方法,包括了解UDP应用场景、选择合适的ISP及网络套餐、购买支持UDP的设备并进行优化设置,以及解决常见问题的策略,帮助用户确保网络稳定性和速度满足实际需求。
|
9天前
|
网络协议 网络安全 网络架构
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
分布式基础-网络通信协议讲解
|
12天前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
53 3
|
13天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
28 2
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
|
9天前
|
安全 算法 网络安全
无线网络中的WEP协议及其安全性问题
无线网络中的WEP协议及其安全性问题
25 0
|
14天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
33 0
下一篇
无影云桌面