java网络面试

发布时间:2023年12月25日

1 http 响应码 301 和 302 代表的是什么?有什么区别?
301 Moved Permanently(永久重定向):表示请求的资源被永久移动到了新的URL,未来所有对该资源的请求都应该使用新的URL。搜索引擎会将原有的链接替换为新的URL。
302 Found(临时重定向):表示请求的资源暂时移动到了新的URL,未来可能还会发生变化,所以搜索引擎会保留原有的链接。对于重定向后的请求,客户端应该继续使用原有的URL。

2 forward 和 redirect 的区别?
Forward(转发):在服务器内部进行页面跳转,客户端浏览器对此无感知。服务器直接将请求转发到目标页面,目标页面再将响应返回给客户端。URL地址栏不会改变,原始请求的参数会传递给目标页面。
Redirect(重定向):服务器告诉客户端浏览器重新发送一个新的请求,客户端浏览器会重新请求新的URL。URL地址栏会改变为重定向的URL,原始请求的参数不会传递给新的URL。

3 简述 tcp 和 udp的区别?

TCP是面向连接的协议,提供可靠的数据传输。它通过三次握手建立连接,使用序号、确认和重传机制保证数据可靠性,还提供流量控制和拥塞控制等功能。TCP适用于要求数据完整性和可靠性的应用场景,如文件传输、网页访问等。
UDP是无连接的协议,提供不可靠但效率高的数据传输。UDP不需要建立连接,直接发送数据包。它不提供数据的可靠性保证,也不会对数据包进行重传或排序。UDP适用于实时性要求高、对数据传输可靠性要求相对较低的应用场景,如音视频传输、DNS解析等。

4 tcp 为什么要三次握手,两次不行吗?为什么?
第一次握手:客户端发送SYN包(同步序列编号)给服务器,请求建立连接。
第二次握手:服务器收到SYN包后,发送ACK包(确认序列编号)和SYN包给客户端,表示收到请求,并同意建立连接。
第三次握手:客户端收到服务器的ACK包后,发送ACK包给服务器,确认连接建立成功。
三次握手可以确保双方都能收到对方的确认信息,并建立起可靠的连接。如果只进行两次握手,可能会发生以下情况:

客户端发出的连接请求在网络中滞留,服务器收不到,导致连接无法建立。
服务器发出的确认信息在网络中滞留,客户端收不到,导致客户端一直处于连接等待状态。

5 说一下 tcp 粘包是怎么产生的?
TCP粘包是指发送方发送的若干个小数据包在接收方接收时粘成了一个大数据块。TCP粘包产生的原因主要有:

发送方连续发送多个小数据包,由于网络传输的特性,这些小数据包可能会被合并成一个大数据包。
接收方的应用程序不及时读取数据,导致数据在接收缓冲区中积累,最终一次性读取了多个数据包。

6 OSI 的七层模型都有哪些?
物理层(Physical Layer):负责传输比特流,定义物理接口、电气特性和传输介质等。
数据链路层(Data Link Layer):处理数据帧的传输和识别,提供可靠的点对点数据传输。
网络层(Network Layer):进行数据包的路由选择和转发,实现不同网络之间的通信。
传输层(Transport Layer):提供可靠的端到端数据传输,如TCP和UDP协议。
会话层(Session Layer):负责建立、管理和终止会话连接,提供会话状态控制。
表示层(Presentation Layer):处理数据的表示和转换,确保不同系统间的数据格式兼容。
应用层(Application Layer):提供用户与网络应用的接口,实现特定的应用功能。

7 get 和 post 请求有哪些区别?
GET请求用于从服务器获取资源,而POST请求用于向服务器提交数据。
GET请求将参数以查询字符串的形式附加在URL后面,而POST请求将参数放在请求体中。
GET请求的参数有长度限制,通常在2KB到8KB之间,而POST请求没有固定的限制。
GET请求可被缓存,可以通过浏览器的历史记录等方式重新访问,而POST请求不会被缓存。
GET请求在浏览器回退时会重新发起请求,而POST请求不会。

8 如何实现跨域?
CORS(跨域资源共享):通过设置响应头中的Access-Control-Allow-Origin字段来允许指定域名的请求跨域访问。
JSONP(JSON with Padding):利用<script>标签可以跨域加载资源的特性,在客户端动态创建<script>标签,通过回调函数的方式获取跨域数据。
代理服务器:在同源策略没有限制的服务器上设置一个代理接口,用于转发跨域请求和响应。
WebSocket:使用WebSocket协议进行双向通信,不受同源策略的限制。

9 说一下 JSONP 实现原理?
客户端动态创建<script>标签,src属性指向跨域请求的URL,并通过回调函数名作为URL的参数传递给服务器。
服务器接收到请求后,将响应数据包装在回调函数中,并返回给客户端。
客户端解析响应数据时,由于是<script>标签加载的资源,因此会自动执行回调函数,并将响应数据作为参数传递给回调函数。
客户端在回调函数中处理响应数据,完成跨域数据请求。
需要注意的是,JSONP只支持GET请求,并且存在安全性问题,因为它依赖于服务器返回的代码的可信任性。因此,在使用JSONP时,必须确保获取的数据来源可信,以防止恶意代码的注入攻击。

文章来源:https://blog.csdn.net/shumeigang/article/details/135164630
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。