URI解析-语法部分

为了清晰描述网络资源的位置,计算机先驱们捣鼓出了URI URL URN这些逻辑模型

首先URI叫做统一资源标识符,为了表示网络中的资源,必须确定严谨的语法

URI语法如下

([]表示可有可无)

scheme : ] scheme-specific-part# fragment]

其中scheme-specific-part结构如下,其中//可以没有

 [ //][ authority][ path][ ? query]

其中authority结构如下,注意:如果URI中存在authority字段,那么必有host字段

user-info @host : port]

所以URI结构如下

scheme :][ user-info @host : port][ path][ ? query][ # fragment]

任何正确URL结构必须遵守如上规定


下面我来举几个例子

首先是我们最熟悉http请求行,我们来解析它

http://www.mysite.com/p1/test.html?param1=a¶m2=b#1

解析结果如下

scheme = http

scheme-specific-part = //www.mysite.com/p1/test.html?param1=a¶m2=b

authority = www.mysite.com

path = /p1/test.html

query 是 param1=a¶m2=b

fragment = 1

其中没有使用到user-info字段,还有host和post就不写了。

接下来解析大家也熟悉的ftp

ftp://admin:[email protected]/profile

表示用户名admin 密码passwd的用户登录到profile文件夹中

scheme = ftp

scheme-specific-part = //admin:[email protected]/profile

authority = //admin:[email protected]

path = /profile

user-info = admin:passwd

现在来看个本地文件协议

file:///f:/flash/1.swf

它的的URI解析如下

scheme = file

scheme-specific-part = ///f:/flash/1.swf

authority = 木有

path = /f:/flash/1.swf

因为没有authority字段,所以就出现引人注目的///这种情况了

再来分析个磁力矩

magnet:?xt=urn:btih:2F9D75F4CB3385CB06FFB30695A34FAC7033902C

它的的URI解析如下

scheme = magnet

scheme-specific-part = ?xt=urn:btih:D5SG5FD43A21SGASDFQ123FB30695A34FAC7033902C

authority = 木有

// = 木有

path = 木有

query 是 xt=urn:btih:D5SG5FD43A21SGASDFQ123FB30695A34FAC7033902C


总结:

 任何网络中的资源都需要URI进行位置描述。换句话说,我们在编程时,想获取任何网络上的资源(包括本机)都必须先为资源定义一个URI(资源描述符)。


其他

当然URI模型并非只有语法规范,还有编码规范和行为规范(规范化,解析,相对化)

这些内容将在我的文章URI解析-编码规范 ,URI解析-行为规范 中详细解析(还在写)。

你可能感兴趣的:(计算机网络应用层)