1 OSI七层模型与TCP/IP四层模型的理论基础
数据通信的过程可以用两种模型来描述。OSI七层模型将通信过程分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。物理层定义了电气特性和物理规范,数据链路层负责相邻节点间的通信,网络层处理路由和转发,传输层提供端到端的通信。会话层、表示层和应用层处理应用程序相关的功能。
TCP/IP四层模型是OSI模型在实际应用中的简化版本。网络接口层对应物理层和数据链路层,网络层处理IP协议,传输层包括TCP和UDP,应用层包括HTTP、SMTP、DNS等协议。TCP/IP模型更贴近现代互联网的实际情况。
数据在网络中传输时会经历一个封装过程。在发送端,应用层数据被添加应用层头部,传输层添加TCP/UDP头部,网络层添加IP头部,数据链路层添加MAC头部和校验信息,最后物理层将其转换为比特流发送出去。在接收端,每一层都会去掉相应的头部,提取有用的数据,最终应用层获得完整的原始数据。这个过程称为解封装。
2 TCP与UDP协议的特性差异与选型指导
TCP(传输控制协议)提供面向连接、可靠的字节流传输。在数据传输前,TCP需要建立连接(三次握手),在传输结束后需要释放连接(四次挥手)。TCP保证数据的完整性和顺序性,丢失的数据会被重新发送。这使得TCP适合对数据准确性要求高的应用,如文件传输、电子邮件和Web浏览。
但TCP的这些特性也带来了额外的开销。连接建立需要时间,数据重传在网络不稳定时会产生显著的延迟。特别是在丢包率升高时,TCP的重传机制会导致延迟急剧增加。在网络延迟为30ms、丢包率为1%的情况下,TCP的实时性表现已经明显受影响,超过300ms的延迟比例会超过2%,这对于实时交互应用来说是不可接受的。
UDP(用户数据报协议)是无连接的、不可靠的数据报协议。UDP不需要建立连接,直接发送数据报。UDP不保证数据的送达顺序,也不进行丢包重传。这意味着UDP的传输速度快,延迟低,但可能丢失数据。UDP适合对延迟敏感但能容忍一定数据丢失的应用。
3 游戏场景下的网络协议选择与优化
游戏行业对网络协议的选择有深刻的理解。回合制游戏如斗地主、梦幻西游等,由于同时只有一个玩家操作,无数据竞争,即便延迟达到500ms到1000ms也能正常进行。这类游戏可以使用TCP或甚至HTTP协议。MMORPG采用状态同步算法,以属性养成和装备获取为重点,对延迟的容忍度相对较高,通常要求延迟在300ms以下。
MOBA类游戏(如王者荣耀、LOL)和FPS游戏(如绝地求生、CS:GO)对延迟的要求最严苛。这类游戏多使用帧同步算法,竞技性高,对响应延迟的要求极高。业界经验表明,当延迟超过150ms时,MOBA游戏开始出现明显卡顿;当延迟超过250ms时,会对玩家操作造成较大影响,游戏公平性受损;当延迟超过300ms时,游戏基本无法进行。因此这类游戏通常采用UDP协议。
王者荣耀和乱斗西游的通信协议就是基于UDP封装的。FPS游戏采用UDP加自定义应用层协议,配合小包高频率设计。即使在网络不稳定的情况下,UDP配合应用层的选择性重传机制,能将丢包产生的延迟控制在50ms以内。这比TCP在丢包时的表现(延迟升高到1000ms以上)要好得多。
游戏类型 同步算法 对延迟容忍度 推荐协议 延迟限制
回合制游戏 状态同步 极高 TCP/HTTP 500-1000ms
MMORPG 状态同步 中等 TCP 300ms以下
MOBA游戏 帧同步 极低 UDP 150-250ms
FPS游戏 帧同步 极低 UDP 100ms以内
————————————————
版权声明:本文为CSDN博主「智算菩萨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nmdbbzcl/article/details/157651580