第十一篇:Objective-C 知识回顾网络相关之二

问题一: HTTPS 和 HTTP 有怎么样的区别?
  • HTTPS = HTTP + SSL/TLS


    第十一篇:Objective-C 知识回顾网络相关之二_第1张图片
    区别
问题二: HTTPS 连接建立流程?
第十一篇:Objective-C 知识回顾网络相关之二_第2张图片
HTTPS 连接建立流程
  • 会话秘钥 = random S + random C + 预主秘钥
问题三: HTTPS 都是用了哪些加密手段?为什么?
  • 连接建立过程是用了非对称加密,非对称加密很耗时的!
  • 后续通信过程是用对称加密,提高通信效率。
问题四: 什么是非对称加密?
  • 涉及到公钥和私钥。
  • 如果加密用公钥,那么解密就用私钥。
  • 如果加密用私钥,那么解密就要用公钥。
  • 不需要传递私钥,只保存在服务端,安全性更高。
问题五: 什么是对称加密?
  • 只有一个秘钥(对称秘钥)
  • 加密和解密都是用秘钥。
  • 一般需要 TCP 传输秘钥,就容易被劫持,劫持者就能解得数据,安全性更低。
问题六: 传输层协议有哪些?
  • TCP:传输控制协议
  • UDP:用户数据报协议
问题七:你是否了解 UDP?
  • 无连接(发送 UDP 数据报的时候,不需要事先建立好连接)
  • 尽最大努力交付(不保证可靠传输)
  • 面向报文(既不合并,也不拆分)
第十一篇:Objective-C 知识回顾网络相关之二_第3张图片
复用和分用
第十一篇:Objective-C 知识回顾网络相关之二_第4张图片
UDP差错检测流程
问题八:什么是 TCP(传输控制协议)的特点?
  • 面向连接
  • 可靠传输(确认丢失,无差错,不重复)
  • 面向字节流(对比 UDP 的面向报文传输就能理解)
  • 流量控制
  • 拥塞控制
第十一篇:Objective-C 知识回顾网络相关之二_第5张图片
TCP 的建立流程,三次握手,四次挥手
什么是面向连接?
  • 数据传输之前,需要建立连接 三次握手
  • 数据传输结束后,需要释放连接 四次挥手
什么是可靠传输?
  • 无差错
  • 不丢失
  • 不重复
  • 按序到达
可靠传输详解?
  • 客户端的超时重传保证了(无丢失)
  • server 端的差错检测保证了(无差错)
  • 客户端未收到 server 端的确认报文,会触发超时重传,server 端再次受到报文,会丢去重传的报文,再重传确认报文。保证了(不重复,确认丢失的问题)
第十一篇:Objective-C 知识回顾网络相关之二_第6张图片
超时重传策略
第十一篇:Objective-C 知识回顾网络相关之二_第7张图片
确认丢失的策略
TCP 建立连接的流程为什么需要进行三次握手,两次够吗?
  • 两次握手容易产生客户端向服务端发送的 SYN 同步报文超时的情况下,客户端启用超时重发,重发的报文和服务端取得联系之后,如果超时报文此刻也到达服务端,那么服务端就会认为客户端需要建立两次连接,有效连接只有一个,另一个会导致服务端一直等待。
  • 主要目的防止server端一直等待,浪费资源,而三次握手就可以避免这种情况的发生。
TCP 建立连接的流程为什么需要进行四次挥手,相互独立断开呢?
  • 因为 TCP 建立的通道是全双工模式,什么是全双工
  • 全双工:指的是可以同时进行双向传输(A->B 且 B->A)
  • 半双工:指的是同一时间内只有一个方向的信息传输(A -> B 或 B -> A)
问题八:什么是 TCP(传输控制协议)的功能?
问题九:什么是滑动窗口协议?
第十一篇:Objective-C 知识回顾网络相关之二_第8张图片
TCP 中的滑动窗口协议
第十一篇:Objective-C 知识回顾网络相关之二_第9张图片
TCP 传输慢开始的(拥塞避免控制图)
问题十:你了解 DNS 解析吗?
  • 域名IP地址 的映射,DNS 解析请求采用 UDP 数据报,且明文。
第十一篇:Objective-C 知识回顾网络相关之二_第10张图片
DNS 解析的过程
第十一篇:Objective-C 知识回顾网络相关之二_第11张图片
DNS 解析 - 递归查询
第十一篇:Objective-C 知识回顾网络相关之二_第12张图片
DNS 解析 - 迭代查询
问题十一:DNS 解析存在哪些常见问题?
  • DNS 劫持问题
  • DNS 解析转发问题
第十一篇:Objective-C 知识回顾网络相关之二_第13张图片
DNS 劫持
第十一篇:Objective-C 知识回顾网络相关之二_第14张图片
DNS 解析转发
问题十二:DNS 劫持与 HTTP 的关系是怎么样的?
  • 完全没有关系的
  • DNS 解析发生在 HTTP 建立连接之前
  • DNS 解析请求使用 UDP 数据报,端口号 53
问题十三:DNS 劫持怎么防止呢?
  • httpDNS (使用 HTTP 协议向 DNS 服务器的进行 IP 直连访问 80 端口进行请求)
  • 长连接
第十一篇:Objective-C 知识回顾网络相关之二_第15张图片
长连接的方式
第十一篇:Objective-C 知识回顾网络相关之二_第16张图片
httpDNS 流程图
问题十四:什么是 Session / Cookie?
  • HTTP 协议无状态特点的补偿
什么是Cookie?
  • 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 也是用来记录用户状态的,区分用户的;状态存放在服务器端
  • Session 需要依赖于 Cookie 机制。
第十一篇:Objective-C 知识回顾网络相关之二_第17张图片
Session 的工作流程

你可能感兴趣的:(第十一篇:Objective-C 知识回顾网络相关之二)