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位