美文网首页
iOS面试之网络大全

iOS面试之网络大全

作者: 原来是泽镜啊 | 来源:发表于2020-03-13 22:06 被阅读0次

    网络

    网络内容如下

    • HTTP协议

    • HTTPS与网络安全

    • TCP / UDP

    • DNS解析

    • Session/Cookie

      image

    1.HTTP

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

    推荐阅读

    iOS开发——最新 BAT面试题合集(持续更新中)

    超文本传输协议
    - 请求/响应报文
    - 连接建立流程
    - HTTP的特点
    
    
    • 请求报文

      image
    • 响应报文

    image
    • HTTP的请求方式都有哪些?
    - get
    - post
    - head
    - put
    - delete
    - options
    
    
    • GET 和 POST方式的区别?
    - GET请求参数以?分割拼接到URL后面,POST请求参数在Body里面
    - GET参数长度限制2048个字符,POST一般没有限制
    - GET请求不安全,POST请求比较安全
    
    
    如果再发送请求的参数中进行加密,有服务器端解密,可以保护数据的安全性.
    
    
    • 连接建立流程

      image
    TCP三次握手(客户端Client,服务端Server)
    - 客户端发起连接,需要发送一个SYN,同步报文,给Server端
    - 连接建立
    - 同时Server端会返回ACK(TCP报文),给客户端
    - 这时候,客户端会再次回应一个确认报文ACK给Server端
    - HTTP建立连接
    
    HTTP请求
    - http请求报文,到Server端
    - Server端返回客户单一个http响应报文
    
    TCP四次挥手
    - 客户端发起连接断开
    - Server端收到终止报文,会回给客户端确认的报文
    - 此时,Server端仍有数据发给客户端,Server端向客户端FIN,ACK报文
    - 客户端接收到Server的报文后,再次发送给Server确认报文,TCP连接四次挥手就完成了.
    
    
    • HTTP的特点
    - 无连接:HTTP的持久连接
    - 无状态: Cookie/Session
    
    
    • 持久连接
    image
    - 打开tcp连接,然后关闭tcp连接
    - 重新建立tcp连接,每次发送的请求,都需要重新创建tcp的连接
    
    
    image
    - 打开tcp,在一定时间,tcp请求在同一时间并在同一条线路上进行请求
    - 经历一段时间之后,会关闭连接
    
    
    思考-http提供持久连接的作用?
    其实,是在请求响应中提供了效率.一定时间范围内,对网络请求响应的过程,连接复用,节省tcp连接过程时间
    
    

    2.HTTPS与网络安全

    image
    HTTPS和HTTP有怎样的区别?
    HTTPS - > HTTP + SSL/TLS
    
    - IP是网络层
    - TCP是传输层
    - HTTP是应用层
    - SSL/TLS是应用层之下,传输层之上,一个中间层
    
    
    • HTTPS连接建立流程是怎样的?

      image
    - 客户单向Server端发送报文,TLS版本号,支持的加密算法,随机数C
    - 商定加密算法,随机数S,server端证书
    - 验证server证书,判断Server是否为合法server
    - 组装会话秘钥
    - 客户端发送报文,通过server的公钥对预主秘钥进行加密传输
    - 通过私有解密得到预主秘钥
    - 组装会话秘钥
    - 加密的握手消息
    
    
    会话秘钥
    - random S + random C + 预主秘钥
    
    
    https使用了哪些加密?
    - 连接建立过程使用非对称加密,加密很耗时
    - 后续通讯过程使用对称加密
    
    

    3.TCP / UDP

    - TCP与UDP,都属于传输层协议
    - TCP,传输控制协议
    - UDP,用户数据报协议
    
    
    • UDP
    - 无连接
    - 尽最大努力交付
    - 面向报文:既不合并,也不拆分
    
    
    image
    应用层会产生应用层报文
    |
    应用层原封不动通过UDP用户数据报的数据部分,拼接UDP首部,组成运输层的UDP数据报
    |
    UDP的数据报,在通过IP数据报的数据部分与IP首部拼接,组成了IP层
    
    
    • UDP功能:
    - 复用
    - 分用
    - 差错检测
    
    
    image image
    • TCP
    - 面向连接
    - 可靠传输
    - 面向字节流
    - 流量控制
    - 拥塞控制
    
    
    面向连接:
    - 数据传输开始之前,需要建立连接
    - 三次握手
    - 数据传输之后,需要释放连接
    - 四次挥手
    
    
    思考-为什么进行三次握手?
    
    
    可靠传输
    - 无差错
    - 不丢失
    - 不重复
    - 按序到达
    
    可靠传输是通过停止等待协议实现的
    无差错情况
    超时重传
    确认丢失
    确认迟到
    
    
    image image image image

    4.DNS解析

    - 域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文
    
    
    image
    - 客户端通过发送域名到DNS服务器,经过DNS服务器解析之后,获取IP,获取到IP就可以访问Server
    
    
    • DNS解析查询方式
    - 递归查询
    - 迭代查询
    
    
    image
    - 客户端向DNS服务器发送请求
    - 客户端先通过本地DNS,返回一个结果的话,直接使用本地DNS
    - 如果本地DNS不知道对应域名的IP的时候,询问根域DNS,
    - 根域DNS再去询问顶级DNS
    - 顶级DNS也不知道,通过权限DNS
    - 把解析的IP返回客户端
    
    
    • 迭代查询
    image
    - 如果本地DNS知道解析IP,直接返回客户端
    - 如果顶级DNS/根域DNS/权限DNS告诉本地DNS那个DNS解析,把解析结
    果最终返回本地DNS,本地DNS再把IP返回客户端
    
    
    • DNS解析存在哪些常见的问题?
    - DNS劫持
    - DNS解析转向
    
    
    • DNS劫持
    image
    - 我们通过DNS服务器解析,获取IP,通过获取的IP访问Server
    - 如果再域名解析的过程中,通过对DNS的劫持,会返回错误的IP,这样就不能访问Server
    
    
    思考: DNS劫持与HTTP的关系?
    - 没有关系
    - DNS解析发生在HTTP建立连接之前
    - DNS解析请求使用UDP数据报,端口号53
    
    
    • DNS解析转发

      image
    - 为了节省资源,会把域名转发其他的DNS服务器(运营商DNS服务器)
    - 域名到IP的转换,解析最终的IP结果
    
    
    • DNS劫持解决
    - httpDNS
    - 长连接
    
    
    • httpDNS
    使用DNS协议向DNS服务器的53端口进行请求
    |
    使用HTTP协议向DNS服务器的80端口进行请求
    
    
    • 长连接
    image

    5.Session/Cookie

    - HTTP协议无状态特点的补偿
    
    
    • Cookie
    - Cookie主要用来记录用户状态,区分用户
    - 状态保存在客户端
    
    
    怎样修改Cookie ?
    - 新cookie覆盖旧cookie
    - 覆盖规则
    
    
    怎样删除Cookie?
    - 新cookie覆盖旧cookie
    - 覆盖规则
    - 设置Cookie的expires=过去的一个时间点,或者maxAge=0
    
    
    怎样保证Cookie的安全?
    - 对Cookie进行加密处理
    - 只在https上携带Cookie
    - 设置Cookie为httpOnly,防止跨站脚本攻击
    
    
    • Session
    - Session也是用来记录用户状态的,区分用户的
    - 状态存放在服务器端
    
    
    session和cookie的关系
    - session需要依赖于cookie机制
    
    

    6.面试题

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

    文章来源于网络,如有侵权,请联系小编删除。

    相关文章

      网友评论

          本文标题:iOS面试之网络大全

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