美文网首页
计算机网络学习(六)----输入网址的思考

计算机网络学习(六)----输入网址的思考

作者: 彳亍口巴 | 来源:发表于2020-03-22 22:29 被阅读0次

从输入网址到获得页面的过程

  (1). 浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

  (2). 浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;

  (3). TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;

  (4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

  (5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

  (6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。


1. 发请求

1.1 DNS

先看发请求,假设你在浏览器里面输入网址,网址一般是一个域名,只有域名还需要知道具体的IP 地点,需要使用DNS 域名解析协议去查找这个域名的IP 地址。

1.2 HTTP

知道了目标IP 地址,浏览器就开始打包它的请求。对于普通的浏览请求,往往会使用HTTP协议;现在为了安全,往往需要进行加密传输,因而会使用HTTPS协议。

1.3 TCP

DNS、HTTP 所在的层我们称为应用层。经过应用层封装后,浏览器会将应用层的数据包交给下一层传输层去传输。对于HTTP 请求,主要使用的是 TCP 协议。

1.4 IP

传输层封装完毕后,浏览器会将包交给操作系统的网络层,对应的是 IP 协议。

经过IP 层的封装,数据包成为IP 包,里面会有浏览器所在机器的 IP 地址和目标服务器 IP 地址,然后操作系统再将IP 包发给网关,这里网关往往是一个路由器。在操作系统启动的时候会通过 DHCP 协议配置电脑的 IP 地址和网关 IP 地址, 默认网关IP 地址是 192.168.1.1。

1.5 ARP

这里有个细节需要注意下,操作系统如何将 IP 包发给网关呢?操作系统会给本地局域网所有设备发一条询问请求,谁是 192.168.1.1 啊?网关会回答告诉操作系统网关的MAC 地址是多少,这里获取IP 所在机器MAC 地址的协议是ARP协议,专门用来获取本地网络的MAC 地址。

1.6 网关

在拿到网关的MAC 地址后,操作系统将 IP 包交给下一层 MAC 层。这里网卡会将包发出去,由于这个包里面是有网关的 MAC 地址它就能到达网关。

前面提到网关往往是一个路由器,再收到数据包之后,会判断到目标服务器IP 接下来应该怎么走。

2. 请求传输

2.1 路由协议

网关知道数据包接下来怎么走,这是因为网关作为路由器,相互之间会经常沟通,到哪里应该怎么走,这种沟通的协议称为路由协议。

数据包传向下一个网关,然后问要到目标IP 地址下一步怎么走,这样一直到走到最后一个网关。

2.2 目标服务器

最后一个网关拿到数据包,对着这个局域网吼一声,谁是目标 IP 啊?目标服务器就会回复一个 MAC 地址。数据包就能发送到目标服务器。这里根据IP 获取目标服务器MAC 地址又用到了ARP 协议。

2.3 TCP 回复

目标服务器收到数据包后发现 MAC 地址对上了,就取下 MAC 头,发送给操作系统的网络层,对应的是IP 协议。如果目标 IP 也对上了,就将其交给传输层,也就是TCP 层。

在TPC 这层里,对收到的每个包,都会有一个回复来告诉发送端数据包已经收到了。要注意这个回复不是这次请求的结果,而仅仅是 TCP 层的一个确认回复,因为数据包一旦出了网关,传输过程中可能因为各种原因丢失,所以收到数据包后要报个平安。

发送端如果一段时间没有收到这个回复,在TCP 层会重新发送这个包,直到收到数据包平安到达的回复,这也是为什么TCP 被称为面向连接的可靠的传输协议。

需要注意:这个重试不是你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,是TCP 层自己不断闷头重试。

3. 请求处理

3.1 进程处理

当网络包平安到达 TCP 层之后,TCP 包中有目标端口号,通过这个端口号,可以找到服务器上正在监听这个端口号的进程,假设是一个 Tomcat,这个包将发给这个进程处理。

Tomcat 得到 HTTP 请求的内容,知道了要请求那个网页,往往这个 Tomcat 只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。这个接待员要告诉专门的进程去处理这个网页的内容。

如何告诉相关的进程呢?往往通过 RPC 调用,也就是远程过程调用的方式来实现,这里就用到了RPC 协议。

当处理完毕,服务器就回复一个 HTTPS 的包,这个数据包会像来的时候一样,经过千难万险到达你的电脑,最后浏览器将网页显示给你。

这就是打开一个网页时,请求从浏览器出发,到达网站服务器的过程。

相关文章

网友评论

      本文标题:计算机网络学习(六)----输入网址的思考

      本文链接:https://www.haomeiwen.com/subject/hzybyhtx.html