产品应懂技术术语(网络类)
聊到浏览器中的网络,就离不开HTTP。HTTP是浏览器和服务器之间的通信语言,他们通过HTTP的请求头和响应头来协商。
比如浏览器发起请求时,会通过HTTP请求头告诉浏览器,它需要什么类型的数据,是text/html,json或者file,当服务器返回响应数据时,会通过响应头告诉浏览器它返回的数据类型,浏览器这时就可以去正确地解析数据和渲染页面了。
下面总结下跟HTTP相关的常用技术术语。
目录
1、带宽
2、流量
3、qps
4、域名和DNS
5、http缓存
6、状态码
7、同源策略
1、带宽
带宽是指每秒最大能发送或者接收的字节数。指的是网速的大小,比如我们在办理宽带套餐时,有20Mb/s 、100Mb/s等等。
1B = 8b (1字节=8位,比特是表示信息的最小单位)
1KB=1024B
1MB=1024KB
1GB=1024MB
我们常看到宽带提供商的套餐写着上行带宽和下行带宽,指的是什么呢?
我们把每秒能发送的最大字节数叫作上行带宽,每秒能接收的最大字节数叫作下行带宽。
发送的最大字节数实际是指上传请求数据的最大速度;接收的最大字节数实际是指当请求返回时,下载数据的最大速度。
比如你办理了一个上行带宽是300Mb/s、下行带宽是500Mb/s的宽带套餐,当你在看一个视频时,视频下载的最大速度是500Mb/s,不过一般不会到这个速度,因为同时可能有多个并发请求,所有的并发请求会一起来占用这些带宽,当带宽不足时,这些请求连接就会放慢发送和接收的速度。
2、流量
流量指的是发送数据和接收数据的大小总和。单位有B,KB,MB,GB。比如我们的手机流量套餐有10块钱100MB,20块钱200MB等
举个例子:
比如你打开一个网页,这个网页的所有请求需要发送10KB的数据,服务器返回的响应是需要下载200KB的数据,所以打开这个网页总共消耗了10KB+200KB=210KB的流量
3、qps
全名是 Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数。是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
4、域名和DNS
在网络的远古时代,最开始的时候,我们是通过ip地址来访问服务器的。
比如61.135.169.125 就是百度的官网地址之一,如果每个网址我们都用ip地址来记忆,那是相当麻烦了。
域名比ip地址更好记忆,假设ip地址是电话号码,域名就是人名,那么DNS就是通讯录,当你想打电话给某个人时,输入人名,DNS就会从通讯录中找出电话号码拨打。
DNS是把域名解析映射成对应的ip地址的服务器系统
域名的层级结构是怎样的呢?
一般来说,一个域名是由至少3部分组成的:以www.baidu.com为例。
1)顶级域名
顶级域名,也叫做一级域名,比如.com / .cn / .net / .org等等。
2)次级域名
顶级域名的下一级就是次级域名,也叫做二级域名,baidu.com就是二级域名。这也是我们能购买到的最高级域名。以此类推,N级域名的下一级就是N+1级域名。
3)主机名
次级域名的下一级就是主机名,其实就是一个完整的域名,比如www.baidu.com就是百度的主机名。
一般我们购买域名,购买的是一个二级域名的管理权,然后我们就可以在二级域名基础上去设置三级、四级域名等等。
相同的二级域名,不同的三级域名还可用来共享登录态。我们知道,cookie是存储在域名下的,比如有2个域名,分别是www.a.baidu.com和www.b.baidu.com,如果cookie存储在二级域名baidu.com下面的话,那么a.baidu.com和b.baidu.com就可以共享这个cookie。
5、http缓存
你有没有遇到过这种情况?
1、开发说前端已经发版本,但是部分人刷新之后看到的还是老的页面。
2、第一次打开网页时比较慢,第二次打开时速度快了许多。
为了提升页面的加载速度,http提供了缓存策略。服务器只要设置好需要缓存的资源和过期时间就可以使用了。不过一般设置的都是变化比较少的静态文件,比如html、css、js、图片字体等。
举个例子:
当浏览器想要发起一个获取一张a.png的图片请求时,会先到本地缓存中寻找,是否有一张名字是a.png的图片,如果有则取消请求直接从缓存中获取,如果没有或者缓存时间已经过期时就发起真正的请求到服务器获取,获取到图片后再缓存到本地浏览器的内存当中。
所以说http缓存是以资源的URL为key,以资源为value,用key-value结构来存储缓存的。
因为缓存的缘故,所以打开同个网页第二次及以后会变快很多。但为什么有时候前端发了新版本拿到的还是老的页面呢?
原因大概有以下几种,
第一是文件名没处理好,比如文件名没有变更,但实际内容已经发生更改,比如a.png这张图片,实际已经替换成另一个张图片,但是缓存里还是老的图片。
第二是html缓存,因为首页html名字是不会发生变化的,但是html里面请求的子资源比如css,js已经发生了变化,所以如果拿了缓存的html就会出现老版本的情况。
当然通过清掉缓存来请求也是可以的,window系统下用F5+ctrl 强制刷新,mac 系统下用 command+shift+r
6、状态码
状态码是服务器告诉浏览器它的处理结果。状态码由3位数字组成,状态码有以下几种类型:
状态码 | 已定义范围 | 含义 |
---|---|---|
1xx | 100-101 | 信息,服务器收到请求,需要请求者继续执行操作 |
2xx | 200-206 | 成功,操作被成功接收并处理 |
3xx | 300-305 | 重定向,需要进一步的操作以完成请求 |
4xx | 400-415 | 客户端错误,请求包含语法错误或无法完成请求 |
5xx | 500-505 | 服务器错误,服务器在处理请求的过程中发生了错误 |
举个例子:
比如浏览器在收到请求响应时,如果发现返回的状态码是302,说明服务器需要浏览器重定向到其他的URL。这时浏览器就会从响应头信息中拿到location字段,这个字段存储着重定向的地址,然后再发起新的HTTP请求。
7、同源策略
先看个例子:
设想这样一种情况:A 网站是一家银行,用户登录以后,A 网站在用户的机器上设置了一个 Cookie,包含了一些隐私信息(比如存款总额)。用户离开 A 网站以后,又去访问 B 网站,如果没有同源限制,B 网站可以读取 A 网站的 Cookie,那么隐私信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。(注:以上例子来自阮一峰老师)
为了保证用户信息的安全,1995年开始,所有浏览器都遵循了“同源策略”。同源策略指的是,网址在协议、域名、端口都相同的情况下才是同源的。
举个例子:
网址:http://a.com:80/page/index.html。http:// 是协议,域名是a.com,端口是80。
不同源的网址,不能获取对方的cookie、localstorage,不能给对方发送ajax异步请求,不能获取对方的页面元素。
如果你对不同源网址发起了请求,或者是去获取不同源的页面元素,就叫做跨域,浏览器会拦截报错。
---END---
--- 推荐阅读 ---
爱心三连击❤️❤️❤️
看到这里了就点个在看/分享支持下吧,你的点赞、分享、在看是我持续创作的动力!