阿里一面 —— HTTP中重定向和请求转发的区别?

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!!

4d4cae98b348412db70f24c76ebe19c8.gif


目录

⭐TCP 与 UDP 区别?

⭐什么是HTTP协议?

⭐TCP的三次握手

⭐HTTP中重定向和请求转发的区别?

⭐Get和Post的区别?

⭐cookie和session的区别?


f1ed79363538443484ca8bf943c020d0.gif


⭐TCP 与 UDP 区别?

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。

UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 

TCP和UDP都是来自于传输层的协议。传输层位于应用层和网络层之间,负责位于不同主机中进程之间的通信。


 1.TCP基于连接UDP无连接
 2.TCP要求系统资源较多,UDP较少 
 3.TCP保证数据正确性,UDP可能丢包 
 4.TCP保证数据顺序,UDP不保证 


0c0c1c8047a7415db8d14ce02c59ae76.png


⭐什么是HTTP协议?

客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。

是一个基于请求与响应模式的、无状态的、应用层的协议,基于 TCP 的连接方式

33af0cd4316f4074a5a80f76053829a3.png


⭐TCP的三次握手

6aab607e78f04a83b7b5e3fb8ba3c381.png


为什么要三次握手?

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是 双方确认自己与对方的发送与接收是正常的。

SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。

第一次握手:客户端给服务器发送一个SYN。客户端发送网络包,服务端收到了。服务器得出结论:客户端的发送能力,服务端的接收能力正常。
第二次握手:服务端收到SYN报文之后,会应答一个SYN+ACK报文。服务端发包,客户端收到了。客户端得出结论:服务端的接收和发送能力,客户端的接收和发送能力正常。但是此时服务端不能确认客户端的接收能力是否正常。
第三次握手;客户端收到SYN+ACK报文之后,回应一个ACK报文。客户端发包,服务端收到了。服务器得出结论:客户端的接收和发送能力,自己的接收发送能力都正常。
通过三次握手,双方都确认对方的接收以及发送能力正常。

7315d69d674a4d88a3aa9231ed396394.png


⭐HTTP中重定向和请求转发的区别?

实现 
转发:用request的getRequestDispatcher()方法得到ReuqestDispatcher对象,调用forward()方法

request.getRequestDispatcher("other.jsp").forward(request, response);

重定向:调用response的sendRedirect()方法

response.sendRedirect("other.jsp");

1> 重定向2次请求,请求转发1次请求

2> 重定向地址栏会变,请求转发地址栏不变

3> 重定向是浏览器跳转,请求转发是服务器跳转

4> 重定向可以跳转到任意网址,请求转发只能跳转当前项目

d388cbea31a84bf5854d070368a5cd50.png


⭐Get和Post的区别?

1. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。  

2. Get传送的数据量较小,一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。       

3. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。                     

4. Get执行效率却比Post方法好。Get是form提交的默认方法。 

be3d896f37d544edae82759c6452c980.png


⭐cookie和session的区别?

1.存储位置不同

cookie的数据信息存放在客户端浏览器上。

session的数据信息存放在服务器上。  

2.存储容量不同

单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。

对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东 西,并且设置session删除机制。

3.存储方式不同

cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。

session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。

4.隐私策略不同

cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。

session存储在服务器上,不存在敏感信息泄漏的风险。

5. 有效期上不同

开发可以通过设置cookie的属性,达到使cookie长期有效的效果。

session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。

6.服务器压力不同

cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。

session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。


eee79ebe89334a718b308146e4861067.gif

b5e9aea57af942b9883c7992fdc12c35.gif


猜你喜欢

转载自blog.csdn.net/weixin_42306958/article/details/123079999