从页面输入网址,回车到显示内容,这中间到底经历了什么

简介: 阿粉在学习计算机网络的内容时,脑子里面突然冒出来一个问题:当我们在一个浏览器界面输入网址,回车到界面显示内容,这中间经历了什么?

写在前面

阿粉在学习计算机网络的内容时,脑子里面突然冒出来一个问题:当我们在一个浏览器界面输入网址,回车到界面显示内容,这中间经历了什么?

先不要往下看,你能想到什么?

下面是我能想到的过程,有可能不是很准确,如有错误之处,还望指出。

计算机网络大体上可以分为应用层,传输层,网络层,链路层和物理层。

当我们在页面输入网址,然后回车到显示内容时,我通过上面的层次依次来说。

5.jpg

详细过程

应用层

假设我们现在要访问 google 网站,那么第一步要做的就是打开浏览器,在地址栏中输入 google 的地址,当你点击回车时,浏览器知道你要访问 google 了,但是对于浏览器来说,这只是一个名字,但是具体在哪儿它是不知道的。比如,你知道某位明星的名字,但是他/她具体的地址在哪儿你不清楚,对吧?对于浏览器来说也是这样。

比较好的一点是,想要访问网站,不像你想见明星那么难。此时浏览器通过 DNS 找到你要访问的具体网站地址。

当然了,如果你想要更准确的找到地址,也可以通过 HTTPDNS 去查找。通过 DNS 或者 HTTPDNS 现在浏览器拿到了具体的 IP 地址,随后它就开始打包你的请求。对于举的例子来说,你只是想要访问一下,一般使用 HTTP 协议就可以了;如果有些请求会涉及到你的账号密码,就会使用 HTTPS 协议来保证你的数据安全。

传输层

到这里, DNS , HTTP , HTTPS 所在的层称之为应用层。

现在应用层的事情做完了,接下来应用层会将以上相关数据进行封装,经过 Socket 编程,将应用层的包发送给传输层。

如果这个包是使用 HTTP 或者 HTTPS 协议发送过来的,那传输层就会使用 TCP 协议来将数据进行封装;如果是使用 DNS 协议发送过来的,则会使用 UDP 协议来进行封装。

封装完毕之后,浏览器就会将包交给操作系统的网络层。

网络层 + 链路层 + 物理层

这一部分会涉及到网络层 + 链路层 + 物理层,我就不分那么详细了~

网络层的协议是 IP 协议,在 IP 协议中会有源 IP 地址和目标 IP 地址。源 IP 地址也就是浏览器所在机器的 IP 地址,说的再白点儿就是,假设你是使用电脑浏览器发出的访问请求,这个源 IP 地址就是你的电脑 IP 地址 目标 IP 地址就是你想要访问的网站地址。还记得嘛,在应用层,我们根据 DNS 或 HTTPDNS 已经获取到了想要访问网站的具体 IP 地址。

OK ,既然此时操作系统已经知道了目标 IP 地址,接下来它就会想我怎么根据这个目标 IP 地址找到这台机器呢。首先操作系统会看这个 IP 地址是不是在局域网内,如果是的话,从目标 IP 地址就能看出来。但是很明显,想要访问的 google 地址不在本地,在那触不到的远方。

6.jpg

操作系统知道要访问的地址在远方,但是远方在哪儿它也不知道。所以它就将这个数据包发给网关( gateway ),但是它不知道网关是哪儿台机器,这可咋整。

没事儿,反正大家都在一个地方,吼一嗓子不就得了~所以操作系统就大吼了一声:咱们的网关是谁来着。网关就会回答它,我就是,我在这儿呢。

上面的那一声吼,就是 ARP 协议,通过 ARP 协议,就知道了网关的具体地址,也就是 MAC 地址。

接下来这个数据包就到了网关那里。网关一般就是路由器,到某个 IP 地址怎么走,在一个叫做「路由表」中维护着。

出网关就比较复杂了,这里就不详细说了,具体可以看这篇文章: 想出网关?你需要懂得这些

出了网关之后,就需要拿出源 IP 地址和目标 IP 地址。因为只要出了网关,那就是在外面肉搏,如果没有源 IP 地址和目标 IP 地址,就不知道这个请求是从哪儿发出的,要往哪儿去。

现在这个数据包经过了重重关卡,终于找到了目标 IP 地址所在的服务器。此时服务器会首先发送一个接收请求,然后再将数据包一层层解析,在 TCP 头中含有目标端口号,通过这个端口号,就能够找到哪儿个程序的进程正在监听这个端口号,进而我们就找到了我们想要访问的网页。

但是我怎么知道从我这里发出的数据包有没有丢失呢?所以此时 TCP 层会隔一段时间发送一次,这并不是说,页面又发送了一次请求,只是 TCP 自己在闷头重试,直到收到了接收请求。

在我们找到了想要访问的网页之后,接下来就会像来的时候,再原路返回去。

7.jpg

最后:

没想到吧,一个简单的打开界面,竟然涉及到了这么多的知识~

当然你会发现在你输入网址之后敲回车,页面几乎是立刻出来了,这就涉及到了缓存,再深入讲的话,这篇文章就很长了,如果这篇文章引起了你的兴趣,可以继续向下探究,更欢迎留言讨论

相关文章
|
5天前
|
网络协议 Windows
【报错】在浏览器输入localhost无法显示想要的内容
【报错】在浏览器输入localhost无法显示想要的内容
|
3月前
|
缓存 网络协议 前端开发
终极解密输入网址按回车到底发生了什么
终极解密输入网址按回车到底发生了什么
45 1
|
3月前
|
存储 缓存 网络协议
输入网址按回车,到底发生了什么
输入网址按回车,到底发生了什么
31 0
|
4月前
|
域名解析 缓存 网络协议
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)
通过对TCP/IP协议的深入研究,我们可以更好地理解网络通信的整个过程,以及各个协议在其中的作用。这对于我们理解和解决网络通信中的问题非常重要。希望通过本文的学习,能够对TCP/IP协议有更深入的了解,并能够应用到实际的网络通信中。
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(中)
|
4月前
|
网络协议 网络架构
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
当我们键入一个网址后,从键入网址到网页显示之间会发生许多复杂的步骤。这篇文章旨在详细解释这一过程,帮助读者深入了解HTTP、DNS和协议栈等相关知识。通过这篇文章,读者可以消除疑惑,也可巩固对网络通信的理解,从而更好地应用和利用互联网。
你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)
|
5月前
|
Web App开发 前端开发 JavaScript
让谷歌浏览器不再显示不安全内容的提示
让谷歌浏览器不再显示不安全内容的提示
|
9月前
|
网络协议 网络架构
键入网址到网页显示,期间发生了什么?
这个是大厂常问的一道面试题,本期将探讨这个问题怎么答。
|
前端开发 网络协议 搜索推荐
当用户在浏览器输入一个地址,敲回车后发生的事情
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
|
消息中间件 缓存 负载均衡
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?键盘到操作系统、操作系统到浏览器、浏览器到服务器、服务器返回数据页面渲染……
149 0
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?