《HTTP权威指南》读书笔记(一)

HTTP概述

1、HTTP使用的是可靠的数据传输协议、因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,开发人员无需担心HTTP通信会在传输过程中被破坏、复制或产生畸变。

2、Web客户端和服务器:Web内容都是存储在web服务器上的,web浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。

3、资源:所有类型的内容来源都是资源。

1)媒体类型:HTTP给每种要通过Web传输的对象都打上了名为MINE类型的数据格式标签。当Web浏览器从服务器中取回一个对象时,会去看相关的MINE类型,看看它是否知道应该如何处理这个对象。一般是这样标识:Content-type:image/jpeg,其中,image表示一种主要的对象类型,jpeg是一个子类型。

2)URI:统一资源标识符,有两种形式,分别为URL和URN。

URL:描述一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。它一般分为三部分:第一部分称为方案,说明了访问资源所使用的协议类型,通常是http协议(http://)。第二部分给出服务器的因特网地址(www.baidu.com)。其余部分,指定Web服务器上某个资源。

URN:统一资源名,不常用。

4、事务:一个HTTP事务是由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为HTTP报文的格式化数据块进行的,

1)方法:HTTP支持几种不同的请求命令,统称为HTTP方法。每条HTTP请求报文都包含一个方法。这个方法告诉服务器执行什么动作。五种常见的方法:

GET:从服务器向客户端发送命名资源

PUT:将来自客户端的数据存储到一个命名的服务器资源中去

DELETE:从服务器中删除命名资源

POST:将客户端数据发送到一个服务器网关应用程序

HEAD:仅发送命名资源响应中的HTTP首部

2)状态码:每条HTTP响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是采取其他动作。几种常见的状态码:

200  OK。文档正确返回

302  Redirect(重定向)。到其他地方去获取资源

404 Not Found(没找到)。无法找到资源

3)Web页面中可以包含多个对象:一个“Web页面”通常并不是单个资源,而是一组资源的集合。复合Web页面要为每个嵌入式资源使用一个单独的HTTP事务。

5、报文:HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码。从Web客户端发往Web服务器的HTTP报文称为请求报文。从服务器发往客户端的报文称为响应报文。报文的组成:

起始行:在请求报文中用来说明要做些什么,在响应报文中用来说明出现了什么情况。

首部字段:包含一个名字和一个值

主体:包含所有类型的数据。

下图所示为报文格式:浏览器请求资源:http://www.joes-hardware.com/tools.html。


下图为HTTP简单的报文实例:


6、连接:报文是如何通过传输控制协议(TCP)连接从一个地方搬移到另一个地方的?

HTTP是个应用层协议。HTTP无需操心网络通信的具体细节;它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失、不会被破坏,也不会在接收时出现错序了。

在HTTP客户端向服务器发送报文之前,需要用网际协议(IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接。在TCP中,需要知道服务器的IP地址,以及服务器上运行的特定软件相关的TCP端口号。怎么获得IP和端口号呢?通过URL!!!

例如:http://207.200.83.29:80/index.html ,这个URL中使用了机器的IP地址以及端口号。

再如:http://www.netscape.com:80/index.html,这个URL使用的是文本形式的域名,或者成为主机名,主机名就是IP地址比较人性化的别称!!可以通过一种称为域名服务(DNS)的机制方便的将主机名转换为IP地址,这样所有问题都解决了。

注意:如果没有端口号,那么假设默认的是80端口。

基本的浏览器连接处理过程如下:


步骤如下:

1)浏览器从URL中解析出服务器的主机名;

2)浏览器将服务器的主机名转换成服务器的IP地址;

3)浏览器将端口号从URL中解析出来;

4)浏览器建立一条与Web服务器的TCP连接;

5)浏览器向服务器发送一条HTTP请求报文;

6)服务器向浏览器回送一条HTTP响应报文;

7)关闭连接,浏览器显示文档。

7、Web的结构组件:

1)代理:位于客户端和服务器之间的HTTP中间实体。

2)缓存:HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方。

3)网关:连接其他应用程序的特殊Web服务器。

4)隧道:对HTTP通信报文进行盲转发的特殊代理。

5)Agent代理:发起自动HTTP请求的半智能web客户端。

代理服务器:是web安全、应用集成以及性能优化的重要组成模块。其位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。对用户来说,这些应用程序就是一个代理,代表用户访问服务器。出于安全考虑,通常会将代理作为转发所有web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。比如,在企业中对下载的应用程序进行病毒检测,或者对小学生屏蔽一些成人才能看的内容。

缓存:Web缓存或者代理缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来。下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比从远程Web服务器下载快得多。


网关:是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与一个网关进行通信。例如,一个HTTP/FTP网关会通过HTTP请求接收对FTP URI的请求,但是通过FTP协议来获取文档,得到的文档会被封装成一条HTTP报文,发送给客户端。网关就相当于将协议进行了转换。网关工作原理如下图:

 

隧道:可以在两条连接之间对原始数据进行盲转发。通常用来在一条或者多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。HTTP隧道的一种常见用途是通过HTTP连接承载加密的安全套接字层(SSL)流量,这样SSL流量就可以穿过只允许Web流量通过的防火墙了。[隧道可以在非HTTP网络上转发数据]

例如,如下图所示的过程:

 

HTTP/SSL隧道收到一条HTTP请求,要求建立一条到目的地址和端口的输出连接,然后在HTTP信道上通过隧道传输加密的SSL流量,这样就可以将其盲转发到目的服务器上了。

  8、Agent代理:代表用户发起HTTP请求的客户端程序。所有发布Web请求的应用程序都是HTTP Agent代理。到目前为止,我们只提到过一种HTTP Agent代理:Web浏览器,但是用户Agent代理还有很多其他类型。例如:“网络蜘蛛”就是Agent代理,可以从世界范围内获取web页面。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值