1.http介绍
请求报文:
响应报文
2.http的请求方式有哪些?
get post head put delete options
3.get和post方式的区别(rfc官方文档)
get请求参数以?分割拼接到url后面,post请求参数在body里面
get参数长度限制2048个字符,post没有限制
安全性:不应该引起server端的任何状态变化:get head options
幂等性:同一个请求方法执行多次和执行一次的效果完全相同:get delegate
可缓存的:请求是否可以被缓存(代理服务器的缓存)
3.你都了解哪些状态码,他么的含义是什么?
301 301 网络重定向 401 404 客户的发起的请求本身存在问题 501 server端有问题
4.连接建立流程
ps:为什么是三次握手而不是两次?
如果第一次握手超时,客户端会启动超时重传策略,如果这时候超时到达server,就会出现两次tcp连接,最后一次就是为了确定只建立一个
ps:4次挥手,前两次后只是客户端到服务器端口连接断开,后两次是服务端到客户端的断开(全双工)
5.http的特点
无连接(有一个建立和释放连接的过程) 解决:http的持久连接
持久连接使用:头部字段:Connection:keep-alive time:20 max:10
怎样判断一个请求是否结束的?
Content-length:1024(接受的数据长度是否达到这个长度)
chunked,最后会有一个空的chunked
无状态(无法记录同一个用户)解决:Cookie/Session
6.Charles抓包原理是怎样的?
中间人攻击:中间人劫持hold,假冒客户端身份,发送请求,server返回给中间人,中间人再返回给client
7.https和http的区别
SSL/TLS在应用层之下,传输层之上
8.https的连接建立流程?
9.TCP/UDP
10.UDP特点:
无连接 尽最大努力交付
面向报文(既不合并,也不拆分)
功能:复用 分用 差错检测
复用分用:(原端口和目的端口来分发数据)
差错检测:
(ps:借鉴差错检测可以用来对数据进行正确性的验证)
11.TCP的特点:
面向连接 可靠传输 面向字节流 流量控制 拥塞控制
面向连接:数据传输之前,需要建立连接(三次握手)
数据传输结束之后,需要释放连接(四次挥手)
可靠传输:停止等待协议(无差错情况,超时重传,确认丢失 ,确认迟到)
面向字节流:
流量控制
滑动窗口协议:
拥塞控制:慢开始,拥塞避免 快恢复,快重传
12.dns解析
DNS解析方式
递归查询:
迭代查询:
13.DNS的劫持问题:
解决:httpDNS 和 长连接
长连接:
14.NDS的解析转发
15. Cookie
Cookie:主要用来记录用户状态,区分用户,状态保存在客户端
修改Cookie:新的覆盖旧的(覆盖规则:name,path,domain等需要与原cookie一致)
删除Cookie:新的覆盖旧的(规则与修改的一样,要额外设置expires=过去的一个时间,或者maxAge=0)
保证cookie的安全:加密,在https上才携带,设置cookie为httponly,防止跨站脚本攻击
16.Session
Cookie:主要用来记录用户状态,区分用户,状态保存在服务器端(Seesion需要依赖cookie)