前言
ping是指數據從你的電腦傳到遊戲服務器再返回到你的電腦所用的時間,這段時間也被稱爲延遲,通常用毫秒(ms)來衡量。也就是說,延遲越低越好,即ping值越小越好。本篇文章將先介紹一些術語的含義,然後再圍繞對ping值的一些疑問展開解答。本文中會涉及很多計算機網絡的概念,讀者不要害怕,我會盡可能地用通俗易懂的語言來進行一一解釋,實在無法理解可以暫時跳過,不用刻意爲難自己。
帶寬(Bandwidth)
帶寬在計算機網絡中的定義是:用來表示通信線路所能傳送數據的能力,即在單位時間內從網絡中的某一點到另一點所能通過的最高數據率。(這裏如果用香農公式來進行解釋可能會更好,不過考慮到讀者的接受能力,這裏就不過度展開了)說人話就是把網絡線路想象成水管,把數據包想象成水,那麼水管的橫截面積在一定程度上(並非完全)決定了單位時間內能通過水量的大小。
延時(delay或latency)
延遲也就相當於水管中水的流速,在另一方面決定了單位時間內能通過水量的大小。延遲受多種因素影響,包括:機器配置、網絡穩定性、網絡速度等。但是可以簡單地抽象爲四個方面的延遲:發送延時、傳播延時、排隊延時、處理延時
發送延時:顧名思義就是主機或路由器發送分組所消耗的時間,也就是從發送分組的第一個比特開始,到該分組的最後一個比特發送完畢爲止所耗費的時間。
傳播延時:即是電磁波在鏈路(傳輸介質)上傳播一定的距離所耗費的時間。
排隊延時:當分組進入路由器後,會在路由器的輸入隊列中排隊緩存並等待處理。在路由器確定分組的轉發接口後,分組會在輸出隊列中排隊緩存並等待轉發。分組在路由器的輸入隊列和輸出隊列中排隊緩存所耗費的時間就是排隊延時。
處理延時:路由器對分組進行一系列處理工作所耗費的時間
ping命令
原理
Ping命令通過發送ICMP(Internet Control Message Protocol,互聯網控制消息協議)回顯請求消息到目標主機,並等待相應的回覆消息來判斷主機是否可達。說人話就是得到一個從一臺主機到另一臺主機再到這個臺主機的這個過程的時間,根據返回的結果可以初步判斷通信鏈路的質量,和主機的可訪問
性。
結果
以下是在命令行中使用ping命令的結果:
Ping請求的次數:表示發送了多少次Ping請求。
成功接收到的次數:表示成功接收到了多少次Ping回覆。
丟失的次數:表示丟失了多少次Ping回覆(即未收到回覆的次數),後面的百分數即稱爲丟包率。
往返時間:表示每次Ping請求從發送到接收到回覆所需的時間,通常以毫秒(ms)爲單位。通過往返時間可以判斷網絡連接的延遲情況。如果往返時間較長,可能表示網絡連接質量較差或存在網絡擁塞等問題。
TTL值:表示數據包的生存時間(Time To Live)。通過TTL值可以推算數據包通過了多少個路由器。不同的操作系統和路由器可能會設置不同的TTL值初始值和遞減規則。因此,TTL值也可以作爲判斷目標主機操作系統或路由器類型的一個參考依據。
也就是說,遊戲中的ping值即可簡單理解爲網絡延時。
延遲補償(Lag Compensation)
這是一種在網絡遊戲中用來減輕高延遲對玩家體驗影響的技術。其目的是儘可能地同步所有玩家的遊戲體驗,使他們感受到實時的交互,即使在網絡狀況不佳的情況下,也能保證遊戲的公平性和流暢性。
原理
延遲補償機制的工作原理主要基於服務器端對遊戲狀態的動態調整。具體來說,當玩家的動作(如射 擊、移動等)通過網絡傳輸到服務器時,服務器會考慮該玩家的網絡延遲,將服務器狀態回滾到該玩家動作執行前的時刻,再判斷該動作是否有效(如子彈是否命中目標)。這樣,即使玩家的客戶端因爲網絡延遲而顯示的是稍舊的遊戲狀態,服務器也能確保玩家看到的結果與服務器上的實際結果一致。
實現
服務器端回滾:服務器將遊戲狀態回滾到玩家動作執行前的時刻,再判斷該動作的有效性。這種方式可以確保玩家在客戶端看到的結果與服務器上的實際結果一致。
客戶端預測:雖然這不是延遲補償的直接實現方式,但它是與延遲補償相輔相成的一種技術。客戶端預測通過預先預測玩家動作影響下的遊戲狀態,從而減少因網絡延遲帶來的不一致性。然而,這種方式需要謹慎實現,以避免引入作弊的可能性。
插值運算:在客戶端和服務器之間的數據傳輸過程中,插值運算可以用於平滑過渡客戶端顯示的遊戲狀態,以減少因網絡延遲帶來的視覺抖動。
遊戲加速器是如何加速的?
首先我們要明確的概念就是,遊戲數據包在傳輸過程中會經過很多的節點來進行轉發。如果你感興趣可以試試在你電腦上的cmd命令行窗口輸入”tracert www.baidu.com“來查看你訪問百度官網會經歷哪些節點,如下圖所示:
而遊戲加速器的作用就是優化線路,減少中間需要經過的節點。這裏可以想象成使用導航軟件,有很多條線路,但是你選擇了最短最快的線路。
有意思的是,有些加速器廠商會和各大網絡運營商進行合作,進行專線傳輸。但是不幸的是,如果有過多的用戶的數據包通過捷徑傳輸,那麼這條所謂的“捷徑”上的數據包也會堵車,反而不如不用加速器。
不同延時的玩家如何一起遊戲?
遊戲客戶端很聰明,會預先加載一些可能的畫面,並繪製出來。在與服務器通信後,對繪製畫面進行校正,這也就是爲什麼你ping值很高時會有“瞬移”的現象。順帶說一句,這種機制就是FPS外掛目前無法完整識別出來的原因。數據在客戶端與服務器中的一來一回,導致了在遊戲中,我們始終是在與服務器裏 “投射”來的十幾毫秒前的敵人戰鬥。但是由於中間消耗時間太短,大腦根本無法反應過來。
詳細原理見上面提到的延遲補償機制
結語
通過這篇文章相信讀者對於ping有了一個深入的瞭解認識。讀者不用過度糾結其中的過程,在腦海裏有一個大致的印象即可。
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com