每日寄语:等风来不如追风去
此文章侧重点是将零碎的知识点进行概括总结;文章大体讲如下知识点:
如上图可知:HTTP的一次请求过程大体通过如下步骤:html
有两点问题须要咱们着重关注(面试会问的哦):DNS解析的过程以及TCP的三次握手和四次挥手;若是想深刻了解能够参考网上的技术博客。
DNS域名解析大体通过的过程以下:web
名 称 | 描 述 |
---|---|
URI | (Uniform Resource Identifier,URI) 统一资源标志符;惟一标志并定位信息资源。 |
URL | (Uniform Resource Location,URL)统一资源定位符;明确说明如何从一个精准、固定的位置获取资源。下面会详细介绍URL的标准格式。 |
URN | (Uniform Resource Name,URN) 统一资源名;URN是做为特定内容的惟一名称使用的,与目前的资源所在定无关。 |
URL的标准格式
URL的通用格式 | |
---|---|
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag> |
其中URL最重要的3个部分是方案<scheme>、主机<host>、路径<path>
其中咱们应注意带有片断的URL的请求:好比:http://www.joes-hardware.com/...; 在这个例子中,片断drills引用了Joe的五金商店的web服务器上页面/tools.html中的一个部分,这个部分的名字叫作dirlls。那这个请求是如何进行的呢?因为HTTP服务器一般只处理整个对象,而不是对象的片断,因此浏览器向服务器发送请求的时会剔除片断向浏览器请求整个资源,浏览器接受资源后会根据片断展现所应该展现的内容。面试
首先,咱们的明白什么是字符集以及一个字符集来讲要正确编码转码一个字符须要三个关键元素
字符集:字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值表明了哪一个文字(解码)的转换关系。
一个字符集来讲要正确编码转码一个字符须要三个关键元素:数据库
- 字符库:是一个至关于全部可读或者可显示字符的数据库,字库表决定了整个字符集可以展示表示的全部字符的范围;
- 编码字符集:即用一个编码值code point来表示一个字符在字库中的位置;
- 字符编码:将编码字符集和实际存储数值之间的转换关系。
三者之间的关系以下图: 浏览器
举例:
假如采用ASCII字符集,字符A在字符表中位置为65,65经规则转化为1000001(1000001就存储在编码字符集中),而65和1000001的对应关系就存在了字符编码中,而字符乱码是由于采用不一样的编码其映射关系不一样解析的数据也就不一样了。缓存
问题扩展 (摘录)
看到这里,可能不少读者都会有和我当初同样的疑问:字库表和编码字符集看来是必不可少的,那既然字库表中的每个字符都有一个本身的序号,直接把序号做为存储内容就行了。为何还要画蛇添足经过字符编码把序号转换成另一种存储格式呢? 服务器
其实缘由也比较容易理解:统一字库表的目的是为了可以涵盖世界上全部的字符,但实际使用过程当中会发现真正用的上的字符相对整个字库表来讲比例很是低。例如中文地区的程序几乎不会须要日语字符,而一些英语国家甚至简单的ASCII字库表就能知足基本需求。而若是把每一个字符都用字库表中的序号来存储的话,每一个字符就须要3个字节(这里以Unicode字库为例),这样对于本来用仅占一个字符的ASCII编码的英语地区国家显然是一个额外成本(存储体积是原来的三倍)。算的直接一些,一样一块硬盘,用ASCII能够存1500篇文章,而用3字节Unicode序号存储只能存500篇。因而就出现了UTF-8这样的变长编码。在UTF-8编码中本来只须要一个字节的ASCII字符,仍然只占一个字节。而像中文及日语这样的复杂字符就须要2个到3个字节来存储。网站
未完待续。。。。;若是阅读过程当中发现文中的知识点有错误的话,能够反馈给我,咱们共同来完善。