Files
examination/topics/networking/http-handshake/single_choice.json
T

211 lines
6.4 KiB
JSON
Raw Normal View History

{
"topic": "http-handshake",
"type": "single_choice",
"schema_version": "1.0.0",
"generated": "2026-09-02T21:20:00+08:00",
"questions": [
{
"id": "sc-001",
"type": "single_choice",
"difficulty": 2,
"tags": [
"TCP",
"三次握手"
],
"question": "TCP 三次握手中,第一次握手客户端发送的标志位是什么?",
"options": {
"A": "SYN",
"B": "ACK",
"C": "FIN",
"D": "RST"
},
"answer": "A",
"explanation": "第一次握手客户端发送 SYN(Synchronize)标志,表示发起连接请求。ACK 是确认标志,FIN 是结束连接标志,RST 是重置连接标志。",
"source": null,
"related": []
},
{
"id": "sc-002",
"type": "single_choice",
"difficulty": 3,
"tags": [
"TLS",
"HTTPS",
"握手"
],
"question": "TLS 1.2 的握手需要多少个 RTT(往返)?",
"options": {
"A": "0-RTT",
"B": "1-RTT",
"C": "2-RTT",
"D": "3-RTT"
},
"answer": "C",
"explanation": "TLS 1.2 需要 2-RTT 完成密钥协商。TLS 1.3 优化到 1-RTT,TLS 1.3 的 0-RTT 恢复可以在恢复会话时做到 0-RTT。",
"source": null,
"related": []
},
{
"id": "sc-003",
"type": "single_choice",
"difficulty": 2,
"tags": [
"HTTP/1.x",
"应用层握手"
],
"question": "HTTP/1.0 和 HTTP/1.1 有应用层握手吗?",
"options": {
"A": "有,通过 OPTIONS 请求",
"B": "有,通过 GET 请求",
"C": "没有,TCP 连上后直接发请求",
"D": "有,通过 SETTINGS 帧"
},
"answer": "C",
"explanation": "HTTP/1.0 和 HTTP/1.1 没有应用层握手。TCP 连接建立后,TLS 握手完成后,客户端直接发送 HTTP 请求。SETTINGS 帧是 HTTP/2 的特性。",
"source": null,
"related": []
},
{
"id": "sc-004",
"type": "single_choice",
"difficulty": 3,
"tags": [
"HTTP/2",
"SETTINGS"
],
"question": "HTTP/2 的 SETTINGS 交换发生在哪个层?",
"options": {
"A": "传输层",
"B": "安全层",
"C": "应用层",
"D": "物理层"
},
"answer": "C",
"explanation": "HTTP/2 的 SETTINGS 交换发生在应用层,双方通过 SETTINGS 帧协商 HTTP 协议参数(如最大并发流数、窗口大小等)。它不是传输层的 TCP 握手。",
"source": null,
"related": []
},
{
"id": "sc-005",
"type": "single_choice",
"difficulty": 4,
"tags": [
"HTTP/3",
"QUIC"
],
"question": "HTTP/3 基于 QUIC 协议,QUIC 运行在什么之上?",
"options": {
"A": "TCP",
"B": "UDP",
"C": "ICMP",
"D": "SCTP"
},
"answer": "B",
"explanation": "QUIC 运行在 UDP 之上,它把传输层握手和 TLS 1.3 握手合二为一。首次连接只需 1-RTT,恢复连接可达 0-RTT。",
"source": null,
"related": []
},
{
"id": "sc-006",
"type": "single_choice",
"difficulty": 2,
"tags": [
"TCP",
"三次握手"
],
"question": "TCP 三次握手的本质目的是什么?",
"options": {
"A": "分配端口号",
"B": "双方各确认一次收发能力",
"C": "协商传输速率",
"D": "加密数据"
},
"answer": "B",
"explanation": "三次握手的本质是双方各确认一次收发能力,确保连接可靠。客户端确认自己能发能收,服务器确认自己能发能收。",
"source": null,
"related": []
},
{
"id": "sc-007",
"type": "single_choice",
"difficulty": 3,
"tags": [
"TLS",
"HTTPS",
"重放攻击"
],
"question": "TLS 1.3 的 0-RTT 恢复存在什么安全风险?",
"options": {
"A": "中间人攻击",
"B": "重放攻击",
"C": "DDoS 攻击",
"D": "SQL 注入"
},
"answer": "B",
"explanation": "0-RTT 恢复虽然快,但存在重放攻击风险。0-RTT 发送的数据不能保证幂等性,因此不适合做敏感操作(如支付)。",
"source": null,
"related": []
},
{
"id": "sc-008",
"type": "single_choice",
"difficulty": 4,
"tags": [
"TCP",
"三次握手"
],
"question": "为什么 TCP 握手是三次而不是两次?",
"options": {
"A": "三次握手更快",
"B": "两次握手无法防止已失效的连接请求到达服务器",
"C": "三次握手更安全",
"D": "三次握手节省带宽"
},
"answer": "B",
"explanation": "两次握手无法防止已失效的连接请求到达服务器。如果客户端的旧 SYN 延迟到达,服务器会误以为是新请求并建立连接,白白浪费资源。三次握手让客户端有最后一次确认的机会。",
"source": null,
"related": []
},
{
"id": "sc-009",
"type": "single_choice",
"difficulty": 3,
"tags": [
"TLS",
"HTTPS"
],
"question": "TLS 握手完成的三件事不包括以下哪项?",
"options": {
"A": "证书验证",
"B": "密钥协商",
"C": "加密套件确定",
"D": "IP 地址分配"
},
"answer": "D",
"explanation": "TLS 握手完成的事包括:证书验证(确认服务器身份)、密钥协商(生成对称加密密钥)、加密套件确定(双方商定使用的加密算法)。IP 地址分配是 DHCP 的工作。",
"source": null,
"related": []
},
{
"id": "sc-010",
"type": "single_choice",
"difficulty": 4,
"tags": [
"HTTP/3",
"QUIC",
"TCP"
],
"question": "HTTP/3 相比 HTTP/2 解决了 TCP 的什么问题?",
"options": {
"A": "带宽不足",
"B": "队头阻塞",
"C": "加密不够",
"D": "连接数限制"
},
"answer": "B",
"explanation": "HTTP/3 基于 QUIC 解决了 TCP 的队头阻塞问题——单个流丢包不影响其他流。HTTP/2 虽然有多路复用,但底层 TCP 的队头阻塞仍然存在。",
"source": null,
"related": []
}
]
}