HTTP概述

Web浏览器、服务器和相关的web应用程序都是通过http相互通信的。http协议规定了Web应用程序之间进行通话的格式。(比如中国人之前进行通过就是通过汉语进行通话的,汉语就是两个人之间的通话协议。规定了汉语这个协议之后,每个中国人之间说话就都能听懂了)。现在使用的一般都是HTTP/1.1这个版本。

web客户端和服务器

web内容都是存储在web服务器上的。web服务器所使用的是http协议,因此经常被称为http服务器。这些http服务器存储了因特网中的数据,如果http客户端发出请求的话,他们会提供数据。客户端向服务器发送http请求,服务器会在http响应中回送所请求的数据。
这里写图片描述
最常见的http客户端就是web浏览器
浏览一个页面是(比如http://www.oreilly.com/index.html),浏览器会向服务器www.oreilly.com发送一条 http请求。服务器会去寻找所期望的对象(在这个例子中就是/index.html),如果成功,就将对象、对象类型、对象长度以及其他一些信息放在http响应中发送给客户端。
浏览器只负责解释执行html+css+JavaScript代码
服务器可执行服务器端语言:.net,java…,分别由不同的运行环境执行代码(Framework,JVM)
ping命令的使用:ping就是对服务器发送测试数据包,看对方时候有响应并统计响应时间,以此测试网络。比如,ping www.baidu.com -t。怎样ping网络
telnet命令的使用:也可以用来测试网络。telnet配置和telnet用法

资源

web服务器是web资源的宿主。web资源是web内容的源头。
最简单的web资源就是web服务器文件系统中静态文件。这些文件可以包含任意内容:文件文本、html文件、word文件、jpeg图片文件,AVI电影文件,或所有其他你能够想到的格式。在服务器直接读取文件然后返回客户端浏览器(任何时候访问看到的都是一样的)
但资源不一定非得是静态文件。资源还可以是根据需要生产内容的动态文件。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。在服务器是先交给某语言环境虚拟机编译运行,按照语法生成代码返回客户端浏览器。(不同条件和时候访问看到的都界面也不同。)

媒体类型

因特网上有数千种不同的数据类型,http仔细地给每种要通过web传输的对象都打上了名为MIME类型的数据格式标签。
web服务器会为所有http对象数据附加一个MIME类型。当web浏览器从服务器中取回一个对象时,回去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型。
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
html格式的文本文档由text/html类型来标记
普通的ASCII文本文档由text/plain类型来标记
JPEG版本的图片为image/jpeg类型
GIF格式的图片为image/gif类型

URI

每个Web服务器都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。
服务器资源名被统一为资源标识符(Uniform Resource Identifier,URI)。
URI有两种形式,分别是URL和URN

URL

统一资源定位符(URL)是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。这里写图片描述
URL的第一部分称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是http协议(http://)
第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)
其余部分指定了Web服务器上的某个资源(比如,/specials/say-blade.gif)
现在几乎所有的URI都是URL

URN

URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
URN仍然处于试验阶段,还未大范围使用。

事务

一个http事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为http报文(http message)的格式化数据块进行的。
这里写图片描述

方法

http支持几种不同的请求命令,这些命令被称为http方法。每条http请求报文都包含一个方法。这个方法会告诉服务器执行什么动作(获取一个web页面、运行一个网关程序,删除一个文件等)
这里写图片描述

状态码

每条http响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。
这里写图片描述
伴随着每个数字状态码,http还会发送一条解释性的“原因短语”文本。包含文本短语主要是为了进行描述,所有的处理过程使用的都是数字码。
http软件处理下列状态码和原因短语的方式是一样的。
200 OK
200 Document attached
200 Success
200 All’s cool,dude

web页面中可以包含多个对象

应用程序完成一项任务时通常会发布多个http事务。
比如,web浏览器会发布一系列http事务来获取并显示一个包含了丰富图片的web页面。浏览器会执行一个事务来获取描述页面布局的html框架,然后发布另外的http事务来获取每个嵌入式图片、图像面板、java小程序等。这些嵌入式资源甚至可能位于不同的服务器上。因此,一个‘Web页面’通常并不是单个资源,而是一组资源的集合。
这里写图片描述

报文

http报文是由一行一行的简单字符串组成的。http报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。
从web客户端发往web服务器的http报文称为请求报文(request message)。从服务器发往客户端的报文称为响应报文(response message)。
http报文包括三个部分:
起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号来分隔。首部以一个空行结束。
主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包含了要发送给web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨,软件程序)。当然,主体中也可以包含文本。

