跳至主要内容

从向浏览器中输入一个URL到目标界面呈现,整个过程中发生了什么?


一、浏览器解析URL


解析URL中的参数,将域名和请求的资源分离,确定目标服务器。


 二、浏览器封装HTTP请求报文


对URL解析之后,浏览器确定了目标服务器和目标服务器中的资源路径,然后需要根据这些信息封装程一个HTTP请求报文发送出去。

报文分为请求行、请求头、请求体


三、DNS域名解析


封装好HTTP请求报文后,还需要根据获取域名对应的目标服务器的IP地址,因此DNS协议会做以下事:

1. 首先搜索浏览器的DNS缓存,缓存中维护着一张域名与IP地址的对应表。

2. 若浏览器缓存中没有,则则查找操作系统的DNS缓存。

3. 若仍没命中,则操作系统会将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,成功则返回结果(注意:主机和本地域名服务器之间的查询方式是递归查询)。

4. 若本地域名服务器的DNS缓存中没有命中,则本地域名服务器向根域名发送请求。根域名返回顶级域名服务器IP,本地域名服务器再向顶级域名服务器发送请求,会被返回权威服务器IP,本地域名服务器再向权威服务器发送请求,权威服务器会返回目标服务器IP。

5. 本地域名服务器会将得到的IP地址返回给浏览器,同时自己也将IP地址缓存起来。

6. 浏览器得到了域名对应的IP地址,并将其缓存。注:DNS使用UDP协议,也就是上面各种请求和转发,都是基于UDP这个无连接协议的。


四、建立TCP连接


获取到目标服务器IP地址之后,浏览器就可以向其发送封装好的HTTP请求报文了。发送请求就需要TCP通过三次握手为浏览器和服务器之间建立可靠的连接,保证双方都具有可靠接受和发送能力。


五、浏览器发送请求


TCP三次握手完成之后,浏览器与目标服务器之间就建立了一条可靠的虚拟通道,于是浏览器就可以发送自己的HTTP请求报文了。


需要注意的是,HTTP 请求报文或者响应报文在 TCP 连接通道上进行传输的时候,由于这些报文比较大,为了更容易和准确可靠的传输,TCP 会将 HTTP 报文按序号分割成若干报文段并加上 TCP 首部,分别进行传输。接收方在收到这些报文段后,按照序号以原来的顺序重组 HTTP 报文。


六、负责传输的IP协议


实际上,TCP 在三次握手建立连接、四次握手断开连接、以及连接建立过程中的收发数据(TCP 报文段)等各阶段操作时,都是通过 IP 协议进行传输的,IP 协议将这些阶段的数据添加 IP 首部封装成 IP 数据报再进行传输。


IP 数据报的首部存有源 IP 地址和 目标 IP 地址。所谓源 IP 地址 就是发送方的 IP 地址;目标 IP 地址就是通过 DNS 域名解析得到的目标服务器的 IP 地址。事实上,IP 协议身处的网络层规定的是:数据报要通过怎样的路径(传输路线)才能到达对方计算机,并传送给对方(路由选择)。


七 、使用 ARP 协议凭借 MAC 地址通信


IP 协议的作用是把各种数据包选择合适的线路传送给对方,而要保证确实传送到对方那里,则需要满足各类条件,其中必要的两个就是 IP 地址 和 MAC 地址。


在网络上,通信的双方在同一局域网内的情况是很少见的,通常是需要多台计算机和网络设备的中转才能连接到对方。而在进行中转时,就需要利用下一站中转设备的 MAC 地址来搜索下一个中转目标。


网络层指定了从哪个主机(「源 IP 地址」)发送到哪个主机(「目的 IP 地址」)。源 IP 地址和目标 IP 地址在传输过程中是不会变化的。


