当前位置: 首页 > news >正文

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

目录

  • 一、端口号
    • 1.1 端口号范围划分
    • 1.2 认识知名端口号
  • 二、UDP协议
    • 2.1 UDP协议端格式
    • 2.2 UDP的特点
    • 2.3 UDP的缓冲区
    • 2.4 UDP使用注意事项
    • 2.5 基于UDP的应用层协议

一、端口号

传输层协议负责数据的传输,从发送端到接收端。端口号标识一个主机上进行通信的不同的应用程序。IP+端口号就能确定互联网中的唯一进程。

1.1 端口号范围划分

  • 0 - 1023:知名端口号, HTTP、 FTP、 SSH 等这些广为使用的应用层协议, 他们的端口号都是固定的
  • 1024 - 65535:操作系统动态分配的端口号。客户端程序的端口号, 就是由操作系统从这个范围分配的

1.2 认识知名端口号

有些服务器是非常常用的,为了使用方便,人们约定一些常用的服务器,都是用以下这些固定的端口号

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

可使用下面的指令查看知名端口号:

cat /etc/services

两个问题:
一个进程是否可以 bind 多个端口号?

可以,一个进程可以有多个服务,比如tcp、udp,两个分别有各自的端口号,可以找到对应的客户端。

一个端口号是否可以被多个进程 bind?

不能,因为端口号是用来确定一个主机上的唯一一个进程,如果可以被多个进程绑定,就不具有唯一性。

二、UDP协议

2.1 UDP协议端格式

在这里插入图片描述

  • 报头:源端口号、目的端口号、UDP长度、UDP检验和
  • 16 位 UDP 长度,表示整个数据报(UDP 首部+UDP 数据)的最大长度
  • 如果校验和出错,就会直接丢弃

2.2 UDP的特点

  1. 无连接:知道对端的 IP 和端口号就直接进行传输,不需要建立连接
  2. 不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP 协议层也不会给应用层返回任何错误信息
  3. 面向数据报:不能够灵活的控制读写数据的次数和数量

面向数据报:应用层给多少,UDP发送多少,既不会拆分,也不会合并。

2.3 UDP的缓冲区

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

2.4 UDP使用注意事项

  • UDP 协议首部中有一个16 位的最大长度,也就是说一个UDP能传输的数据最大长度是 64K
  • 如果我们需要传输的数据超过 64K,就需要在应用层手动的分包,多次发送,并在接收端手动拼装

2.5 基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

也包括用户自己写UDP程序时自定义的应用层协议


http://www.mrgr.cn/news/31020.html

相关文章:

  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • HTTP 客户端怎么向 Spring Cloud Sleuth 传输跟踪 ID
  • CAN总线位同步的使用以及总线仲裁规则详解
  • 宋浩《线性代数》知识点卡
  • arm 汇编技巧
  • 如何在vscode中安装git详细新手教程
  • 【Elasticsearch】-图片向量化存储
  • 个人小结(2.0)
  • vue2中字符串动态拼接字段给到接口
  • Android 增加宏开关控制android.bp
  • 推荐五种msvcr71.dll丢失的解决方法,msvcr71.dll为什么会丢失?
  • 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步
  • 数据库的char 和 varchar 有什么不同
  • java(2)方法的使用
  • ubuntu下使用qt编译QOCI(libqsqloci.so)驱动详解及测试
  • 三维手势 handpose 3D RGB 手势3D建模 三维建模-手势舞 >> DataBall
  • VSCode开发ros程序无法智能提示的解决方法(一)
  • 苹果M4 MacBook Air被曝2025Q1发布 屏幕面板10月出货
  • 实例讲解电动汽车钥匙Start上下电控制策略及Simulink建模方法
  • 程序员如何提升核心竞争力并应对技术变革》
  • 希亦超声波清洗机值得购买吗?百元清洁技术之王,大揭秘!
  • java基础概念23-接口
  • webpack4 target:“electron-renderer“ 打包加速配置
  • XHTML学习
  • 组题能力研判:基于教师上传试卷的深度分析
  • 使用systemctl实现开机自启动jar包