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