传输层协议--UDP

这篇具有很好参考价值的文章主要介绍了传输层协议--UDP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引入

传输层负责数据能够从发送端传输到接收端。

端口号(Port)

端口号标识了一个主机上进行通信的一个进程。

两个问题:

1. 一个进程可以绑定多个端口号吗?--可以

2.一个端口号可以绑定多个进程吗?--不可以

我们需要维护的是一个端口号唯一确定一个进程,这关系好比函数(一个x只能唯一确定一个y才是函数关系,但是y可以对应多个x,y=x²是函数,但是y²=x不是函数),一个端口号只能绑定一个进程,一个进程却可以绑定多个端口号

netstat指令

用来查看网络状况的重要工具

传输层协议--UDP,网络,udp,网络,网络协议

进程的标准输入VS命令行参数

pidof HttpServer | xargs kill -9

xargs 的作用: 将标准输入的内容转化为命令行参数 (HttpServer是程序名称)

传输层协议--UDP,网络,udp,网络,网络协议

上面是一些引入的知识,方便后面介绍使用

UDP的协议格式

传输层协议--UDP,网络,udp,网络,网络协议

几乎任何协议都要解决2个问题:

1 . 如何分离(封装) 2. 如何交付(解包) 

1. 如何分离?

UDP是固定长度的报头,可以直接将报头和有效载荷分离

2. 如何交付

根据报头中的16位端口号,进行向上交付(进程绑定了端口号)

传输层协议--UDP,网络,udp,网络,网络协议   1. 为什么我们在应用层编写代码时候,每一次写端口号的时候,都喜欢用 uint16_t ?

                 2.UDP是如何提取整个报文的? 

传输层协议--UDP,网络,udp,网络,网络协议  1. 因为协议用的是端口号是16位的;

                 2.  UDP具有将报文一个一个正确接受的能力的,UDP是面向数据报的,通过固定长度的报头可以获取到16位udp长度

理解报文本身

首先,我们有一个很基本的认识,操作系统的底层大部分都是C语言写的。报文在不同主机间通过网络交流传输,肯定是有大量的报文的,那OS该怎么管理他们呢?C++以及java语言的学习者,可能很容易想到类,对象之类的东西,但是 OS的底层主要是 C语言,C是用的什么呢? --结构体

struct udp_hdr
{
    uint32_t src_port:16;    //源端口号
    uint32_t dst_port:16;    //目的端口号 
    uint32_t udp_len:16;     //UDP长度
    uint32_t udp_check:16;   //udp 检验和
}

这个  : 大家有没有一点熟悉,对,位断 ,有想要进一步了解这方面知识的uu移步 :

https://blog.csdn.net/qq_59293418/article/details/122667301?sp

UDP的特点

无连接

不可靠

首先,我想强调的一点是,这里的不可靠并不是一个贬义词,和生活场景是不一样的。UDP不可靠的同时也确保了其简单和高效,像现在很多直播,视频平台就喜欢用UDP协议,其简单高效已于维护,即使是偶尔出现掉帧(数据包丢失等)情况,也是在大多数人可以接受的范围内的。

面向数据报

深入理解 IO类接口

之前写UDP或者TCP的相关代码时候经常会使用到 read/write/sendto/recvfrom/recv/send这些IO类接口。很容易以为这些函数是负责和网络交互的,其实不然,我们通过下面这个图简单分析以下

传输层协议--UDP,网络,udp,网络,网络协议

传输层协议--UDP,网络,udp,网络,网络协议什么时候发送数据,发送多少数据,发送出错了怎么办?

传输层协议--UDP,网络,udp,网络,网络协议 不用焦虑,这些问题OS会处理的,UDP不用负责这些。

所以,我们有了这个结论: 这些IO类接口本质的工作是将内容从用户层拷贝到内核层,至于接下来的发送系类的事就安心交给OS就好了,他们本身也只是 拷贝函数

UDP的全双工VS半双工
 

UDP的缓冲区

UDP本身没有真正意义上的发送缓冲区,他只管发送,不处理出错的问题,

但UDP具有接收缓冲区,所以UDP的socket既能读又能写,这叫全双工

怎么直观理解全双工和半双工呢

在平常的正常人际交流中,我们通常是比较客气绅士的,两个人说话会等对方说完,确认听清和理解后给出反应(这就是半双工),但是当我们有了冲突矛盾,说话也没有那么客气了,也不在乎别人说什么,这个时候大家都在说话,吵吵闹闹的状态(全双工)。

