马上:网络故障排查的思路和方法
馬上:網絡故障排查的思路和方法
安卓日常開發工作中,總會遇上些網絡問題需要排查清楚。比如我遇上了,線上app網絡狀態是良好的,但是上傳日志失敗、接口404但公司網絡能請求成功200、直播推流失敗、耗流量大、MQTT連接異常…
基本網絡知識
-
了解網絡通信的基礎設備和其對應的OSI層次
- 最基本的網絡設備交換機、三層交換機、路由器、防火墻。
- OSI七層模型中的數據鏈路層、網絡層等
- TCP/IP五層和四層網絡模型
-
網絡的基本架構
- 網絡組網的經典模型,接入層-匯聚層-核心層-出口層 (中小型企業網絡)
- 如我了解的學校接入網一般為大二層和三層組網兩種模式
網絡排錯基本思路
- 檢查物理鏈路是否有問題 (就是網線,網口,網卡,WIFI,路由器,這個很好排查,對比一下正常的)
- 檢查本機IP地址、路由、DNS、網關、子網掩碼、DHCP或靜態IP設置是否有問題
- 檢查ping公網ip的通暢情況 如(114.114.114.114)
- 檢查DNS的通暢情況,可以直接ping網站,但是有些網站限制ping
需要注意:關注數據走向,必須先檢測網絡物理鏈路,設備的網卡,網線(檢查水晶頭、網線的連接、網線的質量),設備連接的交換機和路由器
基本網絡命令
網絡命令有很多,這里只是提及Android7.12下的常用命令,如跟蹤路由命令window的tracert和mac的traceroute,arp等命令不細說
ping 命令,太常見了!top1
ping 網關地址或局域網已知IP,是否有響應判斷設備是否聯通,否可以使用arp命令 ping 公網IP 如114.114.114.114,能通,能基本說明網絡是沒有問題的(考慮防火墻)ifconfig命令用于顯示或設置網絡設備。windows的是ipconfig
arp 命令 是Address Resolution Protocol,地址解析協議,是通過解析網絡層地址來找尋數據鏈路層地址的一個網絡協議包中極其重要的網絡傳輸協議。
busybox arp -a //android 需要安裝busybox或使用termux,windows,mac,linux都自帶nslookup 查詢DNS的記錄,查看域名解析是否正常. 如果ping網站地址不通的話,就需要進行dns檢查。
#安卓上沒有 nslookup baidu.com 或nslookup交互方式 nslookup baidu.com 114.114.114.114 指定DNS服務器關于DNS記錄的type,A 地址記錄(直接查詢默認類型IPV4),AAAA 地址記錄(IPV6),CNAME等
dig 也是查詢DNS的流行神器
#安卓需要使用termux dig @8.8.8.8 baidu.comnetstat命令用于顯示各種網絡相關信息
netstatDisplay networking information. -r Display routing table. -a Display all sockets (Default: Connected). -l Display listening server sockets. -t Display TCP sockets. -u Display UDP sockets. -w Display Raw sockets. -x Display Unix sockets. -e Display other/more information. -n Don't resolve names. -W Wide Display. -p Display PID/Program name for sockets.iftop — 網絡帶寬監控
iftopDisplayRx Tx name MTU bytes packets errs drpd bytes packets errs drpd lo 65536 131644 249 0 0 131644 249 0 0 eth0 1500 8016 107 0 0 124234 136 0 0線上案例分析
某地區的安卓發起直播失敗
Android7.12系統, app 通過推流sdk發起直播,觀看識別==推流失敗,回撈日志sdk確實是推流時鏈接失敗。
由于sdk只能提示鏈接失敗,需要進一步排查
先排查設備的網絡是否聯通公網,是否能ping通推流地址,這里使用的是阿里云rtmp,默認端口1935,windows telnet命令.或者在線網站檢測端口是否開放。防火墻沒問題!進行下一步
同一網絡下直播推流工具對比:
安卓:sdk推流失敗
安卓:FFmpeg推流失敗,有具體的錯誤信息:RTMP handshake response 失敗
PC:FFmpeg 推流直播成功;
PC:sdk 推流直播成功;
工具問題不大,同一網絡下直播推流運營商對比:
安卓:sdk&FFmpeg推流阿里云失敗
安卓:sdk&FFmpeg推流騰訊云成功
PC:sdk&FFmpeg推流阿里云成功;
PC:sdk&FFmpeg推流騰訊云成功
結論:TMD太奇怪了,讓平臺同事配置騰訊云的流地址來用
某地方訪問業務接口404, 公司網絡能訪問
由于公司服務器禁止ping, 所以排查方式,先直接喊用戶打開瀏覽器,輸入域名官網web地址,結果也是404 , 排查了DNS設置無問題。找運維看,結果說服務器已經返回200,TMD。
由于沒電腦,app運行智能終端上,那定位一下問題所在,解決問題吧。前面確定了設備的DNS,8.8.8.8,常用DNS服務器,訪問其它網站是歐凱的。這里我猜測是DNS解析出了問題。我通過 IP/IPv6查詢,服務器地址查詢 得到IP地址,通過IP地址打開網站,發現是歐凱的,那就是域名DNS問題交給運維去解決。在解決問題的過程中我去了解JAVA、安卓的DNS底層實現。這里不具體展開,查看我的另一博文記錄。Android DNS解析過程
耗流量大
要用抓包工具來分析,Wireshark工具,charles 工具,安卓上的抓包精靈,VNET 等工具。
結果分析, 平臺業務數據有缺陷,img地址的文件是視頻文件,導致圖片框架加載失敗,不斷重試。
MQTT異常
Wireshark工具,抓包發現, 握手(CONNACK) ,服務器并沒有返回CONNACK消息作為響應,導致超時斷連。
參考網站
ipv6test
test-ipv6
一文看懂網絡七層協議/OSI七層模型
cloudflare&DNS
diggui
windows & linux dig download
ping & net
MQTT心跳
mqtt
總結
以上是生活随笔為你收集整理的马上:网络故障排查的思路和方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么保存html,怎么保存整个网页,教你
- 下一篇: 新能源汽车制造商Captain Tech