应用层协议很多,但考试集中在 DNS 和 HTTP,其余只要记住用哪个端口、基于 TCP 还是 UDP。
这一章只要会:
DNS 用 UDP,端口 53。
"你帮我查到底。"被问的服务器如果不知道,就替你去问下一个,最后把结果交给你。
提问的一方只发 1 次请求。
"你告诉我该去问谁。"被问的服务器如果不知道,就回答下一个该问的服务器地址,你自己再去问。
提问的一方要发很多次请求。
本地域名服务器没有缓存,采用递归方式解析另一个网络中某主机的域名。用户主机和本地域名服务器各发出几条域名请求?
所有域名服务器都用迭代查询。解析 www.abc.xyz.com 时,本地域名服务器发出的查询次数最少和最多各是几次?
HTTP 基于 TCP,端口 80。它本身是无状态的,服务器不记得你是谁,所以才需要 Cookie。
| 连接方式 | 做法 | 1 个网页文件 + 3 张图片(忽略传输时间) |
|---|---|---|
| 非持久连接 | 每取一个对象都重新建立一次 TCP 连接 | 4 × 2 = 8 个 RTT |
| 持久连接,非流水线 | 连接建好后一直用。收到上一个响应才能发下一个请求 | 2 + 3 × 1 = 5 个 RTT |
| 持久连接,流水线 | 连接建好后一直用。可以连续发出多个请求 | 2 + 1 = 3 个 RTT |
HTTP/1.1 默认使用持久连接。做题前先看清三件事:是哪种连接方式;要不要加 DNS 查询的时间;图片和网页是不是在同一台服务器上。
Connection: keep-alive 表示持久连接,close 表示用完就关2xx 成功,如 200 OK3xx 重定向,如 301 永久移动4xx 客户端错误,如 404 找不到5xx 服务器错误| 应用层协议 | 用途 | 传输层 | 端口 |
|---|---|---|---|
| FTP | 文件传输 | TCP | 21 控制,20 数据 |
| TELNET | 远程登录 | TCP | 23 |
| SMTP | 发送邮件 | TCP | 25 |
| DNS | 域名解析 | UDP | 53 |
| DHCP | 自动分配地址 | UDP | 67 服务器,68 客户 |
| HTTP | 万维网 | TCP | 80 |
| POP3 | 读取邮件 | TCP | 110 |
| HTTPS | 加密的万维网 | TCP | 443 |
记法:要求"一个字节都不能错"的用 TCP;"一问一答、越快越好"的用 UDP。
DNS 和 DHCP。其余三个都基于 TCP。
浏览器到服务器是 HTTP,服务器到服务器是 SMTP。