精华内容
下载资源
问答
  • 刚装的MyEclipse 8.5 ,Tomcat启动正常 在地址栏中输入http://localhost:8080/出现HTTP400错误找不到网页 使用的是8080端口
  • 尽然出现了Forbidden You don't have permission to access /phpMyAdmin on this server. 求解啊,搞了好久[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img]
  • 浏览器地址栏中输入URL后发生了什么 基本流程: ①查询ip地址 ②建立tcp连接,接入服务器 ③浏览器发起http请求 ④服务器后台操作并做出http响应 ⑤网页的解析与渲染 详细步骤如下: 查询ip地址 ①...

    在浏览器地址栏中输入URL后发生了什么

    基本流程:

    ①查询ip地址

    ②建立tcp连接,接入服务器

    ③浏览器发起http请求

    ④服务器后台操作并做出http响应

    ⑤网页的解析与渲染

     

    详细步骤如下:

    查询ip地址

    ①浏览器解析出url中的域名。

    ②查询浏览器的DNS缓存。

    ③浏览器中没有DNS缓存,则查找本地客户端hosts文件有无对应的ip地址。

    ④hosts中无,则查找本地DNS服务器(运营商提供的DNS服务器)有无对应的DNS缓存。

    ⑤若本地DNS没有DNS缓存,则向根服务器查询,进行递归查找。

    ⑥递归查找从顶级域名开始(如.com),一步步缩小范围,最终客户端取得ip地址。

     

    tcp连接与http连接

    ①http协议建立在tcp协议之上,http请求前,需先进行tcp连接,形成客户端到服务器的稳定的通道。俗称TCP的三次握手。

    ②tcp连接完成后,http请求开始,请求有多种方式,常见的有get,post等。

    ③http请求包含请求头,也可能包含请求体两部分,请求头中包含我们希望对请求文件的操作的信息,请求体中包含传递给后台的参数。

    ④服务器收到http请求后,后台开始工作,如负载平衡,跨域等,这里就是后端的工作了。

    ⑤文件处理完毕,生成响应数据包,响应也包含两部分,响应头和相应体,响应体就是我们所请求的文件。

    ⑥经过网络传输,文件被下载到本地客户端,客户端开始加载。

     

    html渲染

    ①客户端浏览器加载了html文件后,由上到下解析html为DOM树(DOM Tree)。

    ②遇到css文件,css中的url发起http请求。

    ③这是第二次http请求,由于http1.1协议增加了Connection: keep-alive声明,故tcp连接不会关闭,可以复用。

    ④http连接是无状态连接,客户端与服务器端需要重新发起请求--响应。

    在请求css的过程中,解析器继续解析html,然后到了script标签。

    ⑤由于script可能会改变DOM结构,故解析器停止生成DOM树,解析器被js阻塞,等待js文件发起http请求,然后加载。这是第三次http请求。js执行完成后解析器继续解析。

    ⑥由于css文件可能会影响js文件的执行结果,因此需等css文件加载完成后再执行。

    ⑦浏览器收到css文件后,开始解析css文件为CSSOM树(CSS Rule Tree)。

    ⑧CSSOM树生成后,DOM Tree与CSS Rule Tree结合生成渲染树(Render Tree)。

    ⑨Render Tree会被css文件阻塞,渲染树生成后,先布局,绘制渲染树中节点的属性(位置,宽度,大小等),然后渲染,页面就会呈现信息。

    ⑩继续边解析边渲染,遇到了另一个js文件,js文件执行后改变了DOM树,渲染树从被改变的dom开始再次渲染。

    ⑪继续向下渲染,碰到一个img标签,浏览器发起http请求,不会等待img加载完成,继续向下渲染,之后再重新渲染此部分。

    ⑫DOM树遇到html结束标签,停止解析,进而渲染结束。

     

    从此可以得出网站的一些优化的方法:

    ①减少DNS查询:将服务器域名的ip信息加入本地host文件。

    ②减少http请求数量,对于图片使用雪碧图,对于html文件和css文件,js文件分别进行合并操作。

    ③减少下载时间:压缩图片,使用压缩应用压缩文档中的空格,删除文件多余的语句和注释,创造自己的js精简库和精简框架,使用本地浏览器缓存。

    ④提前渲染开始时间:将css链接放在html头部。

    ⑤减轻解析器的阻塞:将js链接放在body尾部。

     

     

    转载于:https://www.cnblogs.com/yanruizhe/p/11462462.html

    展开全文
  • 浏览器地址栏中输入URL后发生了什么 基本流程: ①查询ip地址 ②建立tcp连接,接入服务器 ③浏览器发起http请求 ④服务器后台操作并做出http响应 ⑤网页的解析与渲染 详细步骤如下: 查询ip地址 ①浏览器解析出url...

    在浏览器地址栏中输入URL后发生了什么
    基本流程:

    ①查询ip地址

    ②建立tcp连接,接入服务器

    ③浏览器发起http请求

    ④服务器后台操作并做出http响应

    ⑤网页的解析与渲染

    详细步骤如下:
    查询ip地址
    ①浏览器解析出url中的域名。

    ②查询浏览器的DNS缓存。

    ③浏览器中没有DNS缓存,则查找本地客户端hosts文件有无对应的ip地址。

    ④hosts中无,则查找本地DNS服务器(运营商提供的DNS服务器)有无对应的DNS缓存。

    ⑤若本地DNS没有DNS缓存,则向根服务器查询,进行递归查找。

    ⑥递归查找从顶级域名开始(如.com),一步步缩小范围,最终客户端取得ip地址。

    tcp连接与http连接
    ①http协议建立在tcp协议之上,http请求前,需先进行tcp连接,形成客户端到服务器的稳定的通道。俗称TCP的三次握手。

    ②tcp连接完成后,http请求开始,请求有多种方式,常见的有get,post等。

    ③http请求包含请求头,也可能包含请求体两部分,请求头中包含我们希望对请求文件的操作的信息,请求体中包含传递给后台的参数。

    ④服务器收到http请求后,后台开始工作,如负载平衡,跨域等,这里就是后端的工作了。

    ⑤文件处理完毕,生成响应数据包,响应也包含两部分,响应头和相应体,响应体就是我们所请求的文件。

    ⑥经过网络传输,文件被下载到本地客户端,客户端开始加载。

    html渲染
    ①客户端浏览器加载了html文件后,由上到下解析html为DOM树(DOM Tree)。

    ②遇到css文件,css中的url发起http请求。

    ③这是第二次http请求,由于http1.1协议增加了Connection: keep-alive声明,故tcp连接不会关闭,可以复用。

    ④http连接是无状态连接,客户端与服务器端需要重新发起请求–响应。

    在请求css的过程中,解析器继续解析html,然后到了script标签。

    ⑤由于script可能会改变DOM结构,故解析器停止生成DOM树,解析器被js阻塞,等待js文件发起http请求,然后加载。这是第三次http请求。js执行完成后解析器继续解析。

    ⑥由于css文件可能会影响js文件的执行结果,因此需等css文件加载完成后再执行。

    ⑦浏览器收到css文件后,开始解析css文件为CSSOM树(CSS Rule Tree)。

    ⑧CSSOM树生成后,DOM Tree与CSS Rule Tree结合生成渲染树(Render Tree)。

    ⑨Render Tree会被css文件阻塞,渲染树生成后,先布局,绘制渲染树中节点的属性(位置,宽度,大小等),然后渲染,页面就会呈现信息。

    ⑩继续边解析边渲染,遇到了另一个js文件,js文件执行后改变了DOM树,渲染树从被改变的dom开始再次渲染。

    ⑪继续向下渲染,碰到一个img标签,浏览器发起http请求,不会等待img加载完成,继续向下渲染,之后再重新渲染此部分。

    ⑫DOM树遇到html结束标签,停止解析,进而渲染结束。

    从此可以得出网站的一些优化的方法:
    ①减少DNS查询:将服务器域名的ip信息加入本地host文件。

    ②减少http请求数量,对于图片使用雪碧图,对于html文件和css文件,js文件分别进行合并操作。

    ③减少下载时间:压缩图片,使用压缩应用压缩文档中的空格,删除文件多余的语句和注释,创造自己的js精简库和精简框架,使用本地浏览器缓存。

    ④提前渲染开始时间:将css链接放在html头部。

    ⑤减轻解析器的阻塞:将js链接放在body尾部。

    展开全文
  • 地址栏输入URL到页面加载完成发生了什么? 总体的大概是有以下几个步骤: 浏览器输入地址后按下回车 浏览器查看当前页面是否被缓存,并比较缓存是否过期 DNS解析相应的ip 根据IP建立TCP连接(三次握手) ...

    从地址栏输入URL到页面加载完成发生了什么?

    总体的大概是有以下几个步骤:

    1. 浏览器输入地址后按下回车
    2. 浏览器查看当前页面是否被缓存,并比较缓存是否过期
    3. DNS解析相应的ip
    4. 根据IP建立TCP连接(三次握手)
    5. HTTP发起请求,
    6. 服务器处理请求,浏览器接受HTTP响应
    7. 页面渲染,构建DOM树
    8. 关闭TCP连接(四次挥手)

     

    1、URL

    常见的URL是由协议名,域名,端口号这三部分组成,这里的端口号一般是默认的,索引隐藏。常见的协议是HTTP协议,除此之外还有加密的HTTPS,FTP,FILE等。HTTP,默认端口是80,HTTPS默认端口是443,

    同源策略:

          一个源:如果是两个页面的协议,端口,域名都相同,则这个页面具有相同的源。

    同源策略是浏览器的一个安全功能。不同源的客户端在脚本在没有明确授权的情况下,不能读写的对方的资源。

    2、缓存

    HTTP的缓存有多种类型,根据是否需要重新向服务器发起请求来分类,可以将其分为强制缓存和对比缓存。

    强制缓存,判断HTTP首部字段:cache-control Expires

           Expires是一个‘绝对时间,即服务器时间。浏览器检查当前如果还没失效,就直接使用缓存文件。这种处理方法存在一个问题就是客户端时间和浏览器时间可能会不一样,所以这种方法很少使用。

           cache-control:中的max-age保存一个相对时间,例如max-age=154545s的这样一个值,浏览器接收到文件后,缓存在max-age时间内的就是有效。如果Expires和cache-control同时存在,浏览器是先使用cache-control。

     对比缓存通过HTTP的last-modified,Etag字段进行判断。

      last-modified是第一次请求资源时,服务器返回的字段,表示最后一次更新的时间。下一次浏览器请求资源时就发送if-modified-since字段。服务器用本地Last-modified时间与if-modified-since时间比较,如果不一致则认为缓存已过期并返回新资源给浏览器;如果时间一致则发送304状态码,让浏览器继续使用缓存。

      Etag:资源的实体标识(哈希字符串),当资源内容更新时,Etag会改变。服务器会判断Etag是否发生变化,如果变化则返回新资源,否则返回304。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329142757404-377860259.png

    3、DNS域名解析

      我们知道在地址栏输入的域名并不是最后资源所在的真实位置,域名只是与IP地址的一个映射。网络服务器的IP地址那么多,我们不可能去记一串串的数字,因此域名就产生了,域名解析的过程实际是将域名还原为IP地址的过程。

      首先浏览器先检查本地hosts文件是否有这个网址映射关系,如果有就调用这个IP地址映射,完成域名解析。

      如果没找到则会查找本地DNS解析器缓存,如果查找到则返回。

      如果还是没有找到则会查找本地DNS服务器,如果查找到则返回。

      最后迭代查询,按根域服务器 ->顶级域,.cn->第二层域,hb.cn ->子域,www.hb.cn的顺序找到IP地址。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329144552311-345405404.jpg

      递归查询,按上一级DNS服务器->上上级->....逐级向上查询找到IP地址。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329144611358-1044454178.jpg

    4、TCP连接

      在通过第一步的DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。

      第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认; 

      第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

      第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

      完成三次握手,客户端与服务器开始传送数据。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329145607592-1103856922.png

    5、浏览器向服务器发送HTTP请求

    http协议报文

        1.请求报文(请求行/请求头/请求数据/空行)

            请求行

                求方法字段、URL字段和HTTP协议版本

                例如:GET /index.html HTTP/1.1

                    get方法将数据拼接在url后面,传递参数受限

                请求方法:

                    GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

            请求头(key value形式)

                User-Agent:产生请求的浏览器类型。

                Accept:客户端可识别的内容类型列表。

                Host:主机地址

            请求数据

                post方法中,会把数据以key value形式发送请求

            空行

                发送回车符和换行符,通知服务器以下不再有请求头

        2.响应报文(状态行、消息报头、响应正文)

            状态行

            消息报头

            响应正文

    例如请求数据:

    1 GET/sample.jspHTTP/1.1   ------------>请求行

    2 Accept:image/gif.image/jpeg,*/*

    3 Accept-Language:zh-cn

    4 Connection:Keep-Alive

    5 Host:localhost

    6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

    7 Accept-Encoding:gzip,deflate    ---------------2-7为请求行

    8

    9 username=jinqiao&password=1234

    第一行为http请求行,包含方法,URI 和http版本

    2-7为请求头,包含浏览器,主机,接受的编码方式和压缩方式

    第8行表示一个空行 表示请求头结束 这个空行是必须的

    第9行是数据体,比如是需要查询的信息。

    http响应体由三部分组成:

    http响应由三个部分组成分别是状态行,响应头,响应正文。

    状态行是由:HTTP-Version+Status-Code+Reason-Phrase

    比如:HTTP/1.1 200 ok

    分别表示http版本 + 状态码 + 状态代码的文本描述

    6、浏览器接收响应

      服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。

      状态码主要包括以下部分

      1xx:指示信息–表示请求已接收,继续处理。

      2xx:成功–表示请求已被成功接收、理解、接受。

      3xx:重定向–要完成请求必须进行更进一步的操作。

      4xx:客户端错误–请求有语法错误或请求无法实现。

      5xx:服务器端错误–服务器未能实现合法的请求。

      响应头主要由Cache-Control、 Connection、Date、Pragma等组成。

      响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。

    7、页面渲染

      如果说响应的内容是HTML文档的话,就需要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面之前,需要构建DOM树和CSSOM树。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329153234951-1328599578.pnghttps://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329153247436-670728382.png

      在浏览器还没接收到完整的 HTML 文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送 HTTP 请求重复上述的步骤。在收到 CSS 文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相应位置。在这一过程中可能会触发页面的重绘或重排。这里就涉及了两个重要概念:Reflow和Repaint。

      Reflow,也称作Layout,中文叫回流,一般意味着元素的内容、结构、位置或尺寸发生了变化,需要重新计算样式和渲染树,这个过程称为Reflow。

      Repaint,中文重绘,意味着元素发生的改变只是影响了元素的一些外观之类的时候(例如,背景色,边框颜色,文字颜色等),此时只需要应用新样式绘制这个元素就OK了,这个过程称为Repaint。

      所以说Reflow的成本比Repaint的成本高得多的多。DOM树里的每个结点都会有reflow方法,一个结点的reflow很有可能导致子结点,甚至父点以及同级结点的reflow。

      下面这些动作有很大可能会是成本比较高的:

    增加、删除、修改DOM结点时,会导致Reflow或Repaint

    移动DOM的位置,或是搞个动画的时候

    内容发生变化

    修改CSS样式的时候

    Resize窗口的时候(移动端没有这个问题),或是滚动的时候

    修改网页的默认字体时

      基本上来说,reflow有如下的几个原因:

    Initial,网页初始化的时候

    Incremental,一些js在操作DOM树时

    Resize,其些元件的尺寸变了

    StyleChange,如果CSS的属性发生变化了

    Dirty,几个Incremental的reflow发生在同一个frame的子树上

    8、关闭TCP连接或继续保持连接

      通过四次挥手关闭连接(FIN ACK, ACK, FIN ACK, ACK)。

      https://images2015.cnblogs.com/blog/1034346/201703/1034346-20170329153945389-2019926409.png

      第一次挥手是浏览器发完数据后,发送FIN请求断开连接。

      第二次挥手是服务器发送ACK表示同意,如果在这一次服务器也发送FIN请求断开连接似乎也没有不妥,但考虑到服务器可能还有数据要发送,所以服务器发送FIN应该放在第三次挥手中。

    这样浏览器需要返回ACK表示同意,也就是第四次挥手。

     

    转载:https://www.cnblogs.com/daijinxue/p/6640153.html

    展开全文
  • 怎么样才可以IE地址栏中输入中文的查询条件 例: http://www.google.cn/search?source=igchina&hl=zh-CN&rlz=1G1GGLQ_ZH-CNCN342&q=查询条件&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq= 路径中的"查询条件"可以...
  • * 浏览器地址栏输入地址后 敲回车 经历哪些过程 * https://news.163.com/index/html * 如果想访问一个服务器,咱们必须要知道的就是这个的服务器的IP地址 * DNS 域名系统 把访问的 域名对应的IP地址返回 ...

    /*
    * 在浏览器地址栏输入地址后 敲回车 经历哪些过程
    * https://news.163.com/index/html
    * 如果想访问一个服务器,咱们必须要知道的就是这个的服务器的IP地址
    * DNS 域名系统 把访问的 域名对应的IP地址返回
    * 1-输入网址后,浏览器(客户端)会先去 自己的缓存中查找对应的IP;若缓存中没有对应的IP
    * 则会去 本地区的DNS服务器中查找 对应的IP;若还没有 则去上级的DNS中查找,直到找到这个域名对应的IP地址;返回的时候,浏览器会对这个域名进行缓存,本地区的DNS服务器也会做一个缓存;下次本机再去访问时,直接从本地缓存区获取IP;
    * 2-通过对应的IP访问对应的服务器
    * 3-服务器通过对应的路径 把客户端请求的 内容返回给客户端(html.css这些源代码给服务端)
    * 4-客户端接受到源代码后 会先进行DOM树的计算;然后再根据加载的css文件渲染DOM树
    * 最后再根据加载过来的JS对DOM进行修改
    *
    *
    * 从请求开始 到 请求结束 的整个过程 我们称为一次‘http事务’
    * */

    展开全文
  • 当我们浏览器的地址栏输入www.cnblogs.com,然后回车,回车到看到页面到底发生了什么呢? 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 -...
  • 1、第一步发起请求:浏览器地址栏中输入地址2、浏览器将请求封装成http请求报文3、浏览器将封装好的请求报文发给web服务器4、Web服务器将报文给网站内部的C#代码进行处理,因为web服务器自己是处理不了的。...
  • 对于Struts2、Spring3、Hibernate3集成使用的项目来说,对用户请求的控制...本文主要解决的就是①浏览器地址栏中直接输入url访问action的问题②过滤不想被拦截的方法例如对于如下链接:http://localhost:8080/absSys...
  • 对于Struts2、Spring3、Hibernate3集成使用的项目来说,对用户请求的控制是非常重要的,有些操作...①浏览器地址栏中直接输入url访问action的问题 ②过滤不想被拦截的方法 例如对于如下链接: http://loc
  • 当用户浏览器地址栏中输入网址,到看到页面,经历的步骤 1.解析输入的URL地址 http://www.zhufeng.cn:80/index.html?lx=teacher#video 传输协议(把信息客户端和服务器端进行传递,类似于快递小哥...
  • 由于公司软件要求使用一个XML文件进行软件更新,需要从公司网站提供一个XML的地址,根据提供的参数从数据库获取数据并形成指定格式的XML。从软件传递过来的参数是以... 由于type参数包含了中文,http://www.chen...
  • 当我们浏览器网址中输入一个地址,点击回车后发生了什么?分为两种情况,http事务和https事务。先讲http事务: 1、浏览器(客户端)进行了地址解析。 2、将解析出的域名进行dns解析。 3、通过ip寻址和arp,找到...
  • 假设我们访问的是‘http://www.baidu.com/stu/index.html’这个地址,按下enter键后我们可以看到百度首页面 都经历了哪些事情 **【request请求阶段】 ...3.通过在地址栏中输入的端口号(没有输入是因为...
  • Python简单说就是模仿浏览器打开网页。...如果协议或主机名不合法,浏览器会将地址栏中输入的地址传送给默认的搜索引擎。大部分情况下,把文字传递给搜索引擎的时候,URL会带有特定的一串字符,用来告诉搜.
  • 浏览器地址栏输入url并回车后,需要先把url地址解析为对应的ip地址才能发起HTTP请求 浏览器搜索自身DNS缓存,查找url对应ip地址 如果没找到,则搜索操作系统DNS缓存,查找url对应ip地址 如果没找到,...
  • 1. 域名解析 2. 发起TCP的三次握手 3. 建立起TCP连接后发起http请求 4. 服务器响应http请求...5. 浏览器解析html代码,并请求html代码的资源(css JavaScript 图片) 6. 浏览器对页面进行渲染呈现 更多请参考。 ...
  • 地址栏输入url后按回车发生了什么? 通常的简单的url像 ...我们浏览器中输入域名,通过DNS解析出ip地址 (DNS域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心
  • 2.浏览器通过用户在地址栏中输入的URL构建HTTP请求报文 3.浏览器发起DNS解析请求,将域名转换为IP地址 4.浏览器将请求报文发给服务器 5.服务器接收请求报文,并解析 6.服务器处理用户请求,并将处理结果封装成...
  • 浏览器地址栏输入URL 浏览器查看缓存,如果请求资源缓存并且新鲜,跳转到转码步骤 如果资源未缓存,发起新请求 如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证。 ...
  • 2、在地址栏输入网址敲回车发生了什么? 通常的简单的url像 http://www.baidu.com/ 包含了 通信协议 也就是(http,https),服务器地址(www.baidu.com),端口号(http默认是80,https默认是443端口,https也就是...
  • 1. 我们浏览器中输入网址。 2. 浏览器查找域名对应的IP地址DNS查找过程为: 浏览器缓存->系统缓存->路由器缓存->ISP DNS缓存->递归搜索 递归搜索过程为:从根域名服务器到顶级域名服务器到你查询的域名服务器。 3...
  • tomcat conf下面的 server.xml 文件 Host标签下 加入一下内容 //配置 这种发布方式 现有的ROOT 文件修改成ROOT1 //oracle数据库连接JNDI tomcat conf下面的 context.xml 文件 标签下 ...
  • http://blog.csdn.net/ideality_hunter/article/details/71714786

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,544
精华内容 1,417
关键字:

在地址栏中输入http