1、转发与重定向的区别
- 转发是服务器请求资源,服务器直接访问目标地址url,把响应内容返回给浏览器。 重定向根据服务器返回的状态码重新请求地址。
- 转发是服务器行为,重定向是客户端行为。
- 转发显示的url不变而重定向显示新的url。
- 转发页面和转发到的页面共享request的信息,重定向不共享数据。
- 转发一般用于用户登录,根据角色转发到响应的模块, 重定向一般用于用户注销,跳转到其他的地方。
2、TCP三次握手
建立连接时进行TCP三次握手:
- 客户端发送syn给服务端 连接请求。
- 服务端发送syn ack 给客户端 授予连接。
- 客户端发送ack给服务端 确认连接。
第一次客户端确认自己的发送正常,服务端确认自己的接收正常。
第二次服务端确认自己的发送,接收正常,客户端的发送正常。客户端确认自己的发送、接受正常,服务端的发送、接受正常。
第三次客户端服务端都确认双方的发送接收正常。
3、TCP四次挥手
- 客户端发送fin给服务端,关闭客户端到服务端的数据传送。
- 服务端发送ack 。
- 服务端发送fin,关闭服务端和客户端的连接。
- 客户端发送ack,连接关闭。
4、为什么是三次握手四次挥手
建立连接的时候,syn和ack可以同时发送,但是断开连接的时候fin和ack不能同时发送,因为server还未确认是否所有的报文都发送完了,所有的报文发送完了才能发送fin。所以建立连接需要三次握手,断开连接需要四次挥手。
5、TCP与UDP的区别
- TCP协议是有连接的,必须通过三次握手建立连接,UDP是无连接的。
- TCP保证数据按序到达,UDP不能保证。
- TCP是面向字节流的服务,UDP是面向报文的服务。
6、什么是Servlet
是http请求和程序之间的中间层。可以读取客户端请求数据,处理数据并生成结果。
7、拦截器与过滤器的区别
- 拦截器基于java反射实现,过滤器基于函数回调。
- 拦截器不依赖Servlet容器,过滤器依赖Servlet。
实现一个拦截器继承HandlerIntecepterAdapter。
实现过滤器继承Filter,在web.xml中进行配置。
8、HTTPS的过程
- 客户端发起https请求,建立连接,发送所支持的ssl/tls的版本,支持的加密套件等。
- 服务器收到请求后,会发送服务端的证书,选择的ssl/tls的版本,使用的加密套件。
- 客户端收到证书之后对证书进行验证,验证证书是否被篡改,验证证书的有效期。获取服务器的公钥。
- 使用服务器的公钥对一个随机数进行加密,传送给服务器。
- 然后使用这个随机数进行对称加密进行传输数据。
9、加密相关
加解密使用同一套秘钥,常用的加密算法: AES、 DES。
指的是加解密使用不同的密匙,一个公钥一个私钥。公钥加密的信息只有私钥能解开,私钥加密的信息只有公钥能解开。
一段信息,经过摘要算法得到一串hash值。常用的摘要算法:MD5、SHA1、SHA256。
先用摘要算法,获取内容的摘要,之后使用自己的私钥对摘要进行加密生成签名。
证书有签发者、证书用途、公钥、加密算法、hash算法、到期时间等。数字证书会做一个数字签名防止证书被篡改。会用CA的私钥进行加密。CA的公钥是公开的,浏览器会缓存。
原文
https://segmentfault.com/a/1190000021330634