引言
最近正好找工作,很多基础知识点在脑袋里一团乱码捋不清,但是吧还蜜汁自信!想到曾几何时,听到某某知识点,第一反应: “嗨呀!我知道,不就是那XXX吗?” 面试官:“那你简单说说” 我:“啊。。。就是那个什么。。。那个。。。嗯。。。阿巴阿巴。。” 一切都是子虚乌有,有始无终。。终是崩不出来一个有用的屁。。。哈哈 自己尴尬地在原地能抠出来一座始皇陵墓,只能任凭面试官尽情鞭策妲己罢撩~
一、从浏览器地址输入url到请求返回发生了什么?
老生常谈的八股文标准答案如下:
- 输入URL后解析出协议、主机、端口、路径等信息,并构造一个 HTTP 请求,发送给DNS
- DNS将域名解析成IP地址
- TCP连接,TCP三次握手
- 客户端发起http请求
- 服务器处理请求并返回http报文
- 浏览器渲染页面
- 断开连接,TCP四次挥手
cc这答案,总感觉像吃饺子不蘸醋,差点意思。。。 url是啥?NDS又是啥?经常说的三次握手四次挥手究竟是啥?
(一)什么是url?
url叫做统一资源定位符,用于定位互联网上的资源,俗称网址。一个标准的网址如下: scheme: // host.domain:port / path / filename ? abc = 123 # 456789
- scheme:定义互联网服务类型。如http、https、file、ftp
- host:定义主机
- domain:域名
- port:端口,http默认80
- path:路径
- filename:资源名称
- fragment:#后的哈希值,一般用来定位到某个位置
(二)NDS域名解析
在浏览器输入网址后,浏览器并不能直接通过对应的域名找到对应的服务器,而是通过ip地址来实现。
- 什么是IP地址?
- 互联网地址协议,IP协议提供的一种统一的地址格式
- 为互联网上的每一台主机、每一个网络分配一个逻辑地址,以此来屏蔽物理地址的差异
- 什么是域名解析?
- DNS协议通过域名去查找IP地址,或者逆向从IP地址反查域名的服务
- DNS 是一个网络服务器,我们的域名解析是在 DNS 上记录一条信息记录
-DNS域名解析过程
分递归查询和迭代查询,现为迭代查询,贴图如下:
DNS的优化与应用
1.DNS缓存有多级缓存,按照距离浏览器的远近排序,分别为:浏览器缓存、系统缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名服务器缓存、主域名服务器缓存 2.DNS负载均衡,也叫做DNS重定向,其实现原理是DNS服务器将域名解析成不同的IP地址,从而实现将用户的请求分发到不同的服务器上,确保每个服务器都会有机会处理 3.dns-prefetch预解析技术,会对当前页面中的链接进行预解析,减少等待时间 tips: CDN就是利用DNS的负载均衡技术实现的重定向,DNS服务器会返回一个跟用户最接近的IP地址给用户,CDN的服务器负责响应用户的请求,提供所需内容
OSI参考模型与TCP/IP四层模型
了解即可
TCP三次握手建立连接
- 客户端发送一个带有SYN=1,Seq=X的数据包给服务端
- 服务端发回一个带有SYN=1,ACK=X+1,Seq=Y的响应包以确认传达信息
- 客户端再传回一个带有ACK=Y+1,Seq=Z的数据包,代表握手结束
发送HTTP请求
此篇篇幅过大重开新坑,任意穿梭门地址附上:
服务器处理请求并返回 HTTP 报文
每台服务器上都会安装处理请求的应用——Web server,常见的web server产品有apache、nginx、IIS、Lighttpd等
*了解服务器正向代理和反向代理:正向代理和反向代理的主要区别在于它们的位置和作用不同。正向代理更多地站在客户端的角度,帮助客户端隐藏身份并绕过防火墙限制;而反向代理则更多地站在服务器的角度,为服务器提供负载均衡、缓存和安全保护等功能
## 浏览器解析渲染页面
此处专门开了新坑,复习浏览器相关知识点,稍后填坑: