HTTP简单概述

媒体类型
  • 因特网上的数千种不同的数据类型。HTTP仔细的给每种要通过Web 传输的对象都打上了名为MIME类型的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。HTTP采纳了它,用它来标记多媒体内容。
  • 这个MIME类型说白了就是Content-type字段。MIME类型时一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
    • HTML格式的文本文档由test/html 类型来标记
    • 普通的ASCII 文本文档由test/plain 类型来标记
    • JPEG版本的图片为 image/jpeg类型
    • GIF格式的图片为 image/gif 类型
    • 等等
  • 提供的MIME类型由数百个。很多很多。
URI
  • 服务器资源名被称为统一资源标识符(URI)。就像是因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。URI有两种形式,分别是URL和URN。
URL:同一资源定位符
- 描述了一台特定服务器上某资源的特定位置。他们说明如何从一个精确、固定的位置获取资源。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190612174810729.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDIxOTE5,size_16,color_FFFFFF,t_70)- 如上,显示了 URL 如何精确地说明某资源的位置以及如何去访问它。

在这里插入图片描述- 大部分URL都遵循一种标准格式,这种格式包含三个部分。
1. URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常是HTTP协议。
2. 第二部分给出了服务器的因特网地址(比如:www.joes-hardware.com
3. 其余部分指定了Web 服务器上的某个资源。

  • 注意:几乎现在的URI 都是URL。
URN
  • 统一资源名。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用一个名字通过多种网络访问协议来访问资源。
  • URN任然处于试验阶段,还未大范围使用。

事务

  • 一个HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。这种通信是通过名为HTTP报文的格式化数据块进行的。
方法
状态码
  • 如下:一些常见的HTTP状态吗

在这里插入图片描述- 伴随着每个数字状态码,HTTP还会发送一条解释性的“原因短语”文本。包含文本短语主要是为了进行描述。所有处理过程都使用的是数字码。

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

报文

  • HTTP报文时由一行一行的简答字符组成。HTTP报文都是纯文本
    在这里插入图片描述- 从Web客户端发往Web服务器的HTTP报文称为请求报文。从服务器发往客户端的报文称为响应报文。此外没有其他类型的HTTP报文。
  • HTTP报文分为三部分
    • 起始行:报文第一行,在请求报文中说明要做些什么,在响应报文中说明出现了什么情况。
    • 首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名称和一个值,为了便于解析,两者之间用冒号来分割。首部以一个空行结束。
    • 主体:包含了所有类型的数据。请求主体中包含了要发送给Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主题则不同,主体中可以包含任意的二进制数据(图片、视频、音轨、软件程序)。当然主体中也可以包含文本。

连接

TCP/IP
  • HTTP是应用层协议,HTTP无需操心网络通信的具体细节,它把联网的细节都交给了通用的、可靠的因特网传输协议TCP/IP。
  • 一条HTTP连接过程
    1. 浏览器从URL中解析处服务器的主机名
    2. 浏览器将服务器的主机名转换成服务器的IP地址
    3. 浏览器将端口号(如果有的话)从URL中解析出来
    4. 浏览器建立一条与Web服务器的TCP连接
    5. 浏览器向服务器发送一条HTTP请求报文
    6. 服务器向浏览器会送一条HTTP响应报文
    7. 关闭连接,浏览器显示文档。
可以使用telnet来直接与Web 服务器及进行对话
协议版本
  • HTTP/0.9 : 1991原型版本,只支持GET方法,不支持媒体内容的MIME类型、各种HTTP首部,或者版本号。定义的初衷就是为了获取简单的HTML对象。
  • HTTP/1.0 : 第一个广泛使用的HTTP版本。1.0添加了版本号、各种HTTP 首部、一些额外的方法,以及对多媒体对象的处理。HTTP/1.0使得包含生动图片的Web页面和交互式表格称为可能,此时是短链接。
  • HTTP/1.0+ : 包含了持久的Keep-alive 连接、虚拟主机支持,以及代理连接都被加入到HTTP之中。并成为官方的事实标准。但是是非正式的。
  • HTTP/1.1 : 校正HTTP设计中的结构性缺陷,明确语义,引入重要的优化措施,并删除一些不好的特性。支持长连接。是当前使用的HTTP版本。
  • HTTP/2.0 : 还未使用,重点关注的是性能的大幅优化,以及强大的服务逻辑远程执行框架

Web 的结构组件

代理:位于客户端与服务器之间的HTTP 中间实体
  • 接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求修改后之后转发)。
  • 出于安全考虑,通常会将代理作为转发所有Web流量的可信任中间节点使用。
  • 代理还可以对请求和响应进行过滤。比如:在企业中对下载的应用程序进行病毒检测。
缓存:HTTP的仓库,使常用页面的副本可以保存在离客户端更进的地方。
  • Web缓存或代理缓存可以将经过代理传送的常用文档复制保存起来。下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了。
  • 客户端从附近下载文档会比从远程Web服务器下载快的多。
网关:连接其他应用程序的特殊Web 服务器
  • 网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP 流量转换成其他的协议/网关接受请求时就好像自己是资源的源端服务器一样。客户端可能并不知道自己正与一个网关进行通信。
  • 例如:一个HTTP/FTP网关会通过HTTP请求接收对FTP URI请求,但通过FTP 协议来获取文档。得到的文档会被封装成一条HTTP报文,发送给客户端。
    在这里插入图片描述
隧道:对HTTP 通信报文进行盲转发的特殊代理
  • 隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道通常用来在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。
  • HTTP隧道的一种常用用途时通过HTTP连接承载加密的安全套接字层(SSL)流量。这个SSL流量就可以穿过只允许Web流量通过的防火墙了。HTTP/SSL隧道收到一条HTTP请求,要求建立一条到目的地址和端口的输出连接,然后在HTTP信道上通过隧道传输加密的SSL流量,这样就可以将其盲转发到目的服务器上去了。
    在这里插入图片描述
Agent代理:发起自动 HTTP 请求的半智能Web客户端
  • 用户Agent代理时代表用户发起HTTP请求的客户端程序。所有发布Web请求的应用程序都是HTTP Agent代理。一种很常用的就是Web浏览器。
  • 但是Agent 代理还有很多其他类型。比如:有些自己会在Web上闲逛的自动用户Agent 代理,可以在无人监视的情况下发布HTTP事务并获取内容。比如:“网络蜘蛛”会在Web 上闲逛,搜集信息以构建有效的Web内容档案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值