前言
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 連接,確保雙方數據全部傳輸完畢。