简单来说: 全双工既在输出,也在接收,半双工只能进行单一的输出或者输入文章来源地址https://www.toymoban.com/news/detail-704845.html

到了这里,关于传输层协议--UDP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络-传输层(UDP协议报文格式,伪首部,UDP校验过程)

    UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。 UDP的主要特点: UDP是无连接的,减少开销和发送数据之前的时延。 UDP使用最大努力交付,即不保证可靠交付。 UDP是面向报文的,适合一次性传输少量数据的网终应用。 应用层给UDP多长的报文,UDP就照样

    2023年04月25日
    浏览(34)
  • 网络原理(四):传输层协议 TCP/UDP

    目录 应用层 传输层 udp 协议  端口号 报文长度(udp 长度) 校验和 TCP 协议 确认应答 超时重传 链接管理 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 总结 我们第一章让我们对网络有了一个初步认识,第二章和第三章我们通过代码感受了网络通信程序。 而本章的 通信原

    2023年04月27日
    浏览(43)
  • 网络传输层协议:UDP和TCP

    端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在TCP/IP协议中, 用 \\\"源IP\\\", \\\"源端口号\\\", \\\"目的IP\\\", \\\"目的端口号\\\", \\\"协议号\\\" 这样一个五元组来标识一个通信(可以通过 netstat -n查看);  0 - 1023: 知名端口号, HTTP, FTP, SSH 比特科技 等这些广为使用的应用层协议, 他们的端口号

    2024年02月15日
    浏览(40)
  • 网络传输层协议详解(TCP/UDP)

    目录 一、TCP协议 1.1、TCP协议段格式  1.2、TCP原理  确认应答机制 超时重传机制 (安全机制) 连接管理机制(安全机制)  滑动窗口  流量控制(安全机制)  拥塞控制  延迟应答(效率机制) 捎带应答(效率机制)  ​编辑面向字节流(粘包问题)  缓冲区  TCP异常情况  二、UDP协议

    2024年02月06日
    浏览(46)
  • 计算机网络笔记:TCP协议 和UDP协议(传输层)

    TCP 和 UDP都是传输层协议,他们都属于TCP/IP协议族。 TCP的全称是 传输控制协议 是一种 面向连接的、可靠的、基于字节流 的 传输层 通信协议。TCP 是面向连接的、可靠的流协议(流就是指不间断的数据结构) TCP报文 是TCP层传输的数据单元,也称为 报文段 ,一个TCP报文段由

    2024年02月02日
    浏览(39)
  • 【JavaEE】网络原理——传输层协议:UDP和TCP

    目录 1、简单了解应用层协议 2、传输层UDP协议 3、传输层TCP协议  3.1、TCP报文介绍 3.2、TCP实现可靠传输的核心机制 3.2.1、确认应答 3.2.2、超时重传  3.3、连接管理 (三次挥手,四次握手) 3.3.1、建立连接(三次握手) 3.3.2、断开连接(四次挥手)  3.4、滑动窗口  3.5、流量

    2024年02月10日
    浏览(69)
  • 网络基础二——传输层协议UDP与TCP

    ​ 传输层协议有UDP协议、TCP协议等; ​ 两个远端机器通过 使用\\\"源IP\\\",“源端口号”,“目的IP”,“目的端口号”,\\\"协议号\\\"来标识一次通信 ; 9.1端口号的划分 ​ 0-1023:知名端口号,HTTP,HTTPS,FTP,SSH等应用层协议,他们的端口号都是固定的;如:ssh使用的是22号端口,

    2024年04月12日
    浏览(31)
  • 「网络编程」传输层协议_ UDP协议学习_及原理深入理解

    「前言」文章内容大致是传输层协议,UDP协议讲解。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) HTTP协议普通用户认为是将请求和响应直接发送到了网络当中。但实际应用层需要先将数据交给传输层,由传输层对数据做进一步处理后再将数据继续向下

    2024年02月17日
    浏览(32)
  • 【网络编程】深入了解UDP协议:快速数据传输的利器

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,请在评论区指

    2024年02月09日
    浏览(38)
  • 【网络】传输层——UDP | TCP(协议格式&&确认应答&&超时重传&&连接管理)

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 现在是传输层,在应用层中的报文(报头 + 有效载荷)就不能被叫做报文了,而是叫做 数据段 (报头 + 有效载荷),传输层的有效载荷就是应用层的完整报文。 端口号(port):标识了一个主机上

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包