Menu
CoddyTech

读懂失败信息

Coddy 使用终端进行网络通信 课程的第 46 课,共 47 课。

把整门课程的内容整合成一种方法。如果某处无法连接,你需要从少数几种原因中判断是哪一种,而每种原因都有明显的特征。

  • 名称未能解析。连接尚未开始就立即失败。通过查询进行检查。
  • 没有程序在监听。连接立即被拒绝,curl 退出码为 7。
  • 流量被丢弃。连接一直挂起,然后以退出码 28 结束。
  • 该端口不支持 TLS。退出码为 35。
  • 连接成功。现在查看状态码:4xx 表示问题出在你的请求,5xx 表示问题出在对方。

其中两种情况的区别在于失败需要多长时间,所以留意失败是立即发生还是一直挂起,比看任何错误消息都更有用。

从堆栈底部开始向上处理:名称,然后是机器,然后是端口,然后是服务,最后是响应。

challenge icon

挑战

专家

生成三种不同的失败,并用各自的退出代码标记。

在没有任何服务器运行的情况下,打印:

  1. refused: 以及来自 http://127.0.0.1:9999/ 的代码
  2. dropped: 以及来自 http://10.255.255.1/ 的代码,时间限制为 2 秒
  3. notls: 以及来自 https://127.0.0.1:9999/ 的代码

预期输出:

refused: 7
dropped: 28
notls: 7

第三种情况值得思考:如果完全没有程序在监听,连接会在尝试 TLS 之前就被拒绝。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器