协议方案决定端口
Coddy 使用终端进行网络通信 课程的第 39 课,共 47 课。
http:// 和 https:// 的区别不止一个字母。方案决定两件事:使用哪个默认端口,80 还是 443,以及在发送任何内容之前是否启动 TLS 握手。
这个握手是最先发生的事,早于任何请求行的写入。双方会就加密方式达成一致,服务器会出示其证书。只有在此之后,你熟悉的 HTTP 才会通过加密通道发送。
所以,端口要么使用 TLS 通信,要么不使用 TLS 通信。在纯 HTTP 端口请求 https://,不会有礼貌的回退处理:握手会立即失败,curl 会报告退出代码 35,即 SSL 连接错误。
这一点值得注意,因为服务器看起来像是宕机了,实际上它正通过只差一个协议的普通 HTTP 正常提供服务。
挑战
困难向普通 HTTP 服务器请求 TLS,看看它如何拒绝。
- 用常见方式在端口 9129 上提供一个文件夹,也就是使用普通 HTTP
- 请求
https://127.0.0.1:9129/,并打印tls=,后面跟上 curl 的退出代码
预期输出:
tls=3535 是 curl 表示 SSL 连接错误的代码。
亲手试试
终端
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
使用终端进行网络通信中的所有课
自己练习: Terminal 在线编辑器