一条HTTP请求的生命周期(一)--|一条HTTP请求的生命周期(一)-- URL

粗读《网络是怎么连接的》的第一章,讲述了从应用程序,解析URL到委托给操作系统的大致流程

  1. 解析 URL, 生成 HTTP 消息
  2. 向 DNS 服务器获取 web server IP
  3. 全球 DNS 服务器大接力
  4. 委托协议栈发送消息
其中涉及到很多的概念:URL HTTP DNS Socket 协议栈。
URL URL: Uniform Resource Locators(URLs), 通过 Internet 定位和访问资源。
URL 规范源自 World-Wide Web global information initiative(万维网全球信息倡议)
1. URL 的主要组成部分
URL 协议格式:\:\
scheme:url 方案名称,例如:http ftp
例如:https://www.w3.org/
方案名称由以下字符组成组成:字母(a~z) 数字 + . - 不分大小写。
2. URL 字符编码问题
使用 US-ASCII :///; ?#

2.1 保留字符 -- 类似于 java 关键字
"; " | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," |

2.2 非保留字符 可直接在url中使用
unreserved = alphanum | mark alphanum = 字母 | 数字 mark ="-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" 忽略大小写

2.3 URI和非ascii字符(比如 如何表示 UTF-8 编码的 "你好")
转换公式 URI character sequence->octet sequence->original character sequence URI 字符序列 -> 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

一条HTTP请求的生命周期(一)--|一条HTTP请求的生命周期(一)-- URL
文章图片

Unicode/UTF-8-character table
国家标准|GB 18030-2005 (samr.gov.cn)
一条HTTP请求的生命周期(一)--|一条HTTP请求的生命周期(一)-- URL
文章图片

2.4 不安全字符(URI 中不允许使用的 US-ASCII 字符) 这些字符,需要转成 %HEXHEX 格式
不允许使用的字符以及理由control= 1. 不可打印 2. 会被某些控制机制误解space= 1. 很多上下文中空格用于分隔URI 2. 多一个空格少一个空格不容易被察觉delims= "<" | ">" | "#" | "%" | "双引号 | <>" 常在文档中用作 URI 的分隔符 #在URI中表示 fragment identifier 的分隔符 %转移字符unwise= "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" gateways 或其他 transport proxy 会修改他们或把他们当分隔符

3. 具体方案(scheme)
使用BNF语法定义
ftpFile Transfer protocol httpHypertext Transfer Protocol fileHost-specific file names telnetReference to interactive sessions ...

3.1 通用Internet方案语法
//:@:/

3.2 HTTP
http://:@:/? user password 可选 默认端口:80 path 可选 searchpart 可选

3.3 ftp
默认端口:21 ftp://:【一条HTTP请求的生命周期(一)--|一条HTTP请求的生命周期(一)-- URL】@:///...//; type=

3.3.1. FTP url-path url-path 可忽略
格式: //...//; type= typecode:枚举值 a i d

参考
  1. rfc官网
  2. Uniform Resource Locators (URL rfc 1738)
  3. Uniform Resource Locators (URL rfc 2396)
  4. Uniform Resource Locators (URL w3.org)

    推荐阅读