【计算机网络 】传输层——UDP

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

传输层

传输层概念

在学习HTTP等应用层协议时,为了便于理解,可以简单的认为HTTP协议是将请求和响应直接发送到了网络当中。但实际应用层需要先将数据交给传输层,由传输层对数据做进一步处理后再将数据继续向下进行交付,该过程贯穿整个网络协议栈,最终才能将数据发送到网络当中。

传输层负责可靠性传输,确保数据能够可靠地传送到目标地址。为了方便理解,在学习传输层协议时也可以简单的认为传输层协议是将数据直接发送到了网络当中。

再谈端口号

端口号(Port)标识一个主机上进行网络通信的不同的应用程序。当主机从网络中获取到数据后,需要自底向上进行数据的交付,而这个数据最终应该交给上层的哪个应用处理程序,就是由该数据当中的目的端口号来决定的。

从网络中获取的数据在进行向上交付时,在传输层就会提取出该数据对应的目的端口号,进而确定该数据应该交付给当前主机上的哪一个服务进程。

【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议
因此端口号是属于传输层的概念的,在传输层协议的报头当中就会包含与端口相关的字段。

在TCP/IP协议中,用“源IP地址”,“源端口号”,“目的IP地址”,“目的端口号”,“协议号”这样一个五元组来标识一个通信。

服务器就是通过“源IP地址”,“源端口号”,“目的IP地址”,“目的端口号”,“协议号”来识别一个通信的。

  • 先提取出数据当中的目的IP地址和目的端口号,确定该数据是发送给当前服务进程的。
  • 然后提取出数据当中的协议号,为该数据提供对应类型的服务。
  • 最后提取出数据当中的源IP地址和源端口号,将其作为响应数据的目的IP地址和目的端口号,将响应结果发送给对应的客户端进程
    【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议
    通过netstat命令可以查看到这样的五元组信息。
    -n:拒绝显示别名,能显示数字的全部转换成数字。
    -l:仅列出处于LISTEN(监听)状态的服务。
    -p:显示建立相关链接的程序名。
    -t(tcp):仅显示tcp相关的选项。
    -u(udp):仅显示udp相关的选项。
    -a(all):显示所有的选项,默认不显示LISTEN相关。
    【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议
    其中的Local Address表示的就是源IP地址和源端口号,Foreign Address表示的就是目的IP地址和目的端口号,而Proto表示的就是协议类型。

协议号和端口号

协议号是存在于IP报头当中的,其长度是8位。协议号指明了数据报所携带的数据是使用的何种协议,以便让目的主机的IP层知道应该将该数据交付给传输层的哪个协议进行处理。

端口号是存在于UDP和TCP报头当中的,其长度是16位。端口号的作用是唯一标识一台主机上的某个进程。

端口号区域

端口号的长度是16位,因此端口号的范围是0 ~ 65535:

0 ~ 1023:知名端口号。比如HTTP,FTP,SSH等这些广为使用的应用层协议,它们的端口号都是固定的。

1024 ~ 65535:操作系统动态分配的端口号。客户端程序的端口号就是由操作系统从这个范围分配的。

常见端口号

有些服务器是非常常用的,这些服务器的端口号一般都是固定的:

  • ssh服务器,使用22端口。
  • ftp服务器,使用21端口。
  • telnet服务器,使用23端口。
  • http服务器,使用80端口。
  • https服务器,使用443端口。

我们可以查看/etc/services文件,该文件是记录网络服务名和它们对应使用的端口号及协议。
【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议

pidof

pidof命令可以通过进程名,查看进程id。
【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议

pidof命令可以配合kill命令快速杀死一个进程。
【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议

UDP

UDP (User Datagram Protocol) 是在 OSI 七层模型中的传输层上的一种协议。它和 TCP 类似是用来传输数据的,但是 UDP 更加简单、高效、灵活,适用于对数据传输速度要求较高,但对可靠性要求不高的场景,例如游戏、音频、视频等实时通讯场景。

