网络与服务器
知识覆盖
- 计算机网络
- 服务端编程
- 游戏同步模式
计算机网络
自底向上 5层协议结构
物理层:中继器,集线器
链路层:网桥,交换机。封装成帧
网络层:路由器,网关,IP。ARP/RARP/DHCP
> 默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包
运输层:IP+端口+差错检测
TCP/UDP/KCP
首部,确认重传机制,流量控制(滑动窗口)和拥塞控制
可靠数据传输原理
可靠数据传输一般提供 面向连接 服务,通常使用 序号和确认机制,发送方 超时重传机制,缓存机制,传输错误检验机制,协议包括 停止等待协议,连续重传协议(包括 GBN回退N步和SR选择性重传)
三次握手
客: SYN -> 服: ACK -> 客: ACK
为什么要三次握手?
避免因某次报文丢失,造成客户端或服务端一直等待
如果采用两次握手,服Ack丢失,则客户端一直等待连接建立,而服务端认为已建立连接
如果采用两次握手,客Syn延迟到达,则服务端难以区别客户端到底对应哪一次连接
四次挥手
客: FIN -> 服: ACK->服: FIN -> 客: ACK
Ack时数据还未发完,Fin时服务端不再发送数据,客户端还可以再发。四次挥手这样设计能保证服务器与客户端都能完全的接受对方发送的数据
Time_Wait状态:保证client发送的最后一个确认报文段能够到达server
应用层:DNS,VPS,Sockets
服务端编程
二进制串
定义protocol
异步sockets
消息列表msgList
粘包分包(lock)


位置同步
rpc框架
线程模型
大小端模式
Linux
游戏同步模式
现在主流是用状态同步,各方面优势更明显,好复现、网络好优化,适用于各种RPG类游戏
强动作类、竞技类游戏还是建议用帧同步
FPS游戏处理状态同步的时序和一致性都卡点半天