网络

39 阅读4分钟

网络

  • HTTP协议
  • HTTPS与网络安全
  • TCP/UDP
  • DNS解析
  • Session/Cookie

HTTP协议

  • 请求/响应报文
  • 连接建立流程
  • HTTP的特点

请求/响应报文

请求报文

image.png

响应报文

image.png

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连接建立流程

  • 主要是三次握手,四次挥手

image.png

HTTP的特点
  • 无连接

HTTP的持久连接方案

  • 无状态

Cookie/Session

HTTP的持久连接

持久连接

image.png

头部字段
  • Connecttion:keep-alive
  • time:20
  • max:10
怎样判断一个请求是否结束的?
  • Content-length:1024
  • chunked,最后会有一个空的chunked

Charles抓包原理是怎样的?

中间人攻击

image.png

HTTPS与网络安全

HTTPS和HTTP有怎样的区别?

  • HTTPS=HTTP+SSL/TLS

image.png

HTTPS连接建立流程是怎样的?

image.png

会话秘钥
  • 会话秘钥 = random S + random C +预主秘钥

HTTPS都使用了那些加密手段?为什么?

  • 连接建立过程使用非对称加密,非对称加密很耗时的!
  • 后续通信过程使用对称加密
非对称加密

image.png

对称加密

image.png

TCP/UDP

传输层协议

  • TCP,传输控制协议
  • UDP,用户数据报协议

UDP(用户数据报协议)

特点
  • 无连接、尽最大努力交付、面向报文
面向报文
  • 即不合并,也不拆分

image.png

功能

  • 复用、分用、差错检测
复用、分用  (端口(套接字))

image.png

差错检测

image.png

TCP(传输控制协议)

特点

  • 面向连接、可靠传输、面向字节流、流量控制、拥塞控制
面向连接
  • 数据传输之前,需要建立连接 (三次握手)
  • 数据传输结束之后,需要释放连接 (四次挥手)

image.png

image.png

可靠传输(可靠传输通过停止等待协议实现的)
  • 无差错
  • 不丢失
  • 不重复
  • 按序到达
停止等待协议
  • 无差错情况
  • 超时重传
  • 确认丢失
  • 确认迟到
无差错情况

image.png

超时重传

image.png

确认丢失

image.png

确认迟到

image.png

面向字节流

image.png

流量控制 (基于滑动窗口协议)

image.png

拥塞控制
  • 慢开始、拥塞避免
  • 快回复、快重传

image.png

DNS解析

了解DNS解析吗?

  • 域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文

image.png

DNS解析查询方式?

  • 递归查询
  • 迭代查询
DNS解析-递归查询
  • "我去给你问一下"

image.png

DNS解析-迭代查询
  • "我告诉你谁可能知道"

image.png

DNS解析存在哪些常见的问题?

  • DNS劫持问题
  • DNS解析转发问题
DNS劫持

image.png

DNS劫持与HTTP的关系是怎样的?
  • 没有关系
  • DNS解析发生在HTTP建立连接之前
  • DNS解析请求使用UDP数据报,端口号53
DNS解析转发

image.png

怎样解决DNS劫持?

  • httpDNS
  • 长连接
httpDNS

使用DNS协议向DNS服务器的53端口进行请求 => 使用HTTP协议向DNS服务器的80端口进行请求

image.png

长连接

image.png

Session/Cookie

  • HTTP协议无状态特点的补偿

image.png

  • Cookie主要用来记录用户状态,区分用户;状态保存在客户端。

image.png

  • 客户端发送的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工作流程

image.png

网络相关面试题

  • HTTP中的GET和POST方式有什么区别?
  • HTTPS连接建立流程怎样的?
  • TCP和UDP有什么区别?
  • 请简述TCP的慢开始过程?
  • 客户端怎样避免DNS劫持?