粗读《网络是怎么连贯的》的第一章,讲述了从应用程序,解析URL到委托给操作系统的大抵流程
- 解析 URL, 生成 HTTP 音讯
- 向 DNS 服务器获取 web server IP
- 寰球 DNS 服务器大接力
- 委托协定栈发送音讯
其中波及到很多的概念:URL HTTP DNS Socket 协定栈。
URL
URL: Uniform Resource Locators(URLs), 通过 Internet 定位和拜访资源。
URL 标准源自 World-Wide Web global information initiative(万维网寰球信息倡导)
1. URL 的次要组成部分
URL 协定格局:\<scheme>:\<scheme-specific-part>
scheme:url 计划名称,例如:http ftp
例如:https://www.w3.org/
计划名称由以下字符组成组成:字母(a~z) 数字 + . - 不分大小写。
2. URL 字符编码问题
应用 US-ASCII <scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
2.1 保留字符 -- 相似于 java 关键字
";" | "/" | "?" | ":" | "@" |"&" | "=" | "+" | "$" | "," |
2.2 非保留字符
可间接在url中应用
unreserved = alphanum | markalphanum = 字母 | 数字mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"疏忽大小写
2.3 URI和非ascii字符(比方 如何示意 UTF-8 编码的 "你好")
转换公式URI character sequence->octet sequence->original character sequenceURI 字符序列 -> octet序列(US-ASCII) -> 原始序列octet: 8bit, 2^8=256, 两个十六进制相乘, 在URL 中体现为 %HEXHEX"a" 示意 octet 97 (decimal)%0a 示意 octet 10 (decimal)%E4%BD%A0%E5%A5%BD --> 你好一个字符对应三组(octet)个别是 UTF-8
Unicode/UTF-8-character table
国家标准|GB 18030-2005 (samr.gov.cn)
2.4 不平安字符(URI 中不容许应用的 US-ASCII 字符)
这些字符,须要转成 %HEXHEX 格局
不容许应用的字符以及理由control = <US-ASCII coded characters 00-1F and 7F hexadecimal>1. 不可打印 2. 会被某些管制机制误会space = <US-ASCII coded character 20 hexadecimal>1. 很多上下文中空格用于分隔URI2. 多一个空格少一个空格不容易被觉察delims = "<" | ">" | "#" | "%" | "双引号 |<>" 常在文档中用作 URI 的分隔符# 在URI中示意 fragment identifier 的分隔符% 转移字符unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"gateways 或其余 transport proxy 会批改他们或把他们当分隔符
3. 具体计划(scheme)
应用BNF语法定义
ftp File Transfer protocolhttp Hypertext Transfer Protocolfile Host-specific file namestelnet Reference to interactive sessions...
3.1 通用Internet计划语法
//<user>:<password>@<host>:<port>/<url-path>
3.2 HTTP
http://<user>:<password>@<host>:<port>/<path>?<searchpart>user password 可选默认端口:80path 可选searchpart 可选
3.3 ftp
默认端口:21ftp://<user>:<password>@<host>:<port>/<cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>
3.3.1. FTP url-path
url-path 可疏忽
格局:<cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>typecode:枚举值 a i d
参考
- rfc官网
- Uniform Resource Locators (URL rfc 1738)
- Uniform Resource Locators (URL rfc 2396)
- Uniform Resource Locators (URL w3.org)