title: 【重识前端】地址栏中输入网址后发生了什么
date: 2020-10-09 10:08:31
tags: [浏览器]
category: [重拾前端]
cover: /image/cover/web.jpeg

前言

不说太多废话了,这个题目其实基本上是现在面试的高频考点了,现在我也想自己认认真真的捋一遍,到时候面试也可以流利的回答。

开始

let’s go

URL解析

其实有人一开始会有疑惑,至少我一开始也有疑惑,不是应该先DNS解析吗?

其实不是的,现在的浏览器他会优先解析你是不是一个合法的URL,为什么呢?比如我们在Chrome输入中文“Derrick是帅哥吗”,这样的不是一个正常的合法的URL,就会优先调用你默认的搜索引擎开始搜索。

当然了,合法的URL包括了协议和网络地址,最常用的协议是

  • HTTP(超文本传输协议)
  • FTP(文件传输协议)

网络地址也可以是ip地址,以及端口号,没有端口默认是80端口

DNS域名解析

这一步其实简单来说就是"baidu.com"这个域名,解析成一个整个的地址。

比如我们的家庭住址都有一个门牌号,xx小区xx栋xx号

这样的一串标识符就可以精准的找到我们的家庭住址,而每一个ip地址就是这样的一个门牌号,比如baidu.com这个不是一个门牌号,这个可以理解为百度的家,你告诉浏览器你要去百度的家,这个时候就会开始进行DNS解析他会解析成百度的门牌号,然后找到百度的家。

缓存

这里面又会涉及到缓存的概念,什么意思呢?

就是之前我查过百度的家了,已经记录下来百度的家的门牌号了,就不需要重新的进行解析了,直接读取就好了,节约时间。

这里面涉及的知识太多了,不在这次的讨论范围内。所以只简单的说一下。

上图其实很好的解答了DNS的整个解析过程。

  1. 从浏览器获取缓存结果。
  2. 如果浏览器没有缓存就从本地系统的缓存中读取,比如host文件等等,像我们平常上GitHub如果慢的话我们都会修改host文件,给他配一个快一点的ip之类的等等。
  3. 然后是图里面没有提到的路由器缓存,一般的路由器也会有自己的缓存。
  4. 路由器也找不到只能开始解析了。本地域名服务器会向根域名服务器发送一个请求, 如果根域名服务器也不存在该域名时, 本地域名会向com顶级域名服务器发送一个请求, 依次类推下去。 直到最后找到目标网址所对应的 IP, 并将其缓存到本地, 以供下次使用。

DNS重定向

这里顺便说一下DNS的重定向吧

DNS每次返回的ip地址可能会不一样,因为世界上不是只有一个机器可以处理"baidu.com"的这个请求,有很多机器可以处理,DNS只需要返回可以处理的机器的ip地址就可以了。例如可以根据每台机器的负载量, 该机器离用户地理位置的距离等等, 这种过程就是DNS负载均衡, 又叫做DNS重定向。

很简单,几个例子,比如我在故宫的北门,打开地图要查询故宫肯定会让我从北门进去。而如果我在故宫的南门,要导航到故宫就会让我从南门进去。

DNS污染

DNS 污染(DNS cache pollution), 又称域名服务器缓存投毒(DNS cache poisoning), 是指一些刻意制造或无意中制造出来的域名服务器数据包, 把域名指往不正确的IP地址

某些网络运营商为了某些目的, 对DNS进行了某些操作, 导致上网的用户无法通过域名取得正确的IP地址。 某些国家或地区出于某些目的为了防止某网站被访问, 而且其又掌握部分国际DNS根目录服务器或镜像, 也会利用此方法进行屏蔽。 (Google、 Facebook等)

至于如果防止DNS污染, 这里只说一个方法就是修改hosts文件, 其他的自行搜索吧。

TCP建立连接

其实我们解析之后,找到真正的服务器,我们就需要获取他的资源,最简单的就是获取他的HTML文件,来渲染对吧?怎么获取呢,我们需要TCP连接来获取。

这里涉及到三次握手,和四次挥手以及UDP的一些细一点的知识点。

