【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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!