网络套接字编程时用到的各种接口,是位于应用层和传输层之间的一层系统调用接口,这些接口是系统提供的,我们可以通过这些接口搭建上层应用,比如HTTP。我们经常说HTTP是基于TCP的,实际就是因为HTTP在TCP套接字编程上搭建的。

而socket接口往下的传输层实际就是由操作系统管理的,因此UDP是属于内核当中的,是操作系统本身协议栈自带的,其代码不是由上层用户编写的,UDP的所有功能都是由操作系统完成,因此网络也是操作系统的一部分。

UDP协议格式

【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议

  • 16位源端口号:表示数据从哪里来。
  • 16位目的端口号:表示数据要到哪里去。
  • 16位UDP长度:表示整个数据报(UDP首部+UDP数据)的长度。
  • 16位UDP检验和:如果UDP报文的检验和出错,就会直接将报文丢弃。

我们在应用层看到的端口号大部分都是16位的,其根本原因就是因为传输层协议当中的端口号就是16位的。

我们在学习协议的时候通常要弄清楚两个问题

问题1:UDP如何将报头和有效载荷进行分离?

UDP的报头当中只包含四个字段,每个字段的长度都是16位,总共8字节。因此UDP采用的实际上是一种定长报头,UDP在读取报文时读取完前8个字节后剩下的就都是有效载荷了。

问题2:UDP如何决定将有效载荷交付给上层的哪一个协议?

UDP上层也有很多应用层协议,因此UDP必须想办法将有效载荷交给对应的上层协议,也就是交给应用层对应的进程。

应用层的每一个网络进程都会绑定一个端口号,服务端进程必须显示绑定一个端口号,客户端进程则是由系统动态绑定的一个端口号。UDP就是通过报头当中的目的端口号来找到对应的应用层进程的。

报头的数据结构其实就是结构体
【计算机网络 】传输层——UDP,计算机网络,计算机网络,udp,网络协议

UDP数据封装:

当应用层将数据交给传输层后,在传输层就会创建一个UDP报头类型的变量,然后填充报头当中的各个字段,此时就得到了一个UDP报头。

此时操作系统再在内核当中开辟一块空间,将UDP报头和有效载荷拷贝到一起,此时就形成了UDP报文。

UDP协议的特点

UDP传输的过程就类似于寄信,其特点如下:

  • 无连接:知道对端的IP和端口号就直接进行数据传输,不需要建立连接。
  • 不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。
  • 面向数据报:不能够灵活的控制读写数据的次数和数量。
  • 无序性:UDP 协议是无序的,发送的数据可能会经过不同的路径到达目标地址,因此接收方可能无法按照发送顺序对数据进行组装。

面向数据报:应用层交给UDP多长的报文,UDP就原样发送,既不会拆分,也不会合并,这就叫做面向数据报。

UDP的缓冲区

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

接收缓冲区的作用

如果UDP没有接收缓冲区,那么就要求上层及时将UDP获取到的报文读取上去,如果一个报文在UDP没有被读取,那么此时UDP从底层获取上来的报文数据就会被迫丢弃。

一个报文从一台主机传输到另一台主机,在传输过程中会消耗主机资源和网络资源。如果UDP收到一个报文后仅仅因为上次收到的报文没有被上层读取,而被迫丢弃一个可能并没有错误的报文,这就是在浪费主机资源和网络资源。

因此UDP本身是会维护一个接收缓冲区的,当有新的UDP报文到来时就会把这个报文放到接收缓冲区当中,此时上层在读数据的时就直接从这个接收缓冲区当中进行读取就行了,而如果UDP接收缓冲区当中没有数据那上层在读取时就会被阻塞。因此UDP的接收缓冲区的作用就是,将接收到的报文暂时的保存起来,供上层读取。

UDP传输数据注意事项

需要注意的是,UDP协议报头当中的UDP最大长度是16位的,因此一个UDP报文的最大长度是64K(包含UDP报头的大小)。

