1. 第一部份

第一章 了解Web及网络基础

 Web建立基础、HTTP如何诞生发展


1.使用HTTP协议访问Web

 在浏览器地址栏中输入URL之后过程:

 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址:具体过程包括浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件和向本地 DNS 服务器进行查询等。对于向本地 DNS 服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

 2)TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手;

 3)发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;

 4) 服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

 5)浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

 6) 连接结束

2.HTTP的诞生——巴拉巴拉……

3.网络基础TCP/IP

  TCP/IP是互联网相关的各类协议族的总称。

  【分层管理】:

    应用层(决定了向用户提供应用服务时通信的服务):FTP、DNS、HTTP…

    运输层(提供处于网络连接中的两台计算机之间的数据传输):TCP、UDP

    网络层(处理网络上流动的数据包):IP、ARP、ICMP、BGP

    链路层(处理连接网络的硬件部分):PPP、CSMA/CD

  【TCP/IP通信传输流】:

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

    我们用 HTTP 举例来说明:

    首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求

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

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

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

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

  【IP:负责传输IP 地址是指互联网协议地址,处于网络层,是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

  IP是一种协议的名称,要与IP地址区分出来。IP协议的作用是把各种数据包传送给对方。而确保消息传送到对方那,需要两个重要条件:IP地址和MAC地址。

  IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址。

  ARP协议:根据通信方的IP地址反查出对应的MAC地址。

  路由选择:BGP、RIP、OSPF

  【TCP:确保可靠性】TCP处于运输层,提供可靠的字节流服务。字节流服务是指为了方便传输,将大数据分割成以报文段为单位的数据包进行管理。可靠是指能把数据准确可靠的传输给对方(三次握手、四次挥手)。

  【DNS:负责域名解析】DNS协议提供通过域名查找IP地址,或者逆向从IP地址反查域名的服务。

5.各种协议和HTTP协议的关系

 6.URI和URL

  URI:统一资源标识符,用字符串标识(无论何种方式,只要能标识就可以)某一互联网资源。

  URL:统一资源定位符,用字符串表示资源的地点,URL只是标识某一互联网资源的方式的其中一种,因此URL是URI子集。URL则通过描述是哪个主机上哪个路径上的文件来唯一确定一个资源,也就是定位的方式来实现的URI。

  【URI格式

  登录信息:指定用户名和密码作为从服务器端获取资源的必要的登录信息(身份认证)。可选项。

  片段标识符:标记已获取资源中的子资源。


第二章 简单的HTTP协议

针对HTTP协议结构进行讲解

1.通过请求和响应的交换来达成通信目的

  应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色。

  【请求报文】是由请求方法URI协议版本请求首部字段内容实体组成的。

  【响应报文】是由协议版本状态码状态码原因短语响应首部字段响应实体组成的。

2.HTTP是不保存状态的协议(无状态)

   HTTP 是一种不保存状态,即无状态协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快的处理大量事务,确保协议的可伸缩性。

3.请求方法

GET】获取资源

POST】传输实体主体,虽说POST和GET作用类似,但是POST主要目的不是获取响应的主题内容,而是为了传输内容给服务端。

PUT】传输文件:要求请求主体里包含文件内容。

HEAD】获得报文首部:HEAD 方法和 GET 方法样,只是不返回报文主体部分。用于确认URI 的有效性资源更新的日期时间

DELETE】删除文件

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

TRACE】追踪路径:让Web服务端将之前的请求通信还会给客户端。

CONNECT】要求用隧道协议连接代理:主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。

 4.持久连接节省通信量

  持久连接特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态。称为keep-alive或者connection reuse。目的是为了建立一次TCP连接后进行多次请求和响应的交互。HTTP/1.1中所有的连接默认是持久连接,但在HTTP/1.0未标准化。

  【管线化】从前发送请求后需要收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应就可以直接发送下一个请求。这样就可以实现并行发送多个请求。

5.使用Cookie的状态管理  HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。所以引入Cookie技术,Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端状态。

  Cookie 会根据从服务器端发送的响应报文内的个叫做 Set-Cookie 首部字段信息,通知客户端保存 Cookie当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出

  服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。


 第三章 HTTP报文中的HTTP信息

HTTP通信过程:客户端—》服务端,服务端—》客户端。

1.HTTP报文

  使用HTTP协议交互的信息被称为HTTP报文,包括请求报文和响应报文。

  【请求报文和响应报文结构】报文首部(请求行/相应行+首部字段<请求、响应、通用、实体首部字段>)+报文主体

  

 2.报文编码

  HTTP在传输数据是可以通过编码技术来有效处理大量的访问请求,但会消耗更多的CPU等资源。

  【报文和实体】报文是箱子,是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP传输。实体是货物,作为请求或响应的有效载荷数据。报文中的实体是由实体首部和实体主体组成的。一般情况下,报文主体等于实体主体。但在传输过程进行编码操作时,实体主体内容发生变化,和报文主体产生差异。

  【压缩传输的内容编码】内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接受并负责解码。常见的内容编码方式:gzip、compress(UNIX系统标准压缩)、deflate、identity。

  【分割发送的分块传输编码】将数据分割成多块,能让浏览器逐步显示页面。实体最后一块使用0(CR+LF)来标识。

  【发送多种数据的多部份对象集合】传输实体包含不同类型的数据,例如邮件的附件可以同时添加文字、音频、视频等,这就是采用了MIME(多用途因特网邮件扩展)机制。相应地,HTTP协议中也采纳了多部份对象集合,发送的报文主体有多种类型实体,通常在图片或文本等上传时使用。在HTTP报文中使用多部份对象集合时,需要在首部字段加上Content-type,并且使用boundary字符串来划分多部份对象的各类实体。

  多部份对象集合包含的对象如下:

      multipart/form-data:在Web表单文件上传时使用

      multipart/byteranges:状态码206响应报文包含了多个范围的内容是使用。  

  【获取部分内容的范围请求】指定要请求的范围的发送请求叫做范围请求。例如对一份10000字节大小的资源,如果使用范围请求,可以指请求5001~10000字节内的资源。

  Range: bytes=5001-10000    请求5001-10000字节的

  Range: bytes=5001-    请求5001字节之后全部的

  Range: bytes= -3000,5001-7000  请求一开始到3000和5001-7000的

  【内容协商返回最合适的内容】内容协商机制是指客户端和服务端就相应的资源内容进行交涉,然后提供给客户端最为适合的资源。包含在请求报文中的某些首部字段就是判断的基准。

  内容协商技术有以下三种类型:服务器驱动协商、客户端驱动协商、透明协商。

原文地址:https://www.cnblogs.com/qmillet/p/12070352.html