美文网首页
iOS开发:HTTP、HTTPS、UDP、TCP学习笔记

iOS开发:HTTP、HTTPS、UDP、TCP学习笔记

作者: 蛋哥是只猫 | 来源:发表于2020-10-26 14:53 被阅读0次

    1、HTTP的请求方式有哪些?

    一共有六种请求方式:GET 、 POST、 HEAD 、PUT 、 DELETE 、OPTIONS

    2、GET和POST方式的区别

    1)GET:是用来获取资源的,它是安全的幂等的可缓存的
    2)POST:使用来处理资源的,它是非安全的,非幂等的,不可缓存的

    安全的:不应该引起server端的任何状态变化,
                   通常遵从的请求方式有:GET,HEAD,OPTIONS
    幂等的:同一个请求方法执行多次和执行一次的效果完全相同,
                   通常遵从的请求方式有:GET,PUT,DELETE
    可缓存的:请求可以被缓存。 通常遵从的请求方式有:GET,HEAD
    

    3、常见状态码

    200 :请求成功
    301或302:发生了重定向
    401或404: 发起的请求有误
    501或502:server端可能有问题

    4、连接建立流程 (TCP)

    建立流程:
       1)client(客户端)向server发送一个SYN(链接报文)
       2)server收到后向client发送SYN和ACK(确认报文)
       3)client向server发送ACK
    此时client端向server端发送http请求报文后,server会发送相应的http响应报文
    断开链接流程:
       1)client向server发送一个FIN(断开报文)
       2)server会发送FIN和ACK
       3)server向client发送FIN和ACK
       4)client向server发送ACK

    为什么要进行三次握手连接:为了避免client建立连接中的异常情况。比如如果只需要两次握手时,当client建立连接请求超时后重新发送请求的时候,server收到重新发送的SYN后会误认为是client进行了第二次连接请求

    5、HTTP的特点

    1)无连接:HTTP有一个建立连接和释放连接的过程 ,client发送请求后,都需要有一个建立连接和释放连接的过程(解决方案:HTTP持久连接)
    2)无状态:多次发送HTTP请求,如果是同一用户,server端是无法知道(解决方案:cookie/session)

    6、HTTP持久连接

    请求头部字段:
         Connection: keep_alive
         time: 20 持久连接时长
          max: 10 最多允许多少个HTTP请求
    持久连接中如何判断一个请求是否结束:
         1)Content-length:响应报文中的响应大小
         2)响应报文中的 chunked,最后一个会是一个空的chunked

    7、Charles的抓包原理?

         中间人攻击

    8、HTTP和HTTPS的区别?

    HTTPS = HTTP + SSL/TLS
    HTTPS是安全的HTTP,它的安全是由插在应用层和传输层中间的TLS/SSL协议来保障。

    9、HTTPS的建立流程

    1)client向server发送连接报文,报文中包含3部分:TLS版本号,随机数C,支持的加密方式
    2)server返回给client报文,报文包含3部分:确认的加密方式,随机数S,server证书
    3)client验证server证书,来判定server是否合法
    4)client组装会话秘钥(会话秘钥 = 随机数C + 随机数 S + 预主秘钥)
    5)client向server发送报文,报文主要是通过server的公钥预主秘钥进行加密传输
    6)server端通过私钥解密得到预主秘钥
    7)server端组装会话秘钥
    8)client向server发送加密的握手消息
    9)server向client发送加密的握手消息来确认加密通道打开

    10、HTTPS都是用了哪些加密手段?为什么?

    1)建立连接过程中使用非对称加密,非对称加密很耗时,因为非对称加密client端和server端使用的是不同的秘钥进行加密解密
    2)后续通信过程中使用对称加密

    11、非对称加密 和对称加密

         非对称加密:client端和server端使用的是不同的秘钥进行加密解密,如果client使用公钥加密,server则使用私钥进行解密,反之,如果client端使用私钥加密,server则使用公钥解密。
         对称加密:client和server端使用同样的秘钥进行加密和解密

    12、TCP和UDP

    TCP:传输控制协议
        作用:
        特点:面向连接、可靠传输(不重复、不丢失、无差错、按序到达)、面向字节流、拥塞控制、流量控制
    可靠传输:TCP是通过停止等待协议来实现的
    流量控制:TCP流量控制是通过滑动窗口协议来实现的
    滑动窗口协议:因为接受方的接收缓存有大小限制,如果发送方发送数据过大,则会造成接受方缓存溢出,所以接收方可以动过更改TCP报文中的首部字段值来控制发送窗口大小
    拥塞控制:主要是通过 1)慢开始、拥塞避免 2)快恢复、快重启 来进行拥塞控制
    UDP:用户控制协议
        作用:复用、分用、差错检测
        特点:面向报文(不拆分也不合并)、无连接、尽最大努力交付

    13、DNS解析

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

    14、DNS解析查询方式

    1)递归查询
    2)迭代查询

    15、DNS解析中常见问题

    1)DNS劫持
    2)DNS解析转发

    16、DNS劫持以及解决方案

    解决方案:1)httpDNS:client以HTTP的方式向DNS服务器的80端口进行请求
    2) 长连接:建立一个长连server,client和长连server建立一个长连通道,长连server可以向APIserver发送http请求,可以通过内网专线进行DNS的解析

    17、DNS劫持和HTTP的关系

    没有关系,DNS解析是发生在HTTP连接建立之前的,并且DNS解析是使用DNS协议向DNS服务器的53端口进行请求

    18、cookie和session

    cookie和session是对HTTP协议无状态特点的补偿
    cookie:主要用来记录用户状态,区分用户,状态保存在客户端
    session:主要用来记录用户状态,区分用户,session的状态保存在服务端,session需要依赖cookie的机制来实现,设置在cookie的sessid字段中

    客户端发送Cookie是通过请求报文的Cookie首部字段中
    服务器端通过http响应报文的Set_Cookie首部地段设置Cookie
    

    19、如何修改Cookie?

    新Cookie覆盖旧的Cookie,覆盖规则:name、path、demain等需要与原Cookie一致

    20、如何删除Cookie?

    新Cookie覆盖旧的CooKie,然后设置值cookie的expire字段为过去的某个时间点,或者是maxAge设置为0

    21、怎样保障Cookie的安全?

    1)加密处理
    2)只在HTTPS上携带Cookie
    3)设置Cookie为httpOnly,防止跨站脚本攻击

    22、IPv4地址和IPv6地址

    IPv4:通常使用点分四组或者点分十进制标示发比如192.168.0.00。32位
    IPv6:传统标示方法是采用成为或者字段的四个十六进制数,或者字段由冒号分隔。128位

    相关文章

      网友评论

          本文标题:iOS开发:HTTP、HTTPS、UDP、TCP学习笔记

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