数据链路层则是根据 MAC 地址在一个接一个的区间中进行传输的,每个区间内的出发地址即「源 MAC 地址」,每个区间内的目的地址即「目的 MAC 地址」。显然,随着数据的传输,源 MAC 地址和目的 MAC 地址会不断的发生变化。


网络层选择传输方式,指明了传输线路中的路由器IP,数据链路层就会根据这些设备的IP对应的MAC地址完成传输。


将 IP 地址转化为 MAC 地址,从而在数据链路层精确的传输数据的协议就是 ARP 协议 ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的。并且每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表


八、服务器响应请求


浏览器的  HTTP 请求报文通过 TCP 三次握手建立的连接通道被切分成若干报文段分别发送给服务器,服务器在收到这些报文段后,按照序号以原来的顺序重组  HTTP 请求报文。然后处理并返回一个 HTTP 响应。当然,HTTP 响应报文也要经过和 HTTP 请求报文一样的过程。


九、断开TCP连接


浏览器和服务器都不再需要发送数据后,四次挥手断开 TCP 连接。


十、浏览器显示界面


浏览器接收到服务器返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。


评论

此博客中的热门博文

简单的逻辑学(二)逻辑学的基本原理

逻辑是对思想的剖析。                                                                                                                                                                                                                                                               约翰·洛克                           ...

简单的逻辑学(一) 学习逻辑学的思想准备

 逻辑是智慧的开端,而不是终点。 ——伦纳德·尼莫伊 1、全神贯注 许多错误的产生源于我们注意力的不集中,尤其是在面对相似情景时。相似性使得我们忽略眼前的实际情况,对应该关注的地方视而不见,草率做出决定。 注意力要求我们对所处的每个环境以及组成环境的每个要素都做出敏捷主动的反应。全神贯注与被动接受是不兼容的。不要对周边的事务漠然处之,要用心去看,用心去听。学会关注细节,不因事小而疏忽。 2、确认事实 事实: a、 主观 事实。 b、 客观 事实 事实 是既成的,所以 有其客观性 。它独立于我们的观念而存在。是是需要我们主动去认识,一旦我们忽略它的存在,它就会露出狰狞的面目。 事实客观性 的 两种基本形态 : 事物 和 事件 。 事物: 存在的实体,如动物、蔬菜、矿藏等。 例如白宫就可以看作事物的代表,而林肯遇刺则可以看做事件的代表。事物是比事件更基础的存在形式。 事件: 由事物或事物的表现形式组成。事件是无形的。 在白宫举行国宴,首要条件是白宫和其他相关事物的存在,否则这个事件就不会存在,要存在无形的事件,有形的事物是其基础。 确认事件的存在: a、 实地考察。 b、 通过间接方法证明。 比如值得信赖的人或照片等。 c、 年代久远的事件,可求助于一些可以作为间接证据的事物来确认。 如官方记录、当时的报纸、照片、视频、回忆录、相关档案等。 事物和事件都是客观的,他们都存在于公众领域,原则上可以为每个人所获取。 事实也可以被认为是 主观的 。 主观事实: 由个人亲身经历或间接通过别人的经历确认的事实。 例如,头痛,如果我经历过头痛,我就有第一手资料证明其真实性。但是如果是别人头痛,我就只能间接地听别人说其头痛的情形来建立我对头痛的概念。 因此,主观事实的确认完全依赖于当事人的可靠性。 总结一下如何确认事实: 如果某个事物是我们可以亲身体验的,最可靠的方法就是亲身投入其中,获得第一手资料。 如果没有条件获得第一手资料,我们就必须严格考察所获间接资料的真实性及可靠性,在此基础上确认事物的真实性。 源于主观体验的主观事实,在通常条件下是自动呈现的。但是,由于人脑中的自我错觉获或理性化思维机制,人们甚至可能无法确认关于他们自身的事实。 由于主观事实得以确认的基础是对其他当事人的完全信任,所以你必须首先考虑对其他当事人完全信任的可能性。 3、观念与其对象 我们大脑中的每个...