网络
- HTTP协议
- HTTPS与网络安全
- TCP/UDP
- DNS解析
- Session/Cookie
HTTP协议
- 请求/响应报文
- 连接建立流程
- HTTP的特点
请求/响应报文
请求报文
响应报文
HTTP的请求方式都有哪些?
- GET、POST、HEAD、PUT、DELETE、OPTIONS
GET和POST方式的区别?
- GET请求参数以?分割拼接到URL后面,POST请求参数在Body里面
- GET参数长度限制2048个字符,POST一般没有该限制
- GET请求不安全,POST请求比较安全
(标准答案==>从语义的角度来回答)
- GET:获取资源 安全的、幂等的、可缓存的
- POST:处理资源 非安全的、非幂等的、不可缓存的
安全性
- 不应该引起Server端的任何状态变化
- GET、HEAD、OPTIONS
幂等性
- 同一个请求方法执行多次和执行一次的效果完全相同
- PUT、DELETE
可缓存性
- 请求是否可以被缓存
- GET、HEAD
状态码
- 你都了解哪些状态码,他们的含义是什么?
- 1xx、2xx、3xx、4xx、5xx。
HTTP连接建立流程
- 主要是三次握手,四次挥手
HTTP的特点
- 无连接
HTTP的持久连接方案
- 无状态
Cookie/Session
HTTP的持久连接
持久连接
头部字段
- Connecttion:keep-alive
- time:20
- max:10
怎样判断一个请求是否结束的?
- Content-length:1024
- chunked,最后会有一个空的chunked
Charles抓包原理是怎样的?
中间人攻击
HTTPS与网络安全
HTTPS和HTTP有怎样的区别?
- HTTPS=HTTP+SSL/TLS
HTTPS连接建立流程是怎样的?
会话秘钥
- 会话秘钥 = random S + random C +预主秘钥
HTTPS都使用了那些加密手段?为什么?
- 连接建立过程使用非对称加密,非对称加密很耗时的!
- 后续通信过程使用对称加密
非对称加密
对称加密
TCP/UDP
传输层协议
- TCP,传输控制协议
- UDP,用户数据报协议
UDP(用户数据报协议)
特点
- 无连接、尽最大努力交付、面向报文
面向报文
- 即不合并,也不拆分
功能
- 复用、分用、差错检测
复用、分用 (端口(套接字))
差错检测
TCP(传输控制协议)
特点
- 面向连接、可靠传输、面向字节流、流量控制、拥塞控制
面向连接
- 数据传输之前,需要建立连接 (三次握手)
- 数据传输结束之后,需要释放连接 (四次挥手)
可靠传输(可靠传输通过停止等待协议实现的)
- 无差错
- 不丢失
- 不重复
- 按序到达
停止等待协议
- 无差错情况
- 超时重传
- 确认丢失
- 确认迟到
无差错情况
超时重传
确认丢失
确认迟到
面向字节流
流量控制 (基于滑动窗口协议)
拥塞控制
- 慢开始、拥塞避免
- 快回复、快重传
DNS解析
了解DNS解析吗?
- 域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文
DNS解析查询方式?
- 递归查询
- 迭代查询
DNS解析-递归查询
- "我去给你问一下"
DNS解析-迭代查询
- "我告诉你谁可能知道"
DNS解析存在哪些常见的问题?
- DNS劫持问题
- DNS解析转发问题
DNS劫持
DNS劫持与HTTP的关系是怎样的?
- 没有关系
- DNS解析发生在HTTP建立连接之前
- DNS解析请求使用UDP数据报,端口号53
DNS解析转发
怎样解决DNS劫持?
- httpDNS
- 长连接
httpDNS
使用DNS协议向DNS服务器的53端口进行请求 => 使用HTTP协议向DNS服务器的80端口进行请求
长连接
Session/Cookie
- HTTP协议无状态特点的补偿
- Cookie主要用来记录用户状态,区分用户;状态保存在客户端。
- 客户端发送的cookie在http请求报文的Cookie首部字段中
- 服务器设置http响应报文的Set-Cookie首部字段。
怎样修改Cookie?
- 新的cookie覆盖旧cookie
- 覆盖规则:name、path、domain等需要与原cookie一致
怎样删除Cookie?
- 新的cookie覆盖旧cookie
- 覆盖规则:name、path、domain等需要与原cookie一致
- 设置cookie的expires=过去的一个时间点,或者maxAge=0
怎样保证Cookie的安全?
- 对Cookie进行加密处理
- 只在https上携带Cookie
- 设置Cookie为httpOnly,防止跨站脚本攻击
Session也是用来记录用户状态,区分用户的;状态存放在服务器端。 Session和Cookie的关系是怎样的?
- Session需要依赖于Cookie机制
Session工作流程
网络相关面试题
- HTTP中的GET和POST方式有什么区别?
- HTTPS连接建立流程怎样的?
- TCP和UDP有什么区别?
- 请简述TCP的慢开始过程?
- 客户端怎样避免DNS劫持?