1.get和post的区别
get请求可以被缓存
post不会被缓存get是获取指定的资源
post是向指定的资源提交要被处理的数据get的参数只能支持ASCII
post没有限制,也允许二进制的数据get产生一个tcp数据包
post产生两个tcp数据包,时间上消耗要更多一些get操作是幂等的,可以放心的重复发送请求
post不是幂等的,重复发送请求可能会带来无法想象的后果
2.cookie,session和token的区别
- cookie数据是存在浏览器上,session是存在服务器上。
- cookie不是很安全,可以抓取存放在本地进行Cookie欺骗,session相对于更安全。
- session会在一定时间内保存在服务器上,访问量增多的话,会占用服务器更多的资源,影响性能。
cookie存在浏览器,访问速度更快,不会给服务器增加压力。 - cookie可以设置属性达到长期有效。
session是依赖于sessionID的cookie,只要关闭窗口session就会失效。 - token是支持跨域访问的,cookie不允许
token的状态是存在客户端的 - 作为身份认证,token安全性比session好
因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了
3.三次握手,四次挥手
三次握手指的是创建连接的过程:
- 首先,客户端向服务器发送一个请求,询问是够可以发送数据;
- 服务器收到请求后,如果同意,就会响应一个确认报文;
- 客户端收到确认报文后,就开始发送数据
第一次握手:建立连接时,客户端向服务器发送请求报文(SYN)。(我想建立连接)
第二次握手:服务器收到请求报文后,如果同意连接,则向客户端发送确认报文(SYN/ACK)。(同意连接)
第三次握手:客户端收到服务器的确认后,再次向服务器发送确认报文,完成连接(ACK)。(连接完成)
四次挥手指的是断开连接的过程:
- 客户端向服务器发送一个请求,询问是否可以断开连接;
- 服务器会响应自己当前的状态,如果准备好了,会向客户端发送一个断开连接的请求
- 如果没有准备好,还有数据未响应完,会等响应完再给客户端发送请求
- 最后服务器端和客户端断开连接
第一次挥手:客户端想分手,发送消息(FIN)给服务器
第二次挥手:服务器通知客户端已经接受了分手的请求,返回确认消息(ACK),但还没有做好分手的准备
第三次挥手:服务端已经做好分手的准备,通知客户端(FIN)可以分手了
第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接
4.你知道的常用状态码有哪些,代表什么意思?
各个状态码代表的意思:
- 1xx:指示信息(info) -- 表示服务器收到请求,需要请求者继续执行操作
- 2xx:成功(successful) -- 表示请求已被成功接收,理解、接收
- 3xx:重定向(Redirection) -- 要完成请求必须进行更进一步的操作
- 4xx:客户端错误(Client Error) -- 表示请求可能有语法错误或请求无法实现,妨碍了武器的处理
- 5xx:服务器错误(Server Error) -- 表示服务器在处理请求的过程中发生了内部错误,未能实现合法的请求
常见状态码:
- 200:成功 ——服务器已成功处理了请求
- 301:永久移动 ——请求永久重定向,请求的页面已永久转移到新位置
- 302:临时移动 ——请求临时重定向,服务器目前从不同位置的网页响应请求,资源只是临时被移动
- 304:未修改 ——文件未修改,可以直接使用缓存的文件
- 400:错误请求 ——由于客户端请求语法有错误,不能被服务器所理解
- 401:未授权 ——请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
- 403:禁止 ——服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
- 404:未找到 ——请求的资源不存在,例如输入了错误的url
- 500:服务器内部错误 ——服务器发生不可预期的错误,导致无法完成客户端的请求
- 503:服务不可用 ——服务器当前不能够处理客户端得到请求,在一段时间之后,服务器可能会恢复正常
5.输入url后的过程
- 域名解析,DNS解析 ==》ip地址
- 发起TCP连接的三次握手,建立连接
- 建立TCP连接后发起http请求
- 服务端响应http请求,返回响应报文
- 浏览器页面渲染,展示
- 断开TCP连接,四次挥手