http学习记录
学习http
参考了学长学姐们的建议选择了《图解http》(白嫖并没有买书)
不定时间学习中 =-=
Day01
1.1 使用HTTP协议访问web
Web使用HTTP协议作为规范,完成从客户端到服务器端等一系列运作流程。Web是建立在HTTP协议上通信的。
1.2HTTP的诞生
http是为了让人们可以共享知识而设定的,经历了漫长的发展过程。同时http版本几乎没有更新。正在制定的HTTP/2.0想要有较高的覆盖率也仍然需要一些时间
1.3网路基础TCP/IP
TCP/IP 是互联网相关的各类协议族的总称
TCP/IP 协议族为4 层:
应用层、传输层、网络层和数据链路层。
应用层:决定向用户提供应用服务时通信的活动的一层。如FTP和DNS。
HTTP隶属于该层。
传输层:对应应用层,提供处于网络连接中的两台计算机之间的数据传输。有TCP和UDP。
网络层(网络互连层):用来处理在网络上流动的数据包,规定了通过怎样的路径到达对方计 算机,并把数据包传送给对方。
链路层:用来处理连接网络的硬件部分。
HTTP属于TCP/IP协议族的子集
1.4IP、TCP和DNS
IP:网际协议
把各种数据包传送给对方。而保证传送成功的重要条件时IP地址和MAC地址。IP间的通信依赖MAC地址,通常采用ARP协议来解析地址
TCP:提供可靠的字节流服务
三次握手:保证了TCP的可靠性。
当然TPC不仅仅只靠三次握手来保证可靠性。
DNS:
负责域名解析,与HTTP同属于应用层的协议。提供域名到IP地址之间的解析服务。
1.6 各种协议与HTTP协议的关系
客户端输入域名,DNS将域名解析为IP地址。同时HTTP生成请求报文,再根据TCP协议将HTTP请求报文分割为便于通信的多个报文段。然后根据IP协议中转和传输。服务器得到分割后的报文又根据TCP协议重组报文,接着再根据HTTP协议处理请求报文,从而了解到客户端的需求。并利用再次利用TCP/IP协议对请求结果进行回传。
1.7URL和URI
URI就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。
URL是URI的子集
一个完整的URI:
Day02
2.1 HTTP 协议用于客户端和服务器端之间 的通信
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一 端称为服务器端。
2.2 通过请求和响应的交换达成通信
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段 和内容实体构成的。
2.3 HTTP 是不保存状态的协议
因为HTTP为了效率HTTP不保存状态,同时为了解决保存的问题,引入了Cookie技术。
2.4 -2.6
HTTP 协议使用 URI 定位互联网上的资源,并通过 GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT等方法,向请求 URI 指定的资源发送请求报文,告知服务器客户端的需求。
2.7 持久连接节省通信量
HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使 这样也没有多大问题。可随着 HTTP 的普及,文档中包含大量图片的 情况多了起来。
比如,使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送 请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的 其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断 开,增加通信量的开销。
为了解决此问题,HTTP1.1推出了持久连接的方法,并且在HTTP/1.1 中,所有的连接默认都是持久连接,从而有效的减少了 TCP 连接的重复建立和断开所造成的额 外开销,减轻了服务器端的负载。
也正是因为持久连接,催生出了管线化方式,可以不用等待相应就直接发送下一个请求。
2.8 Cookie技术
Cookie 技术通过在请求和响应报文中写入 Cookie 信 息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出 去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前 的状态信息。
总的来说Cookie技术的诞生使得HTTP既保留了无状态协议的优点的同时又使得信息得以保存。
day03
3.1HTTP报文
HTTP 报文大致可分为报文首部和报文主体两块块。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。 两者由最初出现的 空行(CR+LF)来划分。通常,并不一定要有报文主体。
请求报文及响应报文的结构
请求报文和响应报文的首部内容通常由请求行、状态行、首部字段组成
可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)。
3.3编码提升传输速率
HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过 程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量 的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多 的 CPU 等资源。
压缩传输的内容编码
当发送时,为了使容量变小,HTTP 协议中有一种被称为内容编码的功能可以使实体内容上的编码格式保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。
分割发送的分块传输编码
在 HTTP 通信过程中,请求的编码实体资源尚未全部传输完成之前, 浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割成 多块,能够让浏览器逐步显示页面。
这种功能被称之为分块传输编码(Chunked Transfer Coding)。
使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编 码前的实体主体。
HTTP/1.1 中存在一种称为传输编码(Transfer Coding)的机制,它可 以在通信时按某种编码方式传输,但只定义作用于分块传输编码中
3.4 发送多种数据的多部分对象集合
HTTP 协议中也采纳了多部分对象集合,发送的一份报文主 体内可含有多类型实体。通常是在图片或文本文件等上传时使用。
3.5 获取部分内容的范围请求
一种只请求部分范围的功能
3.6 内容协商返回最合适的内容
内容协商技术有3种类型:
服务器驱动协商(Server-driven Negotiation)
由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自 动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不 一定能筛选出最优内容。
客户端驱动协商(Agent-driven Negotiation)
由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手 动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选 择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机 版页面。
透明协商(Transparent Negotiation)
是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进 行内容协商的一种方法。
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。