您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

前端必懂面试题之浏览器输入URL之后发生了什么

时间:2020-02-17 21:30:40  来源:  作者:

前端必懂面试题之浏览器输入URL之后发生了什么

 

该题是一道特别经典的面试题了,涉及到前端人员应该掌握的基础网络知识,相信很多前端同学都了解。但是如果问深了,也能问出很多子问题来,也更能考验出面试者的知识深度和灵活运用程度。

浏览器输入URL之后大致有这么几个阶段:

DNS域名解析建立TCP链接发送HTTP请求服务端处理请求服务端返回响应结果关闭TCP连接浏览器解析html并渲染布局


1. DNS域名解析
  • 我们访问一个网站的时候,可以通过主机名或者域名来访问。但是绝大多数的时候是使用域名来访问网站。因为相对于主机名的ip地址,域名更能让人记住。
  • 但是TCP/IP协议是通过IP地址来访问的,所以就需要一个机制,将域名转换为IP地址
  • 而DNS服务就是做这件事情,它提供了域名到IP地址之间的解析服务

DNS解析过程1 . 访问www.baidu.com到DNS服务器2 . DNS服务器返回www.baidu.com的IP地址115.182.4X.18X3 . 接着请求IP地址为115.182.4X.18X的服务器4 . 成功访问到www.baidu.com的真正服务器DNS的优先级

本地电脑会将一些经常使用的域名和对应的IP地址建立一个映射关系,并保存到本地host文件中。当DNS解析的时候,会优先从本地host文件中查找映射的IP地址映射

1 . 如果在本地host文件中找到了域名对应的IP地址映射,会直接使用host文件中的IP地址2 . 如果在本地host文件中没有找到域名对应的IP地址映射,会从本地DNS服务器中查找3 . 如果在本地DNS服务器中也没有找到域名对应的IP地址映射,会继续向上一级的DNS服务器发送请求,直到DNS根服务器。如果找到,就进行回传,返回给浏览器。


2. 建立TCP链接

先了解一个知识点: TCP/IP协议族TCP/IP协议族是由四层协议组成的系统。分别是:

  • 1 . 应用层(http)
  • 2 . 传输层(tcp)
  • 3 . 网络层(ip)
  • 4 . 链路层(网络硬件)

 

我的理解是:我们访问一个网站之前,首先要保证有网络对吧?那么此时,链路层就是ok的。经过上面第一步,已经知道了该域名映射的IP地址,并且可以访问,那么此时网络层也是ok的。那么接下来,就是传输层,也就是TCP。其实这里说的也不是很严谨,传输层不仅仅是TCP一种协议,还有UDP协议。UDP协议是无连接的,因为其不需要连接,所以效率比较高,但是也是因为不需要连接验证 所以安全性和可靠性得不到保障。而TCP是面向连接的,有校验机制。所以用的较广泛。但是也有缺点: 因为提前建立了连接,所以效率就较低。本文说的传输层指的是TCP协议。为了确保连接双方的可靠性,在双方建立连接时,TCP采用了三次握手策略

TCP三次握手建立连接1 . 第一次握手

客户端发送带有SYN标志的连接请求报文段,然后客户端就进入了SYN_SEND状态 等待服务器确认

2 . 第二次握手

服务端接收到了客户端浏览器发送的SYN标志报文段后,需要发送ACK确认报文段对这个SYN报文段进行确认。同时又会向客户端发生自己的SYN请求信息。服务端会将上述信息放到一个报文段(SYN+ACK报文段)中 一同发送给客户端。此时服务端进入SYN_RECV阶段

第三次握手

客户端浏览器接收到了服务端返回的SYN+ACK报文段(请求+返回)后,会向服务器发送新的ACK确认报文段。该报文段发送完毕后,客户端和服务端都进入到了ESTABLISHED状态,此时 就完成了三次握手

 

知其然更要知其所以然,为什么要进行三次握手才能建立TCP连接?

根本原因就是为了确保客户端和服务端双方的接收和发送能力都是ok的。经过第一次握手后,服务端收到了客户端的SYN请求标志,那么此时服务端就可以知道:客户端的发送能力是ok的,服务端本身自己的接收能力是ok的。经过第二次握手后,客户端收到了服务端的SYN+ACK请求+返回标志,那么此时,客户端就可以知道:客户端本身的发送和接收能力是ok的,服务端的发送和接收能力有是ok的。经过第三次握手后,服务端接收到了客户端的ACK返回标志,那么此时,服务端就可以知道:服务端本身自己的接收和发送能力是ok的。

原文:https://segmentfault.com/a/1190000021756651



Tags:URL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
URL是什么URL代表着是统一资源定位符(UniformResourceLocator)。作用是为了告诉使用者 某个资源在 Web 上的地址。这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像或一...【详细内容】
2021-10-15  Tags: URL  点击:(49)  评论:(0)  加入收藏
一、概述服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意网站。跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用...【详细内容】
2021-06-24  Tags: URL  点击:(132)  评论:(0)  加入收藏
引言浏览网页时,我们需要知道“网址”才能访问,这里说的“网址”通常就是指URL,比如:https://www.xydida.com/index.html,而平时也会说URI、URN,那又是什么呢?今天就来捋一捋。URLU...【详细内容】
2021-05-24  Tags: URL  点击:(135)  评论:(0)  加入收藏
characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nul...【详细内容】
2021-04-27  Tags: URL  点击:(183)  评论:(0)  加入收藏
要在不使用图形界面的情况下从互联网上获取所需的信息,curl 是一种快速有效的方法。• 来源:linux.cn • 作者:Seth Kenlon • 译者:MjSeven •(本文字数:4904,阅...【详细内容】
2021-04-01  Tags: URL  点击:(229)  评论:(0)  加入收藏
1、明确需求实战工作中经常会请求各种各样的接口,例如•微信网页授权接口 • 高德周边检索接口 •发现:下图是根据接口文档开发后的代码,发现代码可读性差(ps. 参数...【详细内容】
2020-12-30  Tags: URL  点击:(188)  评论:(0)  加入收藏
这篇文章主要来讲解下Python自带的爬虫库urllib常见用法,主要围绕urllib定义、urllib的常用模块和urllib+lxml爬虫案例三个部分进行展开。一、什么是urllib它是一个http请求...【详细内容】
2020-12-16  Tags: URL  点击:(106)  评论:(0)  加入收藏
CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到curl向其他系统api访问。使用要想使用CURL,大致需要如下流程: 初...【详细内容】
2020-11-20  Tags: URL  点击:(104)  评论:(0)  加入收藏
1.修改了某个栏目的目录地址,原本是/abc/,现在改成了/ab/,重新生成了栏目页面/ab/和文章页面/ab/*.html,但是栏目页的列表文章url还是/abc/*.html(正确的url应该是/ab/*.html),这个...【详细内容】
2020-10-26  Tags: URL  点击:(106)  评论:(0)  加入收藏
布隆过滤器(BloomFilter)类似于hash set,用来判断元素是否在集合中。但是与hash set区别是:布隆过滤器不需要存储元素值,就能判断元素是否在集合中。说一下布隆过滤器优缺点: 优点...【详细内容】
2020-09-29  Tags: URL  点击:(121)  评论:(0)  加入收藏
▌简易百科推荐
我 2010 年开始在 Github 上开源自己的代码。在 push 代码之前我根本没想过为什么。只是因为我当时学了 git,而且我又觉得 Github 很方便,可以用来备份自己的代码。而后我就参...【详细内容】
2021-12-28  程序员的喵    Tags:Github   点击:(2)  评论:(0)  加入收藏
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(2)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(9)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(16)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(15)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(53)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(30)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条