首页 > 编程知识 正文

阿里java高级面试题及答案,java高级工程师简历模板

时间:2023-05-05 05:28:34 阅读:46056 作者:2088

前言在网络技术中,基于浏览器的B/S结构无论在PC端还是手机端都发挥着重要的作用。 PC端自不必说,手机的很多APP应用都是以APP的形式存在的,但它还是采用了B/S结构。 这些APP应用程序在内部封装了浏览器,包括当今的头条和微信朋友圈,后端仍然是网站。

在开发大型网站和复杂系统方面,Java无疑有很大的优势。 在lava web框架中,Sprig MVC以其强大的功能和简单灵活的使用方式受到越来越多的开发人员的欢迎。

Spring MVC部署很容易,但实际使用起来并不容易。 另外,由于目前没有全面、深入地使用资料,在实际使用过程中,程序员经常会遇到各种不知道解决方法的问题。 对于像Spring MVC这样的开源项目来说。 最好的学习方法当然是分析其源代码。 分析源代码,不仅可以更灵活地使用Spring MVC开发高质量的产品,而且可以学到其中很多优秀的编程技巧设计理念

此次共享PDF文档的资料不仅分析了Spring MVC的源代码,还系统地介绍了网站架构的演变以及 Web开发中所涉及的协议和Tomcat的实现方法。 现在很多程序员都想了解这个知识,但缺乏通俗易懂的资料,这些也是程序员达到更高的层次所需要的知识

说到TCP段结构为TCP协议,首先想到的是“3358www.Sina.com/”和“面向连接”。 是的。 TCP协议旨在允许在客户端和服务器之间建立信任连接。

在谈连接过程之前,我们先看看TCP的消息段结构。 通过这个结构,可以知道TCP可以提供什么样的信息。

这里有几个需要注意的地方:

TCP协议需要可靠(源IP、源端口、目标IP、目标端口),以区别于UDP协议。 这意味着IP地址位于IP段中,而TCP段不包含IP地址信息。 3358www.Sina.com/的长度为20字节,但不确定四元组的长度,因此必须在基本 TCP 头部字段中指明头部的长度在此应该注意的是,头长度字段的单位是32比特,也就是说,4字节,因此该字段的最小值是5。 橙色字段(65选项)用于“回复”对方。 举个例子,服务器接收到对方的数据包后,并不单独发送数据包进行响应,而是稍等片刻,将确认消息附加到http://www.Sina.com/并发送到3358www.Sina .窗口的服务器这对高速和高延迟的网络不太友好。 想想为什么。 幸运的是,TCP添加了http://www.Sina.com/(windowscale )选项,可以缩放此值。 接下来是8个标志位的意思。 也有旧协议,可能没有前两个标志位。

虽然有很多logo,但是放在具体的场景里的话,他们的作用很容易理解。

TCP握手三次是为了在客户机和服务器之间建立连接,这个过程并不复杂,但其中有很多细节需要注意。

在握手过程中,您可以看到客户端和服务器之间总共传递了三条消息。 这三次握手其实是在两台机器之间确认彼此的状态。 一点一点地看看吧。

第一次握手首先为首部长度,第一个数据包设置SYN,即SYN=1,表示该数据包是SYN消息传递段。 也称为确认序号,接收窗口大小,ECE,ACK。 这次发送的目的是告诉服务器自己的下一个是client_isn。 另外,还有未在图中显示的隐式消息。 它向服务器端发送自己想连接的客户端除此之外,客户端还发送捎带,这与三次握手关系不大。 暂时不要按表。

第1段中最需要注意的是此client_isn,即初始序列号。 “RFC07931”指出:

When new connections are created,aninitialsequencenumber(isn ) generatorisemployedwhichselectsanew 32位isn.thegeneratorisbouboum 32 bitclockwhoseloworderbitisincrementedroughlyevery4microseconds.thus,theisncyclesapproximatelyevery 4.55 hours。

翻译过来就是,初始序列号是一个 32 位的(虚拟)计数器,而且这个计数器每 4 微秒加 1,也就是说,ISN 的值每 4.55 小时循环一次。这个举措是为了防止序列号重叠

但即使这样还是会有安全隐患——因为初始 ISN 仍然是可预测的,恶意程序可能会分析 ISN ,然后根据先前使用的 ISN 预测后续 TCP 连接的 ISN,然后进行攻击,一个著名的例子就是「The Mitnick attack2」 。这里摘一段原文:

