上网已经成为我们每个人生活中一项重要的内容了,当我们打开浏览器,在地址栏中输入相应的网址并按下了回车键,既会在页面中呈现所需的相关信息。那么,在这背后都进行了哪些技术步骤,才会将丰富的信息内容加载出来,展现在我们眼前呢。
从URL的输入到页面的展现,大概会经过以下几个过程:
- 在浏览器中输入url
- DNS域名解析
- 服务器处理请求
- 网站处理流程
- 浏览器显示页面信息
一、在浏览器输入URL
首先,我们来了解下URL的一些知识。
URL(Uniform Resource Locator,统一资源定位符)
由一串简单的文本字符组成,他的作用是用于定位互联网上资源的地址。URL通常由以下几部分组成:传输协议、域名、端口、文件路径。
以我的简书主页为例,“https://www.jianshu.com/u/dc6b5792c956”这一串字符即为URL。
- 协议部分
通过特定的传输协议,获得指定文档的内容。
该URL的协议部分为“ https: ”,这代表网页使用的是https协议。在Internet中可以使用多种协议。常见的协议有:” http:// ” (超文本传输协议,信息是明文传输)、“ https:// ”(进行加密的网络传输协议)、" file:// "(本地文件传输协议,file协议主要用于访问本地计算机中的文件)、" ftp:// "(文件传输协议)," mailto: "(资源为电子邮件地址,通过SMTP访问)。还有一种URL前面没有加指定协议,它是指获取该资源需要使用的协议与当前的URL是保持一致的。
- 域名部分
用来确定服务器在互联网上的位置,域名的目的是便于记忆和沟通的一组服务器的地址,是唯一不可重复的。
该URL的域名部分为jianshu.com
- 端口部分
跟在域名后面的为端口编号,域名和端口之间使用“ :”分隔开。默认端口一般在URL中不展现。当Web服务器采用的不是默认端口时,就需要写明服务所用的端口。端口号的作用,主要是区分服务类别和在同一时间进行多个会话。
常用的应用协议和对应的端口号如下:
应用协议 | 端口号 |
---|---|
http | 80 |
ftp | 21 |
https | 443 |
smtp | 25 |
tftp | 69 |
telnet | 23 |
- 文件路径
一般用来表示主机上的一个目录或文件地址(即存储的位置),由零或多个“ / ”符号隔开,划分为多个层次进行描述。
该URL的文件路径为/u/dc6b5792c956
二、DNS域名解析
当你在浏览器中输入URL后,你使用的电脑会发出一个DNS请求(将域名转化为IP地址的请求)。对于浏览器,实际上并不知道“https://www.jianshu.com/u/dc6b5792c956”到底是什么东西,需要确认其中域名所在服务器的IP地址才能找到目标网站(浏览器需要对IP地址进行识别,才能够进一步传递网址和信息内容)。那么,将域名解析成对应的服务器IP地址这项工作,就是由DNS服务器来完成。
DNS(Domain Name System,域名系统)
主要进行将主机名和域名转换为IP地址的工作。把便于用户记忆的特定域名转换成为能够被机器直接读取的IP数串。
IP地址(Internet Protocol Address,互联网协议地址)
IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址。在互联网中的每一台主机都有IP地址,IP协议就是使用这个地址在主机之间传递信息,形如 192.168.0.1 。如果没有IP地址,就无法找到相应的主机进行信息交换,这个设备也就无法连接到互联网。
相关问题:
为什么要用域名,不直接使用IP地址?
- IP地址不容易记住,特定的域名,更加方便与用户记忆或辨识。
- IP地址与域名并不是一对一的映射关系,一个域名后面可以对应多台设备的IP地址,一个IP地址也可以绑定多个域名。如果直接使用IP地址的话,可能无法准确的定位你想要访问的网站。
局域网IP与公网IP之间的区别
- 内网也就是局域网,内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
- 公网IP是处于整个互联网可访问的一个状态当中,公网IP都是需要购买的。
在同样的局域网下,如果知道对方的IP就可以进行访问,公网IP是处于整个互联网可访问的状态中。
域名解析的流程:
- 查找浏览器缓存——我们日常浏览网站时,浏览器会缓存DNS记录一段时间。如果以前我们访问过该网站,那么在浏览器中就会有相应的缓存记录。因此,我们输入网址后,浏览器会首先检查缓存中是否有该域名对应的IP信息。如果有,则直接返回该信息供用户访问网站,如果查询失败,会从系统缓存中进行查找。
- 查找系统缓存——从hosts文件中查找是否有存储的DNS信息(MAC端,可在“终端”中输入命令cat etc/hosts找到hosts文件位置),如果查询失败,可从路由器缓存中继续查找。
- 查找路由器缓存——如果之前访问过相应的网站,一般路由器也会缓存信息。如果查询失败,可继续从 ISP DNS 缓存查找。
- 查找ISP DNS缓存——从网络服务商(例如电信)的DNS缓存信息中查找。
- 如果经由以上方式都没找到对应IP的话,则像根域名服务器查找域名对应的IP地址,根域名服务器把请求转发到下一级,逐层查找该域名的对应数据,知道获得最终解析结果或失败的相应。
- 根域名服务器,根服务器主要用来管理互联网的主目录。是互联网域名解析系统(DNS)中最高级别的域名服务器。
相关问题:
- 什么是DNS劫持?
DNS劫持(Domain Name System,域名劫持),是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。简单来说,就是你输入的是知乎的网址,但是却跳转到了百度的页面。
- 为什么修改DNS为114.114.114.114或8.8.8.8可以解决电脑上不了网的问题?
当你使用手机端可以正常打开网站,但是在电脑端访问网站失败的话,那么可能是DNS配置出现了问题,或者是在路由器缓存中解析查找错误,无法找到对应的IP地址。那么这时我们可以在电脑端更改DNS进行单独配置即可正常访问(MAC端,打开“网络偏好设置”——“高级”——“DNS”进行修改)。8.8.8.8是谷歌提供的免费DNS服务器的IP地址,114.114.114.114是电信的。
三、服务器处理请求
浏览器通过IP地址找到对应的服务器,要求建立TCP链接,此时服务器开始处理用户请求。
服务器是什么?
服务器是一台安装系统的机器。常见的系统有Linux、Windows Server2012等。系统里安装的处理请求的应用叫Web server
服务器如何处理请求?
由服务器上安装的处理请求的应用(Web Server)来处理。
常见的Web服务器有:Apache、Nginx、IIS、Lighttpd。
Web服务器接收用户的Requset交给网站代码或反向代理到其他服务器。
TCP是什么?
TCP是互联网中的传输层协议,提供可靠的链接服务,采用三次握手确认一个连接:
- 浏览器向服务器发送建立连接的请求。
- 服务器接收到浏览器发送的请求后,想浏览器发送统一连接的信号。
- 浏览器接受到服务器发出的同意连接的信号后,再次向服务器发出确认连接的信号。
当三次握手返程,TCP客户端和服务端成功的建立连接,就可以开始传输数据了。
四、网站处理流程
用户输入网址后向服务器发送内容请求,服务器接收到请求后触发Controller(控制器),控制器从Model(模型)和视图(View)中获取各种数据信息进行处理,最后视图(View)将数据渲染为HTML使得页面完整的呈献给用户。
MVC是什么
MVC是一种设计模式,全名是Model View Controller,是模型(Model)- 视图(View)- 控制器(Controller)的缩写。
Model(模型)
是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据苦衷存取数据。View(视图)
是应用程序中处理数据显示的部分。
通常视图是一句模型数据创建的。
而这一部分也是我们前端工作中很重要的一项内容。Controller(控制器)
是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
五、浏览器显示页面信息
- HTML字符串被浏览器接收后被一句句读取解析。
- 解析到link标签后重新发送请求获取CSS。
- 解析到script标签后发送请求获取JS,并执行代码。
- 解析到img标签后发送请求获取图片资源。
- 浏览器根据HTML和CSS计算得到渲染书,绘制到屏幕上。
- JS会被执行,页面展现。
以上就是我与大家分享的,从URL输入到页面展现其中过程的学习记录,对于理解不到位或者错误的地方烦请大家指正,感谢。