用户用浏览器访问一个网站的时候背后的过程与步骤是怎样的?

作者:邱永臣叫西门追雪
链接:https://www.zhihu.com/question/20513729/answer/96332435
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

假设你用一个全新的浏览器(第一次启动的那种),访问百度(http://www.baidu.com/),在你敲入网址并按下回车之后,将会发生以下神奇的事情:

浏览器先尝试从Host文件中获取http://www.baidu.com/对应的IP地址,如果能取到当然万事大吉大家都能嗨,如果不能,就使用DNS协议来获取IP咯。

在DNS协议中,PC会向你的本地DNS服务器求助(一般是路由器),希望从本地DNS服务器那里得到百度的IP,得到就好,得不到本地DNS服务器向更高层次的DNS服务器求助.....,最终总能得到百度的IP。


得到百度的IP,下一步是使用TCP协议,建立TCP连接。

在TCP协议中,建立TCP需要与百度服务器握手三次,你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(SYN、ACK),总共来回了3次,称为3次握手。


不过,建立TCP连接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上。虽然已经知道IP,但并无啥用(比如说,你在广东,你知道北京的地理坐标经纬度就能到北京了?你得知道有哪些路通往北京吧你得准备盘缠吧你得花时间吧)。

为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。

我们都知道,你的PC和百度服务器之间一般会有许多路由器之类的东西,IP协议指定了出发地(你的PC)和目的地(服务器);你的数据会经过一个又一个路由器,OSPF决定了会经过那些路由器(用一种叫路由算法的玩意,找出最佳路径);从一个路由器怎么传给下一个路由器?这是ARP协议的JOB,ARP负责求下一个节点的地址(我们不止是要目的地,还要中间节点的地址)。
IP协议使用的是IP地址,整个发送过程中只涉及出发地和目的地2个IP地址,而ARP协议使用的是MAC地址,整个发送过程中涉及到每一个节点的MAC地址


现在,我们能和服务器通信,还建立了TCP连接,下一步干嘛,当然是用HTTP协议请求网页内容咯。
 

你发个HTTP请求报文给服务器,如果服务器禁止你访问它就给你回个"Forbidden",如果它暂时挂掉了就给你回个“内部服务错误”,如果它正常才给你回个“OK“并将你要的数据传给你;如果你还需要其它的东西再去跟它要(它一般还会给你的-_-)。


你收到了服务器的回复,是一坨HTML形式的文本。浏览器必须要能够理解文本的内容,并快速地渲染到屏幕上(浏览器一般用有限自动机来理解文本内容,渲染的话就各看本事了,之所以微软IE卡成狗而谷歌浏览器很6,就是它们的渲染速度不同...)

渲染出来后,你就看到百度的首页了

参考资源链接:[JavaWeb开发环境搭建详解与核心技术](https://wenku.csdn.net/doc/udoosom91u?utm_source=wenku_answer2doc_content) 在Windows系统上搭建Java Web开发环境涉及多个步骤,包括JDK安装、Tomcat配置、Eclipse/MyEclipse集成以及理解浏览器与服务器的交互过程。首先,选择适合你系统的JDK版本进行安装,设置环境变量JAVA_HOME指向JDK安装目录,并将%JAVA_HOME%\bin添加到系统路径。安装完成后,打开命令提示符,输入java -version和javac -version检查安装是否成功。接着,下载并安装Tomcat,解压缩到指定目录,通过运行bin/startup.bat启动Tomcat服务器,并在浏览器访问***确认服务器正常运行。然后,安装Eclipse或MyEclipse,并通过Help->Install New Software...安装Web开发工具包(WTP),配置服务器运行环境指向Tomcat的安装目录。最后,创建一个简单的Web项目,并在服务器上部署运行,观察浏览器请求Web页面,服务器处理请求并返回响应的过程,这一过程涉及到了HTTP协议的请求和响应机制,Tomcat作为Web服务器解释和处理JSP和Servlet请求,并返回动态生成的内容给浏览器。这个环境搭建过程不仅是开发的基础,也是理解Web交互原理的关键。如果需要更深入的学习和了解,可以参考《JavaWeb开发环境搭建详解与核心技术》这本资料,它提供了详细的配置步骤背后的原理,帮助你构建稳固的Java Web开发基础。 参考资源链接:[JavaWeb开发环境搭建详解与核心技术](https://wenku.csdn.net/doc/udoosom91u?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值