【读书笔记】图解HTTP完整流程

1.1 使用 HTTP 协议访问 Web:

  根据 Web 浏览器地址栏中指定的URL,从服务端获取资源等信息,在页面上展示。

  Web 使用一种 HTTP (超文本传输协议)作为规范,完成从客户端到服务端等一系列流程。

  Web 是建立在 HTTP 协议上通信的。

  

1.2 HTTP 的诞生:

  1989-3,CERN(欧洲核子研究组织)蒂姆·伯纳斯-李(Tim Berners-Lee)博士提出一种能让远隔两地的研究者们共享知识的设想。

  基本设计理念:借助多文档之间相互关联形成的超文本(HyperText),连城和相互参阅的 WWW(World Wide Web,万维网)。

  三项WWW构建技术:

  •   把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记的HTML(Hyper Markup Language,超文本标记语言);
  •   作为文档传递协议的HTTP
  •   指定文档所在的地址的URL(Unuform Resource Locator,统一资源定位符)

  1996 年 5 月,HTTP 1.0

  1997 年 1 月,HTTP 1.1 是目前主流的 HTTP 协议版本

  小结:HTTP协议的出现主要是为了解决文本传输的难题  

1.3 网络基础 TCP/IP

  通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的。HTTP 属于它内部的一个子集。

  计算机与网络设备要相互通信,双方必须基于相同的方法,相同的规则。这种规则称为协议(Protocol)。

  

  协议中存在各种各样的内容,像这样把互联网关联的协议集合起来总称为 TCP/IP 协议。协议族的统称。

   TCP/IP 协议族分层:应用层、传输层、网络层、数据链路层。

  应用层:决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务,如 FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name Service,域名系统)服务就是其中两类。HTTP协议也处于该层。

  传输层:提供处于网络连接中的两台计算机之间的数据传输。该层有两种协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol, 用户数据报协议)。

  网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。

  链路层:用来处理网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC,及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。

  

  利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往上走。

  例如,客户端在应用层(HTTP协议)发出一个想看某个Web页面的 HTTP 请求。

  接着为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文打上标记序号及端口号后转发给网络层。

  在网络层(IP协议),增加作为通信目的地的 Mac 地址后转发给链路层。这样一来,发送网络的通信请求就准备齐全了。

  接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。

  

  发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。

  这种把数据信息包装起来的做法称为封装(encapsulate)。

1.4 与 HTTP 关系密切的协议:IP、TCP、DNS:

  负责传输的 IP(Internet Protocol) 协议。IP 协议的作用是把各种数据包传送给对方。要保证确实传送到对方那里,则需要满足各类条件。 IP 地址 和 MAC 地址。

  IP 地址指明了节点被分配到的地址,Mac 地址是指网卡所属的固定地址。IP 地址可以和 Mac 地址进行配对。IP 地址可变换,但 Mac 地址基本上不会更改。

  ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 Mac 地址。

  TCP 位于传输层,提供可靠的字节流服务。为了传输方便,将大块数据分割成以报文段(Segment)为单位的数据包进行管理。而可靠的传输服务协议是指,能够把数据准确可靠地传给对方。。

  TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

  为了准确无误地将数据送达到目的地,TCP 协议采用了三次握手策略。握手过程中使用了 TCP 的标志(flag)--SYN(synchronize)和 ACK(acknowledgement)。

  发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

  若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

  

1.5 负责域名解析的 DNS 服务

  DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。

  计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。

1.6 各种协议与 HTTP 协议的关系

  HTTP 协议职责:生成针对目标 Web 服务器的 HTTP 请求报文;

  TCP 协议职责:为了通信方便,将 HTTP 请求报文分割成报文段,把每个报文段可靠的传给对方;

  IP 协议的职责:搜索对方的地址,一边中转一边传送

  

1.7 URI 和 URL

  URI(Uniform Resource Identifier)统一资源标识符:是由某个协议方案表示的资源定位标识符。协议方案是指访问资源所使用的协议类型名称。

  常见的有 HTTP、FTP、mailto、telnet、File 等;

  URI 用字符串标识某一互联网资源,而URL 标识资源的地点(互联网上所处的位置)。

  URL 是 URI 的子集。

  

  URI 格式:

  

2.1 HTTP 协议用于客户端和服务端之间的通信:

  请求报文的构成:

  

  

2.3 HTTP 是不保存状态的协议:

  HTTP 是不保存状态的协议,即无状态(stateless)协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。

  使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。

  为了实现保存状态的功能,引入了 Cookie 技术。

2.4 请求 URI 定位资源:

  HTTP 协议使用 URI 定位互联网上的资源。当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求 URI 包含在内。

2.5 告知服务器意图的 HTTP 方法:

  GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。

    如果请求的资源是文本,那就保持原样返回;如果是像 CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行的输出结果。

  POST 方法用来传输实体的主体。一般用 POST 方法传输实体的主体。POST 的主要目的并不是获取响应的主体内容。

  PUT:传输文件 ,像 FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到指定 URI 指定的位置。

    PUT 方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般 Web 网站不使用该方法。

  Head:获取报文首部,不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。

  DELETE:删除文件:delete 方法按请求 URI 删除指定的资源。不带验证机制,一般的 Web 网站不用。当配合 Web 应用程序的验证机制,或遵守 REST 标准时还是有可能开发使用。

  OPTIONS:方法用来查询对请求 URI 指定的资源支持的方法。

  TRACE:方法是让 Web 服务器将之前的请求通信环回给客户端的方法。发送请求时,在 Max-Forward 首部字段中填入数值,每经过一个服务器端就将该数字减 1,当数值刚好减到 0 时,就停止传输,最后接收到请求的服务端则返回状态码 200 OK 的响应。

  

  CONNECT:要求用隧道协议连接代理,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,安全传输层)协议把通信内容加密后经网络隧道传输。

 2.6 使用方法下达命令:

  

  

  

2.7 持久连接节省通信量

  HTTP keep-alive 特点,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。这样做减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务端的负载。另外,减少开销的那部分时间,

  

  

   

  

原文地址:https://www.cnblogs.com/ZachRobin/p/9111426.html