面试题答案
一键面试持久连接的实现
在HTTP/1.1中,默认开启持久连接。客户端和服务器在建立TCP连接后,可在该连接上发送多个HTTP请求 - 响应,而无需为每个请求都重新建立TCP连接。这样减少了TCP连接建立和关闭的开销,提升了性能。当客户端发送请求时,服务器处理完请求后不会立即关闭TCP连接,而是等待客户端发送下一个请求。客户端也可在同一个连接上继续发送新的请求。
相关HTTP头部字段及其作用
- Connection
- 作用:该字段用于控制当前连接的行为。在持久连接场景下,当客户端希望使用持久连接时,会在请求头中包含
Connection: keep - alive
。服务器如果支持持久连接,会在响应头中也包含Connection: keep - alive
。当一方想要关闭连接时,会发送Connection: close
。 - 示例:
- 请求头:
GET /index.html HTTP/1.1\r\nHost: example.com\r\nConnection: keep - alive\r\n
- 响应头:
HTTP/1.1 200 OK\r\nContent - Type: text/html\r\nConnection: keep - alive\r\n
- 请求头:
- 作用:该字段用于控制当前连接的行为。在持久连接场景下,当客户端希望使用持久连接时,会在请求头中包含
- Keep - Alive
- 作用:这个字段进一步对持久连接进行参数设置。它可以指定连接保持活跃的时间(以秒为单位)以及服务器愿意为该连接处理的请求数量。例如,
Keep - Alive: timeout=5, max=100
表示该持久连接在5秒内没有数据传输就会关闭,且服务器最多为该连接处理100个请求。不过,不同的服务器对这些参数的支持和实现可能有所差异。 - 示例:请求头或响应头中出现
Keep - Alive: timeout=10
,表示连接在10秒内若无数据传输则关闭。
- 作用:这个字段进一步对持久连接进行参数设置。它可以指定连接保持活跃的时间(以秒为单位)以及服务器愿意为该连接处理的请求数量。例如,