1. TCP/IP协议族分层?
- 应用层:向用户提供应用服务时的通信活动,如FT、DNS、HTTP。
- 传输层:为应用层提供处于网络连接中的两台计算机之间的数据传输,如TCP、UDP。
- 网络层:在网络中选择一条传输路线,并把数据包传送给对方,如IP。
- 数据链路层:处理连接网络的硬件部分,如设备驱动、光纤、网卡。
2. 有哪些协议方案?
- HTTP、HTTPS、FTP、telnet、file、mailto。
3. HTTP方法有哪些?
- GET:获得资源
- POST:传输实体主体
- PUT:传输文件(因不含验证机制,存在安全问题)
- HEAD:获得报文首部
- DELETE:删除文件(因不含验证机制,存在安全问题)
- http/1.1特有方法如下
- OPTIONS:询问支持的方法
- TRACE:追踪路径(但易引发跨站追踪攻击)
- CONNECT: 主要使用HTTPS建立隧道
4. HTTP/1.1升级的特性有哪些?
- 持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态
- 管线化:同时并行发送多个请求,而不需一个接一个等待响应。
5. HTTP报文格式是什么?
- 报文首部
- 空行
- 报文主体(可选)
6. HTTP传输编码方式有哪些?
- gzip
- compress
- deflate
- identity
7. HTTP多部分对象集合有哪些?
- multipart/form-data: 上传表单文件
- multipart/byteranges: 状态码为206,响应报文包含了多个范围内容时使用
8. 范围请求的返回值有哪些?
- 206: Partial Content
- 200: 完整实体
9. 内容协商有哪几种,协商依据是什么?
- 服务器驱动协商
- 客户端驱动协商
- 透明协商
-
- 依据:语言、字符集、编码方式
10. HTTP状态码有哪些?
- 200: 成功
- 204: 成功,但响应报文中不含实体的主体部分
- 206: 范围请求成功
- 301: 分配了新的URI,浏览器书签要更换
- 302: 临时重定向
- 303: 同302,但应使用GET方法
- 304: 条件请求未满足,响应不包含主体
- 307: 同302,但不允许POST变为GET
- 400: 请求报文语法错误
- 401: 首次时表明需有通过HTTP认证的信息/再次时表明用户认证失败
- 403: 被服务器拒绝
- 404: 找不到资源/服务器拒绝且不想说明理由
- 500: 服务器执行错误/Web应用存在Bug
- 503: 服务器超载/停机维护
11. 为什么必须在HOST首部内完整指定主机或域名的URI?
- 当一个主机上有多个虚拟Web站点时,请求到达至服务器,已是IP形式,需用HOST中的URI做区分。
12. 什么是代理、网关、隧道?
- 代理:利用缓存技术减少网络带宽流量或控制特定网络的访问权限;会附加Via首部字段以标记出经过的主机信息。
- 网关:类似代理,网关能使通信线路上的服务器提供非HTTP协议服务。
- 隧道:通过加密手段通信。
13. 通用首部字段有哪些?
- Date: 创建HTTP报文的日期和时间
- Warning: 告知用户问题警示
- Cache-Control: 控制缓存
- Trailer: 应用于HTTP/1.1分块传输编码中,事先说明报文主体后记录的首部
- Transfer-Encoding: 规定了传输报文主体采用的编码方式
- Upgrade: 检测是否可使用更高版本进行通信,与Connection配合使用
- Pragma: 为了兼容HTTP/1.0; Cache-Control: no-cache; Pragma: no-cache
- Connection: 不再转发首部/持久连接控制:close/Keep-Alive
14. Cache-Control的值有哪些?
- no-cache: 不允许缓存
- no-store: 不进行缓存
- max-age: 缓存的最大时间/在HTTP/1.1中,max-age优先于Expires
- only-if-cached: 用于请求,客户端仅在缓存服务器本地缓存目标资源的情况下,才要求其返回。
- public:用于响应,可向任意方提供响应的缓存
- private:用于响应,会针对特定用户提供缓存
- must-revalidate:用于响应,代理需向源服务器验证缓存有效性
- proxy-revalidate:用于响应,所有缓存代理服务器需再次验证缓存有效性
15. 请求首部字段有哪些?
- Accept: 客户端支持的媒体类型(;q默认为1.0, 取值0-1,3位小数点)
- Accept-Charset: 客户端支持的字符集
- Accept-Encoding: 客户端支持的内容编码
- Accept-Language: 客户端支持的自然语言集
- Authorization: Web认证信息
- User-Agent: 创建请求的浏览器和用户代理名称等信息,可追加
- Proxy-Authorization: 代理服务器的认证所需信息
- From: 用户电子邮箱
- Host: 请求资源所在服务器名称,名称没有时则置为空值
- If-Match: 与ETag值一致,服务器才接受请求
- If-None-Match: 与If-Match相反
- If-Modified-Since: 更新资源时间满足条件,则响应
- If-Unmodified-Since: 在指定时间后未更新,则响应
- Range: 范围请求
- If-Range: 值与ETag或更新日期时间匹配一致,则作为范围请求处理,否则返回全部资源
- Max-Forwords: 判断传输路径通信状况
16. 响应首部字段有哪些?
- Accept-Ranges: 是否接受子节范围请求
- ETag: 与资源匹配的标记
- Location: 可将响应接收方引导至某个与请求URI位置不同的资源
- Proxy-Authenticate: 把代理服务器所要求的认证信息发送给客户端
- WWW-Authenticate: 服务器对客户端的认证信息
- Server: HTTP服务器安装信息
- Retry-After: 告知客户端在多久之后再次发送请求
17. 实体首部字段有哪些?
- Content-Encoding: 实体的内容编码方式
- Content-Language: 实体的自然语言
- Content-Length: 实体主体的大小
- Content-Location: 报文主体返回资源对应的URI
- Content-MD5: 客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5字段值比较,以检查报文主体在传输过程中是否保持完整及确认传输到达。
- Expires: 资源失效日期
- Last-Modified: 资源最终修改的时间
18. Set-Cookie的值有哪些?
- expires: cookie有效期,默认浏览器关闭前,即Session
- secure: 仅在HTTPS安全通信时才发送Cookie
- httpOnly: 不允许Cookie被脚本访问,防止跨站脚本攻击
19. HTTP缺点有哪些?
- 明文传输
- 不验证通信方身份
20. HTTPS通信时的加密方式是什么?
- SSL+TLS建立连接时是公开密钥加密,也称非对称加密
- 建立通信交换阶段时是共享密钥加密,也称对称加密
21. HTTP/1.1有哪些认证方式?
- SSL+TLS客户端认证
- FormBase认证,即服务器验证客户端输入的登录信息
22. WebSocket全双工通信的优点?
- 推送: 可以实现服务器向客户端推送
- 减少通信量: 建立起WebSocket连接后会一直保持连接状态/且WebSocket首部信息很小