diff --git a/docs/chapter02.md b/docs/chapter02.md index 4a0906b..4c06bed 100644 --- a/docs/chapter02.md +++ b/docs/chapter02.md @@ -6,26 +6,61 @@ [PPT](./resources/HTTP协议-黑马.pptx) -#### 2.1.1 浏览器与Web服务器的工作流程 -- **请求过程:** 用户在浏览器中输入URL地址后,浏览器向服务器发送HTTP请求。 -- **响应过程:** 服务器接收到请求后处理并返回HTTP响应给浏览器。 -- **交互细节:** 包括DNS解析、建立TCP连接、发送HTTP请求、接收HTTP响应、关闭连接等步骤。 -#### 2.1.2 HTTP请求与响应结构 +#### 2.1.1 URI、URL、URN -[一篇让你彻底了解http请求报文和响应报文的结构](https://zhuanlan.zhihu.com/p/346408612) +- URI = Uniform Resource Identifier 统一资源标志符 +> URI是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI. URI包括URL和URN.后来urn没流行起来,导致几乎目前所有的uri都是url。 +- URL = Uniform Resource Locator 统一资源定位符 +> 是URI的一个子集,又称统一资源定位器、定位地址、URL地址,俗称网址,是因特网上标准的资源的地址,作用是为了告诉使用者某个资源在 Web 上的地址。URL包含访问资源所需的协议类型(如HTTP、HTTPS、FTP)和资源的网络位置(如域名和文件路径) +- URN = Uniform Resource Name 统一资源名称 +> 指的是资源而不指定其位置或是否存在. URN 的一个最好的例子是 ISBN 号,它被用来唯一地识别一本书。URN 与 URL 完全不同,因为它不包含任何协议。 + +![](./resources/uri-url-urn.png) + +--- + +![](./resources/url.png) + +```text + 模式( schema ),相当于 URL 的类型,通常用来表示访问协议,比如 HTTP ; + 用户信息( userinfo ),用于访问资源的用户信息,可选; + 主机( host ),资源所在主机,可选; + 端口( port ),资源所在主机端口,可选,不填则使用协议的默认端口; + 路径( path ),资源所在路径; + 查询( query ),用于访问资源的参数,比如网页传参,可选; + 片段( fragment ),指定资源中的某个片段,比如网页中的锚,可选; +``` + +![](./resources/url-example.png) + +URL示例: +```text + ftp://ftp.is.co.za/rfc/rfc1808.txt + http://www.ietf.org/rfc/rfc2396.txt + ldap://[2001:db8::7]/c=GB?objectClass?one + mailto:John.Doe@example.com + news:comp.infosystems.www.servers.unix + telnet://192.0.2.16:80/ +``` + +#### 2.1.2 浏览器与web服务器的交互过程 + +基本过程: + +![](./resources/web-flow-with-dns.png) + +动态页面交互过程: +![](./resources/web_application_with_html_and_steps.png) -#### 2.1.3 URL -- **构成:** 协议、主机名、端口号、路径、查询字符串。 -- **示例:** `https://example.com/path/to/resource?param1=value1¶m2=value2` +#### 2.1.3 HTTP请求与响应包结构 +[HTTP 消息结构](https://www.runoob.com/http/http-messages.html) #### 2.1.4 HTTP方法 -- **GET:** 请求指定的页面信息并将其返回。 -- **POST:** 向指定资源提交数据进行处理请求(例如提交表单)。 -- **PUT:** 从客户端向服务器发送新的数据,并要求服务器覆盖原位置上的数据。 -- **DELETE:** 请求服务器删除指定的页面。 + +[HTTP 请求方法](https://www.runoob.com/http/http-methods.html) #### 2.1.5 HTTP状态码 - **2xx 成功:** 请求已成功被服务器接收、理解,并接受。 diff --git a/docs/resources/uri-url-urn.png b/docs/resources/uri-url-urn.png new file mode 100644 index 0000000..318407e Binary files /dev/null and b/docs/resources/uri-url-urn.png differ diff --git a/docs/resources/url-example.png b/docs/resources/url-example.png new file mode 100644 index 0000000..d1175ee Binary files /dev/null and b/docs/resources/url-example.png differ diff --git a/docs/resources/url.png b/docs/resources/url.png new file mode 100644 index 0000000..3c26669 Binary files /dev/null and b/docs/resources/url.png differ diff --git a/docs/resources/web-flow-with-dns.png b/docs/resources/web-flow-with-dns.png new file mode 100644 index 0000000..a1b018a Binary files /dev/null and b/docs/resources/web-flow-with-dns.png differ diff --git a/docs/resources/web_application_with_html_and_steps.png b/docs/resources/web_application_with_html_and_steps.png new file mode 100644 index 0000000..1ed115a Binary files /dev/null and b/docs/resources/web_application_with_html_and_steps.png differ