HTTP协议之概述 学习笔记

1、HTTP

HTTP是现代全球因特网中使用的公共语言。Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP使用的是可靠的数据传输协议。

2、Web客户端和服务器

Web内容都是存储在服务器上的。Web服务器所使用的是HTTP协议,由此经常会被称为HTTP服务器。

这些HTTP服务器存储了因特网中的数据,如果HTTP客户端发出请求的话,它们会提供数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中会送所请求的数据,如图所示。在这里插入图片描述
最常见的客户端就是Web浏览器。其原理就是Web浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。

3、资源

Web服务器就是Web资源的宿主。Web资源时Web内容的源头。

在这里插入图片描述
所有能提供Web内容的东西都是Web资源。

3.1、媒体类型

因特网上有数千种不同的数据类型,HTTP仔细地给每一种要通过Web传输的对象都打上名为MIME type 的数据格式标签,以此解决在不同的电子邮件系统之间搬移报文时存在的问题。

就拿Web服务器来说,Web服务器会为所有HTTP对象数据附上一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。

MIME类型如下:

HTML格式的文本文档由 text/html 类型来标记
普通的ASCII文本文档由 text/plain 类型来标记
JPEG格式的图片为 image/jpeg 类型
GIF格式的图片为 image/gif 类型
Apple 的QuickTime 电影为 video/quicktime 类型
微软的PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型

3.2、URI

每个Web服务器资源都有一个名字,服务器资源名被称为统一资源标识符,简称URI.URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

3.3、URL

统一资源定位符(URL)是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。

大部分URL都遵循一种标准格式,这种格式包含三个部分。

1、URL的第一部分被称为方案,说明了访问资源所使用的协议类型。这部分通常就是HTTP协议,即(http://)。
2、第二部分给出了服务器的因特网地址(比如:www.baidu.com)。
2、其余部分指定了Web服务器上的某个资源(比如:/specials/saw-blade.gif).

现在几乎所有URI都是URL。

3.4、URN

URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。目前URN仍然处于试验阶段。

4、事务

我们来看看客户端是怎么通过HTTP与Web服务器及其资源进行事务处理的:
在这里插入图片描述
一个HTTP事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为HTTP报文(HTTP message)的格式化数据进行的。

4.1、方法

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

常见的五种方法如下:

1. GET: 从服务器向客户端发送命名资源
2. PUT: 将来自客户端的数据存储到一个命名的服务器资源中去
3. DELETE: 从服务器中删除命名资源
4. POST: 将客户端数据发送到一个服务器网关应用程序
5. HEAD: 仅发送命名资源响应中的HTTP首部 

4.2、状态码

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

常见的几种状态码如下:

200: OK,文档正确返回
302: Redirect(重定向)。到其他地方去获取资源
404: Not Found(没找到)。无法找到这个资源

5、报文

HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。如图所示:
在这里插入图片描述
从Web客户端发往Web服务器的HTTP报文称为请求报文。从服务器发往客户端的报文称为响应报文,此外没有其他类型的HTTP报文。

HTTP报文包括以下三个部分:

起始行:
报文的第一行就是起始行,在请求报文中用来说明要做些什么;在响应报文中说明出现了什么状况。

首部字段:
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,用冒号分隔。首部以一个空行结束。

主体:
空行后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给web服务器的数据;响应主体中装载了要返回给客户端的数据。主体中可以包含任意的二进制数据(比如图片,视频,音轨,软件程序)。当然也包含文本。

6、连接

接下来我们就来讨论下报文是如何通过传输控制协议(TCP)连接从一个地方搬移到另一个地方去的。

6.1、TCP/IP

HTTP是个应用层协议,所以它无需操心网络通信的具体细节,至于要把细节交给TCP/IP就可以了。

TCP的特点:

1.无差错的数据传输
2.按顺序传输(数据按顺序到达)
3.数据流未分段(可以任意时刻以任意尺寸将数据发送出去)

TCP/IP隐藏了各种网络和硬件的特点和弱点,使各种类型的计算机和网络都能进行可靠的通信。
只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失,不会被破坏,也就不会再接收的时候出现错序了。

用网络术语来说,HTTP协议位于TCP的上层,HTTP使用TCP来传输其报文数据。与之类似,TCP则位于IP的上层,如下图:
在这里插入图片描述

6.2、连接、IP地址及端口号

在HTTP客户端向服务器发送报文之前,需要用网际协议(IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接。所以说,在TCP中,要想进行连接,就需要知道服务器的IP地址,以及与服务器上运行的特定软件相关的TCP端口号。IP地址,端口号,一般在我们的URL中,也就是资源地地址中,都可以看得到。

接下来,我们就从下图分析一下一个基本的浏览器连接处理:
在这里插入图片描述
步骤如下:
a.浏览器从URL中解析出服务器的主机名;
b.浏览器将服务器的主机名转换成服务器的IP地址;
c.浏览器的端口号从URL中解析出来;
d.浏览器建立一条与Web服务器的TCP连接;
e.浏览器向服务器发送一条HTTP请求报文;
f.服务器向服务器会送一条HTTP相应报文;
g.关闭连接,浏览器显示文档。

7.协议版本

现在使用的HTTP协议有几个版本:

  • HTTP/0.9
  • HTTP/1.0
  • HTTP/1.0+
  • HTTP/1.1
  • HTTP1.2

8.Web的结构组件

除了Web浏览器和Web服务器,还有其他一些比较重要的应用程序,如下所示:

  • 代理:
    位于客户端和服务端之间的HTTP中间实体

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

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

  • 隧道:
    对HTTP通信报文进行盲目转发的特殊处理

  • Agent代理:
    发起自动HTTP请求的半智能Web客户端

8.1、代理

首先我们来看看HTTP代理服务器。代理位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改之后转发)。对用户来收,这些应用程序就是一个代理,代表用户访问服务器。

在这里插入图片描述
出于安全考虑,通常会将代理作为转发所有Web流量的可信任中间节点使用。代理还可以对请求和响应进行过滤。比如在企业中对下载的应用程序进行病毒检测。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值