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

【unity游戏开发——网络】网络协议、TCP vs UDP 本质区别

注意:考虑到热更新的内容比较多,我将热更新的内容分开,并全部整合放在【unity游戏开发——网络】专栏里,感兴趣的小伙伴可以前往逐一查看学习。

文章目录

  • 一、网络协议概述
  • 二、OSI七层模型
  • 三、TCP/IP四层模型
  • 四、核心传输协议对比
    • 1、TCP vs UDP 本质区别
    • 2、TCP关键机制详解
      • 2.1 三次握手建立连接
      • 2.2 四次挥手断开连接
  • 五、常见面试题精要
  • 六、总结
    • 1、TCP:
    • 2、UDP:
  • 专栏推荐
  • 完结

一、网络协议概述

网络协议类似设备间通信的“交通规则”。就像寄快递需要填写地址、遵守运输流程一样,网络通信必须遵循统一规则才能准确传递数据。

二、OSI七层模型

  • 定位:国际通用的网络通信“设计蓝图”,将复杂通信过程拆解为7个专业层级。
层级核心功能生活类比
应用层为软件提供网络接口(如浏览器)寄件人填写快递单
表示层数据翻译/加密(如格式转换)将中文地址翻译成英文
会话层管理通信对话(连接保持/恢复)快递员确认收件人在家
传输层端到端连接管理(加入端口号)分配快递运输车辆
网络层寻址和路由(加入IP地址)规划跨省运输路线
数据链路层物理设备寻址(加入MAC地址)分配本地配送员
物理层比特流传输(光缆/网线)卡车在公路上实际运输
  • 关键价值:分层设计使各层专注特定功能,下层服务上层,如同快递的“揽件->分拣->干线运输->配送”流程。

三、TCP/IP四层模型

  • 定位:基于OSI理论的实际通信规则,互联网真实运行的协议体系。
TCP/IP层级对应OSI层核心协议
应用层应用层+表示层+会话层HTTP/FTP/DNS
传输层传输层TCP/UDP
网络层网络层IP
网络接口层数据链路层+物理层Ethernet/Wi-Fi
  • 工作流程:
    • 发送端:数据从上到下逐层包装(加头部信息)→ 接收端:从下到上逐层拆包
  • 示例:网页请求 → HTTP头(应用层) + TCP头(端口) + IP头(地址) + MAC头(设备)

四、核心传输协议对比

1、TCP vs UDP 本质区别

特性TCP(可靠传输)UDP(高效传输)
连接方式需建立连接(三次握手)无连接,直接发送
可靠性保序、重传、不丢包可能丢包、乱序
传输效率速度较慢(需确认机制)速度极快(无额外开销)
连接数量仅支持1对1通信支持1对多、多对多广播
适用场景网页/文件传输/游戏存档直播/语音通话/竞技游戏实时操作

在这里插入图片描述

2、TCP关键机制详解

2.1 三次握手建立连接

  • 客户端→服务端:发送连接请求(SYN)

  • 服务端→客户端:回复同意连接(SYN+ACK)

  • 客户端→服务端:确认连接(ACK)

类比:打电话确认对方在线

  • A:“听得到吗?”

  • B:“能听到,你呢?”

  • A:“我也能听到,开始说话吧”

2.2 四次挥手断开连接

  • 客户端→服务端:请求断开(FIN)

  • 服务端→客户端:确认收到(ACK)

  • 服务端→客户端:发完剩余数据后断开(FIN)

  • 客户端→服务端:最终确认(ACK)

类比:礼貌结束通话

  • A:“我说完了,你还有事吗?”

  • B:“稍等,我还有最后一件事…”

  • B:“我也说完了,挂吧”

  • A:“好的,挂了”

五、常见面试题精要

  • TCP为什么需要三次握手?

防止已失效的连接请求突然传到服务器导致资源浪费(避免“僵尸连接”)

  • UDP如何实现可靠传输?

需在应用层添加重传/排序机制(如QUIC协议)

  • HTTP属于哪一层?

应用层协议(基于TCP实现)

六、总结

1、TCP:

  • 更可靠,保证数据的正确性和有序性(三次握手四次挥手)
  • 适合对信息准确性要求高,效率要求较低的使用场景
  • 比如:文件传输、用户登录、支付交易等等

2、UDP:

  • 更效率,传输更快,资源消耗更少
  • 适合对实时性要求高的使用场景
  • 比如:技能同步、直播推流、即时通讯等等

专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】
【unity游戏开发——编辑器扩展】
【unity游戏开发——热更新】
【unity游戏开发——网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

http://www.lqws.cn/news/561043.html

相关文章:

  • 第九节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 菜单管理(上)
  • AI间对话APK制成
  • Centos 8设置固定IP
  • STM32中Usart的使用
  • WordPress最新版6.8.1安装教程
  • 前缀和 + 哈希表
  • NV046NV060美光固态闪存NV061NV063
  • 从用户到权限:解密 AWS IAM Identity Center 的授权之道
  • Linux更改国内镜像源
  • ZooKeeper深度面试指南三
  • Hadoop集群异常:两个NameNode全部为StandBy状态
  • 【中文核心期刊推荐】《计算机工程与设计》
  • linux学习第26天(信号集)
  • llm 基本案例实现
  • 从OCR瓶颈到结构化理解来有效提升RAG的效果
  • C++ - 浅看vector源码
  • SpringBoot -- 以 jar 包运行(以及常见错误分析)
  • HarmonyOS NEXT仓颉开发语言实战案例:动态广场
  • Java面试题030:一文深入了解MySQL(2)
  • SpringMVC系列(六)(Restful架构风格(中))
  • Python助力自动驾驶:深度学习模型优化全攻略
  • 什么是 PoS(权益证明)
  • 如何用VS Code、Sublime Text开发51单片机
  • uni-app subPackages 分包加载:优化应用性能的利器
  • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
  • IDEA2024.3 tomcat需要按两次停止按钮停止问题
  • 区块链使用那些技术?
  • 太速科技-670-3U VPX PCIe桥扩展3路M.2高速存储模块
  • Linux测试是否能联网
  • 大事件项目记录8-文章分类接口开发-文章分类列表