http概述

1.什么是http?

HTPP(Hypertext Transfer Protoclo, 超文本传输协议)是在万维网进行通信时所使用的协议方案。http有很多应用,但最著名的是web浏览器与微博服务器之间的双工通信。

2.web客户端和服务器

web内容存储于服务器当中,web服务器使用的是http协议,因此也被称为http服务器,http客户端向服务器发送http请求,服务器在http响应中返回所请求的数据。最常见的web客户端就是web浏览器。

3.媒体类型

http会给每一种要通过web传输的对象打上MIME类型的数据格式标签,用来描述并标记多媒体内容。
常见的MIME类型有数百个,以下列举其中几个:

  • HTML格式的文本文档由text/html类型来标记
  • 普通的ASCII文本文档由text/plain类型来标记
  • JPEG版本的图片为image/jpeg类型
  • GIF版本的图片为image/gif类型

4.什么是URI?

服务器资源名被称为统一资源标示符(Uniform Resource Identifier,URI),URI就像互联网上的邮政地址一样,在世界范围内唯一标识并定位信息 资源。

5.什么是URL?

统一资源定位符(URL)是资源标识符最常见的形式,URI的定义范围大于URL,URL描述了一台特定服务器上的某资源的特定位置。现在几乎所有的URI都是URL。
URL一般分为3个部分:

  • 第一部分通常是http协议(http://)
    *第二部分给出了服务器网址(如:www.baidu.com)
    *其余部分指定了web服务器上的某个资源(如:/user/id=123)

6.什么是URN?

URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前资源的所在地无关,也就是说资源可以随意移动。我的理解是:用找人来比喻的话,URL找人就像是通过你的居住地址来找你,一旦你搬家了,这个地址就找不到你了,而URN是通过身份证来找你,不管你搬到了哪里,身份证没变都可以找到你。
目前URN还处于实验阶段,未大规模使用。

7.事务

一个http事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。

8.方法

http支持几种不同的请求命令,这些命令被称为http方法,每条请求报文都包含一个方法。以下是常见的五种http方法:

  • GET : 从服务器向客户端发送资源(客户端单纯的接收资源)
    *PUT:将客户端的数据存储到一个命名的服务器资源中去,这个方法的安全性不高很容易遭受到 恶意攻击,所以使用的并不多。
  • DELETE: 从服务器删除命名资源(用的也不多)
    *POST: 将客户端数据发送到服务器
    *HEAD:仅发送命名资源响应中的HTTP首部,与get方法类似,但不含呈现数据,而仅仅是http头部信息。常用到的业务场景:判断某个资源是否存在,虽然也可以用get,但是用head方法意义更加明确。

9.状态码

每条http响应报文返回时都会携带一个状态码。不同的状态码有不同的含义。常见的状态码有:

  • 200 正确返回
  • 302 重定向
  • 404 没找到资源(如国外的某些网站一直404)
    *500 服务器错误。

10.报文

http报文分为请求报文和响应报文,两者的报文都是纯文本,不是二进制代码,方便人们进行读写。
http报文包括以下三个部分:


image.png

*起始行
报文的第一行就是起始行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么情况。
*首部字段
起始行后面有零个或多个首部字段,每个首部字段都包含一个名字和一个值便于解析。
*主体
主体即需要发送的数据内容。

11.什么是tcp/ip?有什么特点?

http协议是个应用层协议,位于tcp的上层,tcp属于传输层,因特网自身就是基于tcp/ip连接的。网络协议分层有将其分为五层也有将其分为七层的。


image.png
image.png

tcp的特点:

  • 无差错的数据传输(高可靠性)
    *按序传输(按照发送顺序到达)
    *未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去。)

基本的浏览器连接处理:

image.png

步骤如下:
1.浏览器从URL中解析出服务器的主机名(dns解析);
2.浏览器将服务器的主机名转换成服务器ip地址;
3.浏览器将端口号(如果有)从URL中解析出来;
4.浏览器建立一条与web服务器的tcp连接(tcp第一次握手);
5.浏览器像服务器发送一条http请求报文(tcp第二次握手);
6.服务器向浏览器回送一条http响应报文(tcp第三次握手);
7.关闭连接,浏览器显示文档;

12.http协议版本

*http/0.9
http最早的版本,诞生与1991年,只支持get方法,很快被http/1.0取代。
*http/1.0
http/1.0添加了版本号,各种http的首部,一些额外的方法,以及对多媒体对象的处理。
*http/10+
为了满足万维网的各种需要,很多流行的web客户端和服务器都在飞快的向http中添加各种特性,包括持久的keep-alive连接,虚拟主机的支持,代理连接等,并成为非官方的事实标准,这种扩展版本通常被称为http/1.0+
*http/1.1
http/1.1重点关注校正http设计中的结构性缺陷,明确语义,优化性能并删除一些不好的特性。该版本是当前正在使用的版本。
*HTTP-NG(又名http/2.0)
该协议的主要特点有:
*多路复用
使用一个tcp连接,并发处理多个请求
*头部压缩
http/1.1不支持header数据压缩,http2.0使用HPACK算法对header的数据进行压缩。
*服务器推送
当我们对支持http2.0的服务器 请求数据的时候,服务器会
顺便把客户端需要的资源一起推送到服务器,适合静态资源加载,可节约带宽。

13.web结构组件

  • 代理
    位于客户端和服务器之间的http中间实体。


    image.png

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

*网关
一种特殊的服务器,通常用于将http流量转换成其他的协议。


image.png

*隧道
隧道是建立起来之后,就会在两条连接之间对原始数据进行盲转发的http应用程序,一种常见用途是通过http连接承载加密的安全套接字层(SSL)流量(就是https)

image.png

*Agent代理
用户Agent代理是代表用户发起http请求的客户端程序,如:web浏览器。

你可能感兴趣的:(http概述)