这个类别的笔记,主要是存放我的读书笔记,以前并没有刻意去写读书笔记,专业课的书不会去写读书笔记,出了专业书之外,看的一些书,主要是一些算法书和数据结构方面的书,还有其他的一些书都变成一些代码了。
这次因为赵老师发起了SSP计划,也就是学生资助计划,让我们这些平时没有那么多预算买比较贵的计算机书籍的学生,可以通过向他申请这些书籍来阅读。详情请访问:SSP首页
我这次申请的书籍是《HTTP权威指南》,想读这本书的原因是:一直在做移动开发,使用到的数据一般是在服务器封装好的json,通过HTTP协议去拿,为了接下来服务端的一些学习,以及对HTTP协议的兴趣,所以我打算好好学习一下这方面的原理。
第一篇主要是针对这本书的一个概述
因为之前已经上过计算机网络这门课,所以对网络的一些知识有一定了解,HTTP协议是应用层的协议,使用的是TCP协议进行传输,因此它能够保证数据在传输过程中不会被损坏或产生混乱。
这张图就是HTTP请求的一个简单的通讯过程。
我们在网上下载一些资源的时候,都是通过URI(Uniform Resource Identifier)来定位,这个标识符就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
URL(Uniform Resource Locator) 和 URN(Uniform Resource Names) 是URI的两种形式。
其中URL是URI的最常见的表示形式,也是我们平时用的最多的。
URN是作为特定内容的唯一名称使用,与目前资源所在地无关。使用这种与位置无关的URN就可以将资源四处搬移。使用URN还可以用一个名字通过多种网络访问协议来访问资源。
例如:不论因特网标准文档 RFC2141位于何处(甚至可以复制到多个地方),都可以使用下面的URN来定位它:urn:itef:rfc:2141
但是,现在URN还处于实验阶段,还未大范围使用,所以现在我们经常都是没有特意去区分URL和URI的。但是也可以看出,当URN大范围使用的时候,我们在网上找资源的时候,会方便很多,也会快一些,因为同一资源可以复制到不同位置,URN应该可以根据我们的请求点,与最近的服务器进行连接,获取资源。
HTTP支持几种不同的请求命令,这些请求命令称为HTTP方法。
HTTP方法 | 描述 |
---|---|
Get | 从服务器向客户端发送命名资源 |
Put | 将来自客户端的数据存到一个命名的服务器资源中去 |
Delete | 从服务器中删除命名资源 |
Post | 将客户端数据发送到一个服务器网关应用程序 |
Head | 仅发送命名资源响应中的HTTP头部 |
每条HTTP请求响应报文都会携带一个状态码,就像200标识OK 404标识找不到。
IP地址、DNS、端口号这些在计算机网络中已经有所学习 这里就不阐述,等后面章节有深入内容时,再进行阐述。
最后说下我一直比较模糊的几个概念
代理(Proxies):位于客户端与服务器之间的HTTP中间实体
缓存(caches):HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方
网关(Gateways):连接其他应用程序的特殊的web服务器,通常用于将HTTP流量转换为其他的协议。
隧道(Tunnels):对HTTP通信报文进行盲转发的特殊代理,隧道建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。
这个概念比较陌生,后面会更加认真学习。下图是隧道的一种
上图的过程是:HTTP/SSL(Secure Sockets layer)隧道收到一条HTTP请求,要求建立一条目的地址和端口的输出连接,然后在HTTP信道上通过隧道传输加密的SSL流量,这样就可以将其盲目转发到目的服务器上去了。
Agent代理:用户Agent代理是代表用户发起HTTP请求的客户端程序,我们经常使用的web浏览器就是一种Agent代理,还有网络蜘蛛、web机器人等。
概述大概就是这些,后面的章节会对这些内容进行详细的阐述。