前言
在上一个文集Java基础回炉中,回顾和深入学习了Java 基础内容,这一文集将回顾Java Web基础。首先,我们从面试题目入手,鸟瞰请求资源的整个过程,然后剖析每个步骤中的知识点,达到各个击破的效果。最后,我们会分析业界对相关步骤进行优化从而演化出来的框架技术。
文集目录
1. 概述
(1)从面试问题出发:
在面试的过程中,面试官经常会问到一个问题。当用户在浏览器客户端地址栏中输入网站,按下enter键之后,到用户获得资源页面的整个过程经历了哪些步骤?
例如在地址栏输入我的多作者平台网址:http://www.timereview.cn/,到获取到下面页面产生了哪些步骤?
若新手在学习Java Web开发之前把这个全局性问题弄清楚,明白在哪个步骤用到了哪些知识点,业内哪些框架对哪个过程进行了优化,这对相关知识的学习非常有指导性意义。
(2)类比借书过程
在用术语讲这个过程之前,我想以更加生活化的例子说明整个流程:
大家都有借书的经历,在这个事情中,读者是资源的索取者、图书馆是资源的保存者,而书籍就是读者想要从图书馆中索取的资源。
那随便一个人都可以去图书馆借书吗?不是的,只有持有读者证的人才能去图书馆借书。所以读者证就是读者和图书馆建立联系的载体,也就是读者和图书馆达成的约定和协议。
好了,你有了读者证,你就有资格到任何图书馆借书吗?又不是的,你只能到读者证对应的图书馆去借书。
然后你拿着读者证去发证的图书馆找书,你想要找到一本叫做《Java Web开发》的书籍,根据你的书籍类型应该是计算机相关的书籍,然后你就会去计算机分类区去找。
如果这本书在图书馆里,你当然能最终借到这本书,然后美滋滋的学习,如果这本书不在或者被借走,那你就收到“sorry,404,你要的资源被外星人带走了”
。
(3)真实过程
那下面我们看看,你在互联网上获取资料,整个过程又到底经历了哪些步骤(这里我们只讲步骤,具体实现将在后面的文章中详细介绍。):
在这件事情中,有Web浏览器、Web服务器和资源三个对象,Web浏览器是资源的索取者,Web服务器是资源的保存者,而资源通常是静态页面或动态页面。
首先,既然你在地址栏输入了链接(URL),根据URL的内容,那么你就知道你要去哪个“图书馆”,去获取哪一本“图书”了,不过当前“图书馆”的这个名字是个别名。
那我们如何根据别名找到它的真实名称,也就是服务器IP地址呢?这时候就要将域名的网络地址部分解析成IP了,这里就涉及到域名解析的问题,后面会详细介绍。
https://www.cnblogs.com/gnss523-webrtc/articles/4834900.html
找到服务器后,浏览器会尝试通过TCP三次握手和服务器建立连接,建立连接之后,浏览器根据Http规范产生请求报文并通过套接字向服务器发送。
当Web服务器收到浏览器的数据请求后,先解析请求报文,定位请求资源。找到资源后,服务器将资源通过TCP套接字回应给客户端,由客户端读取Http报文。
客户端浏览器会将Http报文中的响应数据进行解析,并在浏览器窗口中显示。
综上,当你在览器地址栏键入URL,按下回车之后会经历以下流程:
- URL被发送至DNS 服务器, URL被域名解析软件解析,得到Web服务器IP;
- 根据 IP 地址和默认端口 80,浏览器三次握手和Web服务器建立TCP连接;
- 浏览器发出Http请求报文,报文内容包括URL中资源名称。
- Web服务器收到浏览器的数据请求后,先解析请求报文,根据资源名去定位请求的资源,并根据定位结果产生响应报文,并响应给服务器。
- 一次请求完毕,默认关闭TCP连接;
- 浏览器会将Web服务器响应的数据进行解析,并通过用户友好的界面进行展示。
2.涉及知识点
我们分析了在览器地址栏键入URL,按下回车之后发生的事情,在这个过程中涉及了许多知识,在这里罗列一下,其中的一些知识点也是后面我们需要撰文细讲的内容。
- Web服务器
- URL
- DNS解析原理
- TCP/IP协议,三次握手、四次握手
- Http协议
- 资源形式、服务器如何定位资源
当然这些知识点还只是从大的角度出发,还有很多细节知识需要去掌握,但是我们先俯瞰整个流程,后面再深入相关细节。
3.J2EE Web学习路线图
https://blog.csdn.net/love20165104027/article/details/81271556
上面通过面试问题出发,将浏览器客户端请求资源全过程描述了一遍,并将大的知识点整理出来了。
4. 总结
本篇文章为Java web文集的开篇,主要从面试问题“在浏览器地址栏输入URL,按下回车键后发生了什么?”出发,粗略的介绍每一步骤发生的事情,整理了Java web基础应该学习的知识点,为后面深入具体知识做好准备。
所以,读完这篇文章后应该知道怎么回答上述面试问题了!
网友评论