網絡丟包是我們在使用ping對目站進行詢問時,數據包由於各種原因在信道中丟失的現象。ping使用了ICMP回送請求與回送回答報文。ICMP回送請求報文是主機或路由器向一個特定的目的主機發出的詢問,收到此報文的機器必須給源主機發送ICMP回送回答報文。這種詢問報文用來測試目的站是否可到達以及了解其狀態。需要指出的是,ping是直接使用網絡層ICMP的一個例子,它沒有通過運輸層的UDP或TCP。
網絡丟包的原因主要有物理線路故障、設備故障、病毒攻擊、路由信息錯誤等,下面我們結合具體情況進行說明。
一、物理線路故障
廣域網線路時通時斷,發生這種情況時,有可能是線路出現故障,也可能是用戶方面的原因。為了分清是否是線路故障,可以做如下測試。
如果廣域網線路是通過路由器實現的,可以登錄到路由器,通過擴展ping向對端路由器廣域網接口發送大量的數據包進行測試。
如果線路是通過三層交換機實現,可在線路兩端分別接一台計算機,並將IP地址分別設為本端三層路由交換機的廣域網接口地址,使用“ping 對端計算機地址 -t”命令進行測試。
如果上述測試沒有發生丟包現象,則說明線路運營商提供的線路是好的,引起故障的原因在於用戶自身,需要進一步查找。
如果上述測試發生丟包現象,則說明故障是由線路供應商提供的線路引起的,需要與線路供應商聯系盡快解決問題。
由物理線路引起的丟包現象還有很多,如光纖連接問題,跳線沒有對准設備接口,雙絞線及RJ-45接頭有問題等。另外,通信線路受到隨機噪聲或者突發噪聲造成的數據報錯誤,射頻信號的干擾和信號的衰減等都可能造成數據包的丟失。我們可以借助網絡測試儀來檢查線路的質量。
二、網絡擁塞
網絡擁塞造成丟包率上升的原因很多,主要是路由器資源被大量占用造成的。
如果發現網速慢,並且丟包率呈現上升的情況,這時應該路由器流量表,一般情況下發現流量跑滿占用過多的資源。接下來可以適當的調整限速規則對網絡進行優化。
接下來查看是否有大量包進出的端口。一旦確認進入端口后,如果是攻擊,源地址會不斷變化但是目的地址不變,此時應通知相關網絡人員處理,最終解決辦法是停止攻擊源。
應用中遇到的造成網絡擁塞的情況還有很多,如大量的UDP流量、大量的組播流、廣播包穿越路由器,路由器配置了IP NAT並且有很多DNS包穿越路由器等。上述情況造成網絡擁塞后,通信雙方采取流量控制,丟棄不能傳輸的包。
三、路由錯誤
網絡路徑錯誤也會導致數據包不能到達目的主機,如主機的默認路由配置錯誤,主機發出的訪問其他網絡的數據包會被網關丟棄。但此類丟包屬於正常情況下的丟包,是意料之中的,不會對網絡造成影響。此類情況一般的家庭和小型辦公環境基本是不會遇到的。