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

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学习笔记)