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