然而64K在当今的互联网环境下,是一个非常小的数字。如果需要传输的数据超过64K,就需要在应用层进行手动分包,多次发送,并在接收端进行手动拼装。文章来源地址https://www.toymoban.com/news/detail-738539.html

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

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

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

相关文章

  • 计算机网络——18无连接传输UDP

    “尽力而为的”服务,报文段可能 丢失 送到应用进程的报文段乱序 无连接 UDP发送端和接收端之间没有握手 每个UDP报文段都被独立的处理 UDP被用于 流媒体 DNS SNMP 在UDP上实现可靠传输 在应用层增加可靠性 应用特定的差错格式 为什么要有UDP 不建立连接(会增加延时) 简单:

    2024年02月20日
    浏览(30)
  • 【计算机网络篇】UDP协议

    ✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了一种简单的、不可靠的数据传输服务。 UDP 提供了不面向连接的通信,且不对传送的数据报进行可靠的保证,

    2024年02月12日
    浏览(32)
  • 【计算机网络】UDP协议概述

    UDP协议(User Datagram Protocol,用户数据报协议):面向无连接的协议,不保证可靠性,但是具有较低的延迟和更快的传输速度,常用于实时音视频传输、广播和多播等场景。 基于数据报文 :UDP把应用层提交给它的数据报文,添加上UDP首部后传输,每个UDP数据报的大小不能超过

    2024年02月06日
    浏览(43)
  • 【计算机网络】UDP协议详解

    目录 前言       端口号的拓展 端口号范围划分 netstat pidof UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议     我们前面讲完了 http和https协议 ,它们都属于 应用层 ,按照TCP/IP五层模型,我们下一层该讲解 传输层 了。传输层又

    2024年02月09日
    浏览(56)
  • 计算机网络——第四层:传输层以及TCP UDP

            连接模式的传输。         保证按顺序传送数据包。         流量控制、错误检测和在数据包丢失时的重传。         用于需要可靠传输的应用,如网络(HTTP/HTTPS)、电子邮件(SMTP, IMAP, POP3)和文件传输(FTP)。         数据报模式。        

    2024年01月21日
    浏览(52)
  • 【计算机网络】UDP/TCP协议

    我们先来看一张图; 在研究UDP前我们先来回答两个问题: 有效载荷如何与报头分离? 如何将有效载荷交付? 第一个问题由于在报头里面有16位UDP长度(表示的是有效载荷+报头长度),而报头长度8字节是固定的,所以分离时我们只需要用整个报文的大小减去固定的8字节报头数据即

    2024年02月08日
    浏览(50)
  • 【计算机网络】UDP/TCP 协议

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

    2024年03月14日
    浏览(47)
  • 【计算机网络】UDP协议与TCP协议

    端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 服务器的同一个服务会使用多进程或者多线程的方式,对于不同的客户端请

    2024年01月25日
    浏览(44)
  • [计算机网络] 实验3 UDP协议分析

    实验目的 掌握运输层 UDP 协议内容 理解 UDP 协议的工作原理 了解应用层和运输层协议的关系 实验内容 1.DNS查询UDP数据分析 要求 : 使用 t c p d u m p tcpdump t c p d u m p 抓取 D N S DNS D N S 查询网络通信数据包,利用 w i r e s h a r k wireshark w i r e s h a r k 分析 U D P UDP U D P 数据 例如 : d i

    2023年04月26日
    浏览(34)
  • 【计算机网络】TCP协议与UDP协议详解

    文章目录 一、传输层 1、1 再次理解传输层 1、2 再次理解端口号 1、2、1 端口号范围划分 1、2、2 认识知名端口号 1、3 网络常用指令netstat 与 pidof 二、UDP协议 2、1 UDP协议的报文 2、2 UDP的特点  2、3 UDP的缓冲区 三、TCP协议 3、1 TCP协议的报文 3、2 确认应答 3、3 按序到达 3、

    2024年02月08日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包