这里写图片描述

连接

报文通过传输控制协议(TCP)连接从一个地方搬移到另一个地方去。
在http客户端向服务器发送报文之前,需要用网际协议(Internet Protocol,IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接。
在TCP中,你需要知道服务器的IP地址,以及与服务器上运行的特定软件相关的TCP端口号。这些通过URL获得。
例如:
http://207.200.83.29:80/index.html
http://www.netscape.com:80/index.html
http://www.netscape.com/index.html
第一个URL使用了机器的IP地址,207.200.83.29以及端口号
第二个URL没有使用数字形式的IP地址,它使用的是文本形式的域名,或者称为主机名(www.netscape.com).主机名就是IP地址比较人性化的别称。可以通过一种称为域名服务(Domain Name Service,DNS)的机制方便地将主机名转换为IP地址。(用户在浏览器地址栏输入网址:www.baidu.com,浏览器先看当前电脑上是否保存了www.baidu.com对应的服务器IP地址;如果有,就直接请求;
如果没有,则先到DNS服务器查询,DNS返回查询到的IP地址给浏览器,浏览器在本机保存,并发送请求到对应的IP地址。

最后一个URL没有端口号。HTTP的URL中没有端口号时,可以假设默认端口号时80。有了IP地址和端口号,客户端就可以很方便地通过TCP/IP进行通信了。
这里写图片描述
步骤如下:
1.浏览器从URL中解析出服务器的主机名
2.浏览器将服务器的主机名转换成服务器的IP地址
3.浏览器将端口号(如果有的话)从URL中解析出来
4.浏览器建立一条与Web服务器的TCP连接
5.浏览器向服务器发送一条http请求报文
6.服务器向浏览器回送一条http响应报文
7关闭连接,浏览器显示文档

Web的结构组件

除了Web浏览器和Web服务器这两个Web应用程序之外,还有一些其他比较重要的应用程序。

代理

代理位于客户端和服务器之间,接收所有客户端的http请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。对用户来说,这些应用程序就是一个代理,代表用户访问服务器。
出于安全考虑,通常会将代理作为转发所有Web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。比如,在企业中对下载的应用程序进行病毒检测。
这里写图片描述

缓存

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

网关

网关(geteway)是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将http流量转换成其他的协议。网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正在与一个网关进行通信。
这里写图片描述

隧道

隧道(tunnel)是建立起来之后,就会在两条连接之间对原始数据进行盲转发的http应用程序。http隧道通常用来在一条或多条http连接上转发非http数据,转发时不会窥探数据。
http隧道的一种常见用途是通过http连接承载加密的安全套接字层(SSL,Secure Sockets Layer)流量,这样SSL流量就可以穿过只允许Web流量通过的防火墙了。HTTP/SSL隧道收到一条http请求,要求建立一条到目的地址和端口的输出连接,然后在http信道上通过隧道传输加密的SSL流量,这样就可以将其盲转发到目的服务器上去了。
这里写图片描述

Agent代理

用户Agent代理(或者简称为Agent代理)是代表用户发起http请求的客户端程序。所有发布web请求的应用程序都是HTTP Agent代理。到目前为止,我们只提到过一种HTTP Agent代理:Web浏览器,但用户Agent代理还有很多其他类型。
比如,有些自己会在web上闲逛的自动用户Agent代理,可以在无人监视的情况下发布http事务并获取内容。这些自动代理的名字通常都很生动,比如“网络蜘蛛”或者“web机器人”。网络蜘蛛会在web上闲逛,搜集信息以构建有效的web内容档案,比如一个搜索引擎的数据库或者为比较购物机器人生成的产品目录。
这里写图片描述

URL与资源
HTTP报文
Get和Post请求

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值