传输层:UDP协议解析

news/2024/5/18 16:36:46 标签: UDP

UDP_0">UDP协议端格式

在这里插入图片描述

  • 16位源端端口、16位目的端端口:描述端与端之间的通信
  • 16位UDP长度:表示整个数据报(UDP首部+UDP数据)的最大长度,限制了UDP报文总长度(包含报头在内)不能超过64K
  • 16位校验和:使用二进制反码求和算法,校验接收的数据与发送的数据是否一致
    二进制反码求和算法:对报文从头开始每个字节进行取反相加,高出16位则截断高位,再与低16位继续相加,得到校验和

UDP_7">UDP的特点

  • 无连接:不需要建立连接,只要知道对端的地址信息就可以直接发送数据
  • 不可靠UDP在传输层不保证数据可以安全有序的到达对端,需要程序员在应用层进行包序管理
  • 面向数据报:不能够灵活的控制读写数据的次数和数量。是一种有最大长度限制的传输方式,取决于数据报长度字段,因为长度字段只有16位,因此数据报总长度不能超过64K,也就是说sendto接口给予的数据长度不能大于64K-8(报头占8个字节)。因此若要传输的数据比较大,则需要程序员在应用层进行分包操作,并且进行包序管理。

UDP_12">UDP的缓冲区

UDP通信在报头中确定了数据报的长度,因此UDP数据的传输是整条收发的
发送:sendto给与的数据放到发送缓冲区后就会直接封装头部,进行发送
接收:recvfrom总是只能接收一条完整的数据,而不会出现接收半条或者多条的情况

因此recvfrom给与的缓冲区一定要足够大,若给与的缓冲区大小小于一条数据的长度,则recvfrom就会报错,因为UDP无法交付半条数据。

  • UDP没有真正意义上的发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输。
  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证接收到的UDP报文的顺序和发送UDP报文的顺序一致,如果缓冲区满了,后续到达的UDP数据就会被丢弃。

全双工:UDP的socket既能读也能写。

UDP_24">基于UDP的应用层协议

NFS:网络文件系统

大多数场景是工作在局域网当中的,在局域网当中NFS客户端和NFS服务端进行通信,通过UDP协议将NFS客户端的指令传递给NFS服务端,NFS服务端将指令传递给某个网络文件系统当中的主机,从而实现远端访问文件系统。

DHCP:动态主机配置协议

由于上网的机器特别多,ipv4版本的ip地址不够用,为了满足日益增长的上网需求。对上网的机器动态分配ip地址,谁连接才给谁分配ip地址,没有连接到网络当中的机器就不获取ip地址。DHCP协议是通过UDP广播来获取ip地址的。


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

相关文章

python-特殊的数

特殊的数(10分) 题目内容: 一个特殊的正整数,它加上150后是一个完全平方数,再加上136又是一个完全平方数,求符合条件的最小的一个数。 输入格式: 无需输入 输出格式: 共一行,为一…

socket网络编程:UDP通信、TCP通信

本篇文章默认你对UDP协议和TCP协议已经理解掌握了:UDP协议详解、TCP协议详解 UDP网络通信编程 首先我们需要知道 UDP协议是传输层协议,面向数据报,无连接,不可靠传输,实时性高。 创建套接字:使进程与网…

python-大大的叉

大大的叉&#xff08;10分&#xff09; 题目内容&#xff1a; 打印出n阶的“叉”&#xff0c;这个叉图案由字符‘’和‘X’构成&#xff0c;n越大&#xff0c;这个图案也就越大 输入格式: 一个正整数n&#xff0c;1<n<20 输出格式&#xff1a; 一个n阶叉图案 输入样例…

应用层:HTTP协议解析

HTTP协议是超文本传输协议&#xff0c;规定了客户端&#xff08;浏览器&#xff09;和服务端之间的通信格式。 特点 基于请求响应模型默认端口&#xff1a;80无状态的&#xff0c;底层是TCP实现&#xff0c;所以是可靠的 基于请求响应模型就是指每一次业务过程都是客户端请求…

python-约瑟夫环问题

约瑟夫环问题&#xff08;10分&#xff09; 题目内容&#xff1a; 已知n个人&#xff08;以编号0&#xff0c;1&#xff0c;2&#xff0c;3...n-1分别表示&#xff09;围坐在一张圆桌周围。从编号为0的人开始报数1&#xff0c;数到m的那个人出列&#xff1b;他的下一个人又从…

HTTPS加密过程解析

在学习本篇文章之前&#xff0c;我默认你已经熟悉掌握&#xff1a;HTTP协议解析 在HTTP通信过程中&#xff0c;当我们使用Fiddler进行抓包&#xff0c;会发现我们在网页上输入的数据直接就是明文&#xff0c;我们的密码或者任何隐私的东西&#xff0c;都是"裸奔"在互…

python-求阶乘

求阶乘。&#xff08;10分&#xff09; 题目内容&#xff1a; 我们定义求n&#xff08;n为正整数且n<20&#xff09;的阶乘的函数为fact&#xff0c;给出程序主体如下&#xff1a; nint(input(""))print(fact(n)) 请补充完成对fact函数的定义。 输入格式: 共一…

网络层:IP协议(地址管理与路由选择)

IP协议端格式 4位版本&#xff1a;IPV4、IPV64位首部长度&#xff1a;标识IP报头有多长&#xff0c;以4字节为单位&#xff08;最小20字节&#xff0c;最大60字节&#xff09;8位服务类型&#xff1a;3位弃用、1位置0、4位TOS字段&#xff08;最大吞吐量、最小成本、最高可靠性…