前言
1、一款网络游戏分为客户端和服务端两个部分,客户端程序运行在用户的电脑或手机上,服务端程序运行在游戏运营商的服务器上。
2、客户端和服务端之间,服务端和服务端之间一般都是使用TCP网络通信。客户端和客户端之间通过服务端的消息转发进行通信。
3、强联网游戏和弱联网游戏
强联网游戏:这种游戏会频繁地和服务端进行通信,会一直和服务器保持连接状态,不停地和服务器之间交换数据。例如MMORPG、MOBA。
弱联网游戏:这种游戏不会频繁地进行数据通信,客户端和服务端之间每次连接只处理一次请求,服务端处理客户端请求后返回数据后就断开连接了。例如三消休闲游戏,卡牌游戏。
特性 | 强联网游戏 | 弱联网游戏 |
---|---|---|
连接方式 | 持久TCP/UDP连接 | 短时HTTP/HTTPS连接 |
通信频率 | 高频(10-60次/秒) | 低频(几分钟至几小时一次) |
数据传输量 | 大量实时状态数据(位置、动作等) | 少量业务数据(分数、道具等) |
同步机制 | 帧同步/状态同步 | 最终一致性同步 |
容错能力 | 要求快速断线重连 | 支持离线缓存后同步 |
4、
Socket(套接字):主要用来完成长连接网络游戏需求
HTTP(超文本传输协议):用于客户端(如浏览器)和服务器之间的网页数据传输(如 HTML、图片、视频)。
FTP(文件传输协议):用于在客户端和服务器之间上传/下载文件。
IP地址和端口号
IP地址和端口号是计算机网络中用于标识设备和服务的关键概念,它们共同确保数据准确传输到目标应用程序。
IP地址
作用:唯一标识网络中的设备(如电脑、服务器、手机等)。
类型:
-
IPv4:32位地址,格式为
192.168.1.1
(约42亿个地址,已接近枯竭)。 -
IPv6:128位地址,格式为
2001:0db8:85a3::8a2e:0370:7334
(解决IPv4不足的问题)。
分类:
-
公网IP:全球唯一,用于互联网通信(如谷歌的
8.8.8.8
)。 -
私网IP:局域网内使用(如
192.168.x.x
、10.x.x.x
),通过NAT转换访问公网。
端口号
作用:标识设备上的具体服务或应用程序(一台设备可运行多个服务)。
范围:16位数字(0-65535),分为三类:
-
知名端口(0-1023):预留给系统服务(如HTTP: 80、HTTPS: 443、SSH: 22)。
-
注册端口(1024-49151):分配给用户应用程序(如MySQL: 3306)。
-
动态端口(49152-65535):临时用于客户端连接。
补充
1、本地开发可以使用 localhost:3000
(localhost
指向本机IP 127.0.0.1
)。
2、为什么需要端口号?
IP地址只能定位设备,端口号进一步指定数据交给哪个应用程序处理。
3、端口号可以随意设置吗?
避免使用0-1023的知名端口(需管理员权限),通常选择1024以上的端口。
4、查看本机ip地址
在windows操作系统中打开命令提示符窗口,然后输入指令ipconfig查看本机的IP地址信息
快捷方式:运行窗口(win+R)-> 打开cmd -> ipconfig
5、可以通过送快递来理解IP地址和端口号:IP地址相当于居住小区的楼栋号地址,端口号相当于门牌号。只有知道了小区楼栋地址+门牌号才能准确地把快递送达。
TCP/IP协议
TCP/IP 协议概述
全称:Transmission Control Protocol / Internet Protocol。即传输控制/网络协议,也叫作网络通讯协议。
作用:提供可靠的、端到端的数据传输,确保数据在网络中正确路由和交付。
注意:TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等等协议构成的协议族 ,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP 四层模型
层级 | 功能 | 典型协议 |
---|---|---|
应用层 | 提供用户接口和网络服务 | HTTP、FTP、DNS、SMTP、SSH |
传输层 | 确保端到端的数据传输(可靠/不可靠) | TCP(可靠)、UDP(不可靠) |
网络层 | 负责寻址和路由(跨网络传输) | IP(IPv4/IPv6)、ICMP、ARP |
网络接口层 | 物理连接和帧传输(数据链路+物理) | Ethernet(以太网)、Wi-Fi、PPP |
总结
-
TCP/IP 是互联网的基石,涵盖应用层、传输层、网络层、网络接口层。
-
TCP 提供可靠传输,UDP 追求高效,IP 负责寻址和路由。
-
理解 TCP/IP 有助于诊断网络问题(如延迟、丢包)和优化应用设计。
TCP和UDP
TCP(传输控制协议)和 UDP(用户数据报协议)是 TCP/IP 协议族 中最核心的两个传输层协议,它们在数据传输方式、可靠性和应用场景上有显著区别:
1、TCP:是一种面向连接、可靠的、基于字节流的传输层通信协议。
2、UDP:是一种无连接的、不可靠、但传输效率较高的协议。
TCP
传输控制协议(Transmission Control Protocol)
特点:
1、面向连接:通信前需要通过三次握手建立连接;结束时通过四次挥手释放连接。
2、可靠传输:通过确认应答(ACK)、超时重传、流量控制保证数据完整。
3、有序交付:数据按发送顺序重组。
优点:
1、数据不丢失、不重复、按序到达。
2、适合对可靠性要求高的场景(如网页、文件传输)。
缺点:
1、建立连接和确认机制引入额外开销,延迟较高。
2、不适合实时性要求极高的应用(如视频会议)。
UDP
用户数据报协议(User Datagram Protocol)
特点:
1、无连接:直接发送数据,无需握手或断开连接。
2、不可靠传输:无确认、重传、流量控制机制,数据可能丢失或乱序。
3、高效低延迟:头部仅8个字节(TCP至少20个字节),传输开销小。
4、支持广播/多播:可同时向多个目标发送数据(如视频直播)。
优点:
1、传输速度快,实时性高。
2、适合对延迟敏感的应用。
缺点:
1、不保证数据完整性,可能丢包或乱序。
2、需应用层自行处理可靠性(如 QUIC 协议基于 UDP 实现可靠传输)。
对比
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接(三次握手) | 无连接 |
可靠性 | 可靠(确认+重传) | 不可靠 |
数据顺序 | 保证有序 | 不保证顺序 |
流量控制 | 滑动窗口机制 | 无 |
拥塞控制 | 有(慢启动、拥塞避免) | 无 |
头部大小 | 至少 20 字节 | 8 字节 |
传输效率 | 较低(延迟高) | 极高(延迟低) |
适用场景 | 网页、文件、邮件 | 视频、游戏、实时通信 |
三次握手和四次挥手
三次握手
Three-Way Handshake
流程 | 发送方 | 接收方 | 信息 |
第一次握手 | 客户端 | 服务端 | 客户端向服务端请求连接 |
第二次握手 | 服务端 | 客户端 | 服务端同意连接请求,并告知客户端 |
第三次握手 | 客户端 | 服务端 | 客户端开始连接操作 |
目的:在通信双方(客户端和服务端)之间建立可靠的 TCP 连接,同步初始序列号(ISN),确保双方都能正常收发数据。
为什么需要三次握手?
-
防止历史重复连接初始化:避免因网络延迟导致的旧连接请求突然到达,造成资源浪费。
-
同步双方初始序列号:确保双方都知道对方的起始序列号,保证数据有序传输。
-
双向确认:客户端和服务端均确认对方的收发能力正常。
四次挥手
Four-Way Handshake
流程 | 发送方 | 接收方 | 信息 |
第一次挥手 | 客户端 | 服务端 | 客户端告诉服务器数据已发完,如果还有消息就快发完,否则将要断开连接 |
第二次挥手 | 服务端 | 客户端 | 服务器接受第一次挥手的信息,告诉客户端继续等待 |
第三次挥手 | 服务端 | 客户端 | 服务器消息已发完,告诉客户端可以开始断开连接 |
第四次挥手 | 客户端 | 服务端 | 客户端接受到操作指令,等待一定一时间如果没有收到服务器回复就开始断开操作 |
目的:安全地释放 TCP 连接,确保双方数据全部传输完毕。