夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
一些网络基础概念

URL

统一资源定位符(Uniform Resource Locator) 俗称网页地址网址,是因特网上标准的资源的地址。

它通常被用来指向网页(http),但也用于文件传输(ftp)、邮件(maito)、数据库访问(JDBC)和许多其他应用。

URL、URI、URN

URL(定位符)和URN(名称)方案属于URI的子类,URI可以为URL或URN两者之一或同时是URI和URN。

统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

语法

HTTP URL 满足一般 URI 的语法。一般URI由五部分组成:

URI = scheme:[//authority]path[?query][#fragment]

其中authority部分又可表示为authority = [userinfo@]host[:port]userinfo=[username]:[password(optional)]

整个分级结构如下图所示:

在这五部分中,authorityqueryfragment为 optional

其他一些细节说明:

A host subcomponent, consisting of either a registered name (including but not limited to a hostname), or an IP address. IPv4 addresses must be in dot-decimal notation, and IPv6 addresses must be enclosed in brackets ([]).

A path component, consisting of a sequence of path segments separated by a slash (/). A path is always defined for a URI, though the defined path may be empty (zero length). A segment may also be empty, resulting in two consecutive slashes (//) in the path component. A path component may resemble or map exactly to a file system path, but does not always imply a relation to one. If an authority component is present, then the path component must either be empty or begin with a slash (/). If an authority component is absent, then the path cannot begin with an empty segment, that is with two slashes (//), as the following characters would be interpreted as an authority component. The final segment of the path may be referred to as a ‘slug’.

IRI

IRI (Internationalized Resource Identifier) 是为满足使用不同语言的使用者而设计的,需要对 URL 的 domain namepath部分进行特别处理。

IDN

国际化域名(Internationalized Domain Name) 。浏览器会自动将IDN转化为punycode

为了防止非国际化域名被当作国际化域名解释,IDN有一个特定的(ASCII Compatible Encoding)前缀 xn--

例如: “bücher.tld” $ \longrightarrow $ “xn--bcher-kva.tld”

path name

使用 百分号编码(URL encoding),由目标服务器负责解码。

编码

Unicode

中文:万国码、国际码。

它对世界上大部分的文字系统进行了整理、编码,伴随着通用字符集的标准而发展。

编码方式

统一码的编码方式与 ISO 10646 的通用字符集概念相对应。当前实际应用的统一码版本对应于 UCS-2,使用 16 位的编码空间。也就是每个字符占用 2 个字节。这样理论上一共最多可以表示 $2^{16}$(即 65536)个字符。基本满足各种语言的使用。

上述16位代码点构成Unicode的基本多文种平面(Basic Multilingual Plane),或称第0平面。除此之外,还定义了16个辅助平面,每个平面均有$2^{16}$个代码点。

实现方式

Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format),不同系统平台对于Unicode的实现方式不同。

主要实现方式包括:UTF-8UTF-16Punycode等。

UTF-8

UTF-8(8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用一至四个字节对Unicode字符集中的所有有效编码点进行编码。

UTF-8一直是万维网的最主要的编码形式(高达94.3%)。

UTF-8使用一至六个字节为每个字符编码:

  • 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
  • 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
  • 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
  • 其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。
UTF-16

BMP中的字符用 16bits 表示,其他辅助平面中字符用 32bits 表示。

UTF-16的大尾序和小尾序存储形式都在用。一般来说,以Macintosh制作或存储的文字使用大尾序格式,以Microsoft或Linux制作或存储的文字使用小尾序格式。在UTF-16文件的开首,都会放置一个U+FEFF字符作为Byte Order Mark(UTF-16 LE以 FF FE 代表,UTF-16 BE以 FE FF 代表)。

UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节(2字节)存储,但UTF-16却无法兼容于ASCII编码。

Punycode

Punycode is a representation of Unicode with the limited ASCII character subset used for Internet hostnames. Using Punycode, host names containing Unicode characters are transcoded to a subset of ASCII consisting of letters, digits, and hyphen, which is called the Letter-Digit-Hyphen (LDH) subset.

UCS

通用字符集(Universal Character Set) 是由ISO制定的ISO 10646 标准所定义的标准字符集。中国大陆译为通用多八位编码字符集

通用字符集包括了其他所有字符集。它保证了与其他字符集的双向兼容,即,如果你将任何文本字符串翻译到UCS格式,然后再翻译回原编码,你不会丢失任何信息。

表示一个UCS或Unicode值的十六进制数通常在前面加上“U+”,例如“U+0041”代表字符“A”。

UCS 与 Unicode

这两个字符集是由两个不同的组织创立的。

在两个标准里,所有的字符都在相同的位置并且有相同的名字。

ISO/IEC 10646标准只不过是一个简单的字符集表,Unicode标准,额外定义了许多与字符有关的语义符号学。

UTF-16对应UCS-2,UTF-32对应UCS-4

百分号编码

Percent-encoding 又称URL编码 ,是URL的编码机制,也适用于URI。

RFC3986文档规定,URL中只允许包含未保留字符(英文字母(a-zA-Z)、数字(0-9)、4个特殊字符(- _ . ~))以及所有保留字符。其它字符建议先转换为UTF-8字节序列, 然后对其字节值使用百分号编码。

保留字符

如果一个保留字符在特定上下文中具有特殊含义 , 且URI中必须使用该字符用于其它目的, 那么该字符必须百分号编码。

! # $ & ( ) * + , / : ; = ? @ [ ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

未保留字符

未保留字符不需要百分号编码。

两个URI的差别如果仅在于未保留字符是用百分号编码还是用字符自身表示,那么这两个URI具有等价的语义. 但URI处理器实际上并不总是把二者视作等价。

GB 2312

中华人民共和国国家标准简体中文字符集,通常简称GB。GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。

GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。但对于人名、古汉语等方面出现的罕用字和繁体字,GB 2312不能处理,因此后来GBK及GB 18030汉字字符集相继出现以解决这些问题。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