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

发布于:2025-06-29 ⋅ 阅读:(14) ⋅ 点赞:(0)

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

一、网络协议概述

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

二、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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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


网站公告

今日签到

点亮在社区的每一天
去签到