美文网首页iOS 开发 Objective-C
第十一篇:Objective-C 知识回顾网络相关之二

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

作者: 望穿秋水小作坊 | 来源:发表于2019-11-29 11:37 被阅读0次
    问题一: HTTPS 和 HTTP 有怎么样的区别?
    • HTTPS = HTTP + SSL/TLS


      区别
    问题二: HTTPS 连接建立流程?
    HTTPS 连接建立流程
    • 会话秘钥 = random S + random C + 预主秘钥
    问题三: HTTPS 都是用了哪些加密手段?为什么?
    • 连接建立过程是用了非对称加密,非对称加密很耗时的!
    • 后续通信过程是用对称加密,提高通信效率。
    问题四: 什么是非对称加密?
    • 涉及到公钥和私钥。
    • 如果加密用公钥,那么解密就用私钥。
    • 如果加密用私钥,那么解密就要用公钥。
    • 不需要传递私钥,只保存在服务端,安全性更高。
    问题五: 什么是对称加密?
    • 只有一个秘钥(对称秘钥)
    • 加密和解密都是用秘钥。
    • 一般需要 TCP 传输秘钥,就容易被劫持,劫持者就能解得数据,安全性更低。
    问题六: 传输层协议有哪些?
    • TCP:传输控制协议
    • UDP:用户数据报协议
    问题七:你是否了解 UDP?
    • 无连接(发送 UDP 数据报的时候,不需要事先建立好连接)
    • 尽最大努力交付(不保证可靠传输)
    • 面向报文(既不合并,也不拆分)
    复用和分用 UDP差错检测流程
    问题八:什么是 TCP(传输控制协议)的特点?
    • 面向连接
    • 可靠传输(确认丢失,无差错,不重复)
    • 面向字节流(对比 UDP 的面向报文传输就能理解)
    • 流量控制
    • 拥塞控制
    TCP 的建立流程,三次握手,四次挥手
    什么是面向连接?
    • 数据传输之前,需要建立连接 三次握手
    • 数据传输结束后,需要释放连接 四次挥手
    什么是可靠传输?
    • 无差错
    • 不丢失
    • 不重复
    • 按序到达
    可靠传输详解?
    • 客户端的超时重传保证了(无丢失)
    • 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 解析存在哪些常见问题?
    • DNS 劫持问题
    • DNS 解析转发问题
    DNS 劫持 DNS 解析转发
    问题十二:DNS 劫持与 HTTP 的关系是怎么样的?
    • 完全没有关系的
    • DNS 解析发生在 HTTP 建立连接之前
    • DNS 解析请求使用 UDP 数据报,端口号 53
    问题十三:DNS 劫持怎么防止呢?
    • httpDNS (使用 HTTP 协议向 DNS 服务器的进行 IP 直连访问 80 端口进行请求)
    • 长连接
    长连接的方式 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 机制。
    Session 的工作流程

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/uqebwctx.html