【网络】传输层协议UDP

news/2024/12/5 19:08:10/

之前我们已经把应用层http协议说完了,我们知道一些优秀的应用层协议会绑定知名端口号,就是说它们的端口号默认是固定的,比如http是80,https是443,ssh是22等,我们也可以通过查看下面的文件来查看知名端口号

cat /etc/services

并且我们还要知道端口号到进程是唯一的,就是说,一个进程可以绑定多个端口号,但是一个端口号只能被一个进程绑定

下面我们正式进入UDP

UDP 全称用户数据报协议(User Datagram Protocol)

下面是UDP的报文格式

我们说传输层协议是操作系统的一部分,所谓的协议在C语言中不过是结构体,我们可以在Linux内核源代码中看到相关结构体定义

也就是说报头占8个字节,这里的16位UDP长度指的是报头+正文的总长度(字节),16位表示的最大的数是2^16-1,也就是说UDP一次发送的报文长度是64kb-1,如果一次发送的数据超过这么多,sendto就会调用失败

一个很关键的问题就是UDP如何解包和分用,解包其实就是通过16位UDP长度,这个长度减去报头的八个字节其实就是报文的长度

并且根据目的端口号就可以向上交付给应用层的某个进程,如何通过端口号找到相对应的进程呢?我们可以认为OS为我们维护一张hash表,表中存着端口号到进程PCB的映射关系

UDP没有发送缓冲区,并且它也不需要,调用sendto时数据会直接交给内核,内核将数据交给下面的网络层进行后续的传输动作

但是UDP是有接收缓冲区的,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;并且如果缓冲区满了,再到达的UDP数据就会被丢弃

这也就是为什么UDP是不可靠的,当然我们不能把它看成一种缺点,而是一种特点,因为不可靠也就决定了它是比较简单的;如果要添加可靠性,那协议就会复杂,这样的协议叫做TCP

UDP的特点:

无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接

不可靠:没有确认机制,没有重传机制;如果因为网络故障没有把信息发到对方,UDP协议层不会给应用层返回任何错误信息

面向数据报:发送方如何发,接收方就要如何收(调用多少次write,就要调用多少次read),不能够灵活的控制读写数据的次数和数量


http://www.ppmy.cn/news/1543765.html

相关文章

软考高级架构 - 7.3 - 软件架构风格 - 超详细讲解+精简总结

7.3 - 软件架构风格 软件体系结构设计的一个重要目的就是架构复用, 也就是不同的软件系统使用同一架构。复用的好处是节约时间、提高效率、减少开发风险。 大类名称子类名称特点应用场景优点缺点调用/返回风格主程序/子程序风格单线程、过程调用、层次性传统过程式…

金山WPS文档在线编辑

背景:vue项目,同一个页面存在多个编辑器场景。 按照往常一样,将编辑器封装成组件然后在页面引入,只能显示最后渲染的一个编辑器,前面渲染的都会消失。尝试过直接用iframe指向文档地址,不用金山提供的jdk还…

metasploit/modules/evasion 有哪些模块,以及具体使用案例

Metasploit框架的evasion模块用于生成绕过安全检测的有效载荷。以下是一些常见的evasion模块及其使用案例: 1. 通用Evasion模块 windows/meterpreter/reverse_tcp_rc4:使用RC4加密的反向TCP Meterpreter会话。 set PAYLOAD windows/meterpreter/reverse…

[QUIC] Packets 和 Frames 概述

Packets 和 Frames 概述 受保护的数据包 (Protected Packets) 基于不同的包类型, QUIC 使用不同等级的保护机制. Version Negotoation 包不受保护. Retry 包使用 AEAD 进行保护。 Initial 包使用 AEAD 进行保护, 但是使用的 Key 是由一个网络可见的值计算出来的。 因此 Ini…

无需手动部署的正式版comfyUI是否就此收费?开源等同免费?

​ ​ 关于ComfyUI的正式版是否会收费的问题是很多AI玩家都关心的问题。 一旦ComfyUI正式版发布,我们是否需要为它买单?不再开源 同时这也引出了一个核心问题:开源究竟等不等于免费? ComfyUI正式版到底是什么?它会收…

IO流--13--RandomAccessFile

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 RandomAccessFile1.简介2.RandomAccessFile的作用有哪些?3.RandomAccessFile类有两个构造器:3.常用API介绍 RandomAccessFile 案例环境搭建1…

计算机网络:网络层 —— IP数据报的发送和转发过程

文章目录 IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报示例 IP数据报的发送和转发过程 IP 数据报的发送和转发过程包含以下两个过程: 主机发送IP数据报路由器转发IP数据报 直接交付:源主机与目的主机在同一网络中间接交付:…

奇瑞不客气智驾 晚不晚?

文/孔文清 一直很好奇: 尹同跃董事长的金句“智驾不客气”,应该怎么翻译成英语? 谷俊丽的演讲PPT给了我答案: All in Ai Cars ——全力以赴、全情投入智能化汽车。 谷俊丽是奇瑞全球创新大会上最兴奋的人之一,有一种闭…