说TCP之前我想把一些里面可能用到的东西先说说清楚,方便查找。

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)

三次握手

三次握手基本上就是

面试 地址栏中输入网址后发生了什么 url 生成网页 三次握手 四次挥手 ctp http ip相关推荐

  1. 地址栏中输入网址后发生了什么?

    本文公众号来源:01二进制  作者:雇个城管打天下 记得在面试的时候也被问到这题,当时答得并不好,这道题目其实可以挖掘很多的知识点出来,建议阅读! 前几天有个学妹问我为什么在浏览器里面输了网址就会显示 ...

  2. 如何向学妹解释在地址栏中输入网址后发生了什么?

    前几天有个学妹问我为什么在浏览器里面输了网址就会显示出来页面,虽然这个现象很常见,但是要想解释清楚确实有些小困难,当时也只是简单的回答了她,现在想趁着这个机会好好整理下相关知识.整理完才觉得其实就和我 ...

  3. 面试中常被问到的(22)TCP三次握手/四次挥手及问题

    TCP三次握手: 连接: 客户端:发送syn请求,收到服务端ack确认,连接建立 服务端:监听syn请求,收到客户端syn请求新建套接字进行ack回复,确认连接建立 状态: 客户端:SYN_SEND- ...

  4. 【web】HTTP(s)协议详解(重点:HTTPS 的加密过程浏览器中输入网址后,发生了什么?)

    [大家好,我是爱干饭的猿,本文介绍应用层HTTP协议.HTTPS协议.当你在浏览器中输入网址后,到底发生了什么事情?HTTPS 如何进行的加密?对称加密.非对称加密.CA证书又是什么? 后续会继续分享 ...

  5. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

  6. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  7. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

  8. TCP三次握手四次挥手过程及其中的状态量

    网上看到过一些有关TCP三次握手四次挥手的过程,觉得有必要总结一下了,对于了解TCP的过程还是有帮助的 1.变量含义 SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DAT ...

  9. java实现四次挥手_java中三次握手四次挥手是什么?图文详解

    关于java中的一些基础的知识,是非常的多的,而且涉及的方面也是非常的广阔的.相信大家在日常的学习中也会遇到很多这些令人疑惑的问题,今天就来为大家介绍一下,一起来看看吧. 首先说一下,java中三次握 ...

最新文章

  1. nodejs -- promise的返回
  2. 标记三维点_细胞器相互作用过程的高速三维全景成像
  3. 如何用python画数据图-用Python绘制地理图
  4. button和sumbit提交表单的区别
  5. websocket探究
  6. tensorflow计算图_通过从头开始模仿其API来了解TensorFlow
  7. Oracle宣布在云上正式上线 自治事务处理数据库
  8. day00 【后台】Readme
  9. 商城管理系统源码 商城APP源码 电子商城源码
  10. 京东物流系统架构演进中的最佳实践
  11. idea配置Translation插件为有道翻译引擎
  12. 计算机思维在生活中的应用,孩子必备的计算机思维,如何从生活中培养?
  13. chrome浏览器更新后重新安装配置chromedriver
  14. 泰坦尼克号乘客生存分析——用机器学习告诉你,如果你在当时的船上,有多大机率生还?
  15. 怎么申请企业邮箱?手机怎么申请免费邮箱?
  16. 研发思维08----嵌入式智能产品数据服务后端分析
  17. 记一次AWK程序耗时日志分析
  18. stm32蓝牙模块通过手机和电脑双向通信
  19. java 解决跨越问题
  20. Unity3D 获取子孙物体并修改材质球属性

热门文章

  1. Linux 文件名颜色
  2. 55——SPNet: A novel deep neural network for retinal vessel segmentation basedon shared decoder and p
  3. 医院业务系统设计(二) --- 患者管理之MPI系统
  4. python 中 re.sub 和 re.compile 是啥意思?
  5. 悦读悦享 且思且行——记教师读书沙龙会活动
  6. dfuse 与 EOS Nation 推出官方 dfuse 社区版服务
  7. 3dmax动画学习1
  8. webuploader ajax提交,webuploader前端页面
  9. 智能呼叫系统关键技术
  10. 架构设计主题阅读书目