为什么所有开发人员都应该学习如何执行基本的网络故障排除
无论你从事前端还是后端工作,我认为所有开发人员都应该掌握一些网络故障排除技能。如果你倾向于底层系统编程,这一点尤其重要。
排除网络和系统故障的能力是优秀开发人员与卓越开发人员之间的区别。优秀的开发人员不仅了解代码抽象,还了解 TCP/IP 模型:
来源:https ://www.guru99.com/tcp-ip-model.html
一些基本的网络故障排除技能
如果您刚刚进入网络领域,那么您应该将以下一些基本工具添加到您的工具带中:
- 执行 DNS 查询(例如
dig
或nslookup
命令) - 发送 ICMP 回显请求,测试端到端 IP 连通性(即
ping
命令) - 分析各个网络跳数(即
traceroute X.X.X.X
) - 检查是否可以建立 TCP 套接字连接(例如
telnet X.X.X.X [port]
) - 测试应用层(即
curl https://somedomain
) - 执行数据包捕获(例如
tcpdump -i any
)以及在线路上发送的位
我的浏览器连接到哪个 IP 地址?
% dig dev.to
; <<>> DiG 9.10.6 <<>> dev.to
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39029
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;dev.to. IN A
;; ANSWER SECTION:
dev.to. 268 IN A 151.101.2.217
dev.to. 268 IN A 151.101.66.217
dev.to. 268 IN A 151.101.130.217
dev.to. 268 IN A 151.101.194.217
Web 服务器是否正在监听 HTTP 端口?
% telnet 151.101.2.217 443
Trying 151.101.2.217...
Connected to 151.101.2.217.
Escape character is '^]'.
上述每种工具都可以帮助您隔离连接问题。例如,如果您的客户端收到 HTTP 5XX 错误,您可以立即排除任何 TCP 级别问题。也就是说,您无需使用其他工具telnet
来检查是否存在防火墙问题或服务器是否在正确的套接字上监听:服务器已经发送了应用程序级别的响应。
概括
了解有关网络堆栈的更多信息有助于您快速查明和隔离问题:
- 这是我的客户端应用程序吗?
- 防火墙是否阻止了某些端口?
- 网络是否存在暂时性问题?
- 服务器是否已启动并正在运行?
让我们进一步讨论网络工程和软件开发
如果您想了解如何从前端开发转向后端开发,或从后端开发转向低级系统编程,请在 Twitter 上联系我:@memattchung
文章来源:https://dev.to/memattchung/why-all-developers-should-learn-how-to-perform-basic-network-troubleshooting-2ihj