Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

    • localhost和127.0.0.1的区别
    • udp端口和tcp端口可以相同吗
    • 子网掩码是什么
    • ip地址的分类
    • AB​​C类私有地址各有多少网络和主机
    • 网线的速度是光速吗
    • 网线的种类和速度
    • TCP的ESTABLISHED是什么意思
    • NAT分类
    • 按转发行为分类和按转换方式之间有什么关系
    • 有socket为什么还用websocket
  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

  • Kafka

  • 数据结构

  • 算法

  • OJ

  • 从道家哲学看计算机?
  • 后端
  • 计算机网络
plantre
2025-05-03

udp端口和tcp端口可以相同吗

是的,UDP 端口和 TCP 端口可以使用相同的端口号,且两者不会冲突。以下是具体解析:


1. 技术原理 • 协议独立性:

TCP 和 UDP 是传输层的两个独立协议,分别由内核中不同的模块处理。
• TCP:基于连接的可靠传输协议(如 HTTP、FTP)。

• UDP:无连接的不可靠传输协议(如 DNS 查询、实时视频流)。

数据包在 IP 层会根据包头中的协议号字段(TCP=6,UDP=17)被分配到对应的协议栈处理。
• 示例:TCP 的 80 端口(HTTP)和 UDP 的 80 端口(如自定义服务)可同时存在。

• 端口号空间独立:

操作系统为 TCP 和 UDP 分别维护独立的端口号池。例如:
• TCP 的 53 端口用于 DNS 区域传输;

• UDP 的 53 端口用于普通 DNS 查询。


2. 实际应用验证 • 代码示例:

若编写一个同时监听 TCP 和 UDP 8888 端口的服务程序,运行后可通过 netstat 命令观察到两者共存:

netstat -ano | findstr :8888
# 输出示例:
TCP   0.0.0.0:8888           0.0.0.0:0              LISTENING
UDP   0.0.0.0:8888           *:*
1
2
3
4

这表明 TCP 和 UDP 端口号 8888 已成功绑定。

• 常见场景:

DNS 服务:同时使用 UDP/53(快速查询)和 TCP/53(大数据量传输如区域同步)。


3. 绑定规则与限制 • 同一协议下端口唯一性:

• 在 TCP 内部或 UDP 内部,同一 IP 地址的相同端口号只能被一个进程绑定。

• 冲突示例:两个 TCP 进程绑定 0.0.0.0:80 会报错 Address already in use。

• IP 地址影响:

• 若绑定到不同 IP 地址(如 192.168.1.1:80 和 192.168.1.2:80),即使协议相同也可共存。


4. 特殊情况与注意事项 • 共享端口的潜在问题:

• 理论上可行,但实践中可能因编程框架或防火墙规则导致混淆,建议为不同协议分配不同端口以提高可维护性。

• 示例:某些 NAT 设备可能对 TCP/UDP 端口转发规则处理不一致。

• TIME_WAIT 状态影响:

TCP 连接关闭后处于 TIME_WAIT 状态(约 2MSL 时间),此时绑定相同 IP+端口会失败。可通过设置 SO_REUSEADDR 选项绕过限制。


总结

场景 是否允许 说明
TCP 与 UDP 同端口 ✅ 允许 协议栈独立,操作系统自动区分
同一协议下多进程同端口 ❌ 禁止 需不同 IP 或设置 SO_REUSEADDR
跨协议共享端口(如 DNS) ✅ 常见 优化服务设计,兼顾效率与可靠性

建议:在开发中优先遵循约定(如 HTTP 用 TCP/80),特殊需求再考虑端口复用,同时注意协议特性(可靠性 vs 实时性)。

编辑 (opens new window)
上次更新: 2025/06/10, 09:18:05
localhost和127.0.0.1的区别
子网掩码是什么

← localhost和127.0.0.1的区别 子网掩码是什么→

最近更新
01
集成loki
07-04
02
TCP的ESTABLISHED是什么意思
06-24
03
安装1panel
06-24
更多文章>
Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式