Mitnick sent SYN request to X-Terminal and received SYN/ACK response. Then he sent RESET response to keep the X-Terminal from being filled up. He repeated this for twenty times. He found there is a pattern between two successive TCP sequence numbers. It turned out that the numbers were not random at all. The latter number was greater than the previous one by 128000.

所以为了让初始序列号更难预测,现代系统常常使用半随机的方法选择初始序列号,详细的方法就不在这里展开了。

第二次握手

当服务器接收到客户端的连接请求后,就会向客户端发送 ACK 表示自己收到了连接请求,而且,服务器还得把自己的初始序列号告诉客户端,这其实是两个步骤,但是发送一个数据包就可以完成,用的就是前面说的捎带技术。图里的 ACK = client_isn + 1 是指确认号字段的值,要注意和 ACK 标志位区分开。

ACK 字段其实也有不少需要注意的点,不过这个跟滑动窗口一块讲比较直观,这里就先不提了。

这里重点强调一下,当一个 SYN 报文段到达的时候,服务器会检查处于 SYN_RCVD 状态的连接数目是否超过了 tcp_max_syn_backlog 这个参数,如果超过了,服务器就会拒绝连接。当然,这个也会被黑客所利用,「SYN Flood」就是个很好的例子。因为服务器在回复 SYN-ACK 后,会等待客户端的 ACK ,如果一定时间内没有收到,认为是丢包了,就重发 SYN-ACK,重复几次后才会断开这个连接,linux 可能要一分钟才会断开,所以攻击者如果制造一大批 SYN 请求而不回复,服务器的 SYN 队列很快就被耗尽,这一段时间里,正常的连接也会得不到响应。

服务器的这种状态称为静默(muted)。为了抵御 SYN Flood 攻击,服务器可以采用「SYN cookies」,这种思想是,当 SYN 到达时,并不直接为其分配内存,而是把这条连接的信息编码并保存在 SYN-ACK 报文段的序列号字段,如果客户端回复了,服务器再从 ACK 字段里解算出 SYN 报文的重要信息(有点黑魔法的感觉了),验证成功后才为该连接分配内存。这样,服务器不会响应攻击者的请求,正常连接则不会受到影响。

但 SYN cookies 本身有一些限制,并不适合作为默认选项,有兴趣可以自行 Google。

第三次握手

这是建立 TCP 连接的最后一步,经过前两次握手,客户端(服务器)已经知道对方的滑动窗口大小初始序列号等信息了,这不就完了吗?为什么还要第三次握手?

这是因为服务器虽然把数据包发出去了,但他还不知道客户端是否收到了这个包,所以服务器需要等待客户端返回一个 ACK,表明客户端收到了数据,至此,连接完成。

连接建立后,进入传输数据的阶段,这里就涉及到很多很多技术,我会另写文章。

四次挥手

有了三次握手的基础,四次挥手就比较容易理解了:

四次挥手的过程其实很简单,就是服务器和客户端互相发送 FIN 和 ACK 报文段,告知对方要断开连接。

四次挥手里值得关注的一点就是 TIME_WAIT 状态,也就是说主动关闭连接的一方,即使收到了对方的 FIN 报文,也还要等待 2MSL 的时间才会彻底关闭这条连接。(这里面的 MSL 指的是最大段生成期,指的是报文段在网络中被允许存在的最长时间。)可为什么不直接关闭连接呢

一个原因是,第四次挥手的 ACK 报文段不一定到达了服务器,为了不让服务器一直处于 LAST_ACK 状态(服务器会重发 FIN,直到收到 ACK),客户端还得等一会儿,看看是否需要重发。假如真的丢包了,服务器发送 FIN ,这个 FIN 报文到达客户端时不会超过 2MSL(一来一回最多 2MSL),这时候客户端这边的 TCP 还没关掉,还能重发 ACK。

另一个原因是,经过 2MSL 之后,网络中与该连接相关的包都已经消失了,不会干扰新连接。我们来看一个例子:假如客户端向服务器建立了新的连接旧连接中某些延迟的数据坚持到了新连接建立完毕,而且序列号刚好还在滑动窗口内,服务器就误把它当成新连接的数据包接收,如下图所示:

2MSL 机制就避免了这种情况。

最后

如果大家需要这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档的话,可以戳这里即可免费获取!

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

bFJ1cmN1R2dB)**

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

[外链图片转存中…(img-8DjiqCdL-1624466981387)]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。