HTTP详细介绍

  • 来源:网络
  • 更新日期:2020-07-13

摘要:系统运维 一.概述 HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接,整个工作流程基本是由客户端(cli

系统运维 一.概述

HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接,整个工作流程基本是由客户端(client)向服务端(server)发送一个http请求,向server端请求需要的资源,到server端收到客户端的请求后,根据请求做出相应的动作访问服务器资源,然后通过HTTP相应将结果返回给client端。

HTTP工作流程 浏览器向 dns 服务器请求解析该 URL 中的域名所对应的 IP 地址; 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器; 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器; 释放TCP连接; 浏览器显示html文本; http版本
0.9版本:仅支持html页面(已被淘汰);
1.0版本:
      (1)引入MIME(多用途互联网邮件扩展)机制,引入这个机制之后就可以发送多媒体信息;
            (2)引入keep-alive机制,支持持久链接的功能(但这个keep-alive原理是在首部添加了某个字段而形成,并非原生就支持此功能);
            (3)引入支持缓存页面功能;
1.1版本:1.0版本的升级,支持更多的请求连接方式、优化可持久链接、优化了页面缓存;
2.0版本:提供了http语义优化的传输,增加了一个spdy技术。Spdy技术:google引入的一个技术,能够加速http数据交互,尤其是使用了ssl加速机制;被人们普遍称为https协议;
常见的网页页面类型
静态页面:
常见的后缀名是:
文本:html、htm、txt、css、doc;
图片:gif、jpg、png;
视频:mp4、flv;

请求过程

socket是在应用层和传输层之间的一个抽象层,socket本质是编程接口(API),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。TCP/IP只是一个协议栈,必须要具体实现,同时还要提供对外的操作接口(API),这就是Socket接口。通过Socket,我们才能使用TCP/IP协议。

①Web客户端向内核注册socket;
②客户端通过浏览器,向Web服务器发送数据请求;
③Web服务端收到客户端的请求信息;
④如果客户端请求的资源在服务器本地,http服务会向系统内核申请调用;
⑤内核调用本地磁盘里的数据,并经数据发送给服务器;
⑥http将用户请求的资源通过响应报文,最终响应客户端;

特点:由开发人员预先编写好,存放在当前文件系统中,响应速度快、页面维护比较麻烦,数据交互性差、容易被搜索引擎收录

动态页面:

常见的后缀名有:php、jsp、asp、net

请求过程:

与静态页面不同的就是,如果用户请求的是动态内容,那么此时http服务器就会调用后端的解释器,由后端的解释器在磁盘中获取数据,通过解释器运行生成html格式的文件。然后构建成响应报文,最终响应客户端的请求。

特点:web服务器自身不支持动态页面的处理,需要有专门的解释器来进行完成,页面数据多变,页面维护比较简单,响应速度慢、数据有交互性,页面访问时包含特殊符号?、%、&(特殊符号),不能被搜索引擎收录;

伪静态页面:将动态页面伪装成静态页面,被搜索引擎收录,消耗硬件资源;

http协议的报文
request Message(请求报文):客户端→服务器端
由客户端向服务器端发出请求,不同的网站用于请求不同的资源(html文档)

请求报文格式:

请求行:用来标识客户端请求的资源时,使用的请求方法、请求资源、请求的协议是什么,它们直接使用“空格”进行分隔;

请求首部:作用是通过客户端请求的相关内容告知服务器端(首部可以不止一个)

空白行:请求首部之后会有一个空白行,通过发送回车字符和换行字符,用于通知服务端以下内容将不会再出现请求首部的信息;

请求实体:请求的页面的内容具体是什么

Response Message(响应报文):服务器端→客户端
服务器响应客户端的请求;

响应报文:

起始行:响应时采用的http协议的版本、响应的状态码、状态码的简略信息;
响应首部:类似于请求报文,起始行后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者用冒号进行分隔,可以包含一个或多个。
空白行:最后一个响应首部信息之后就是一个空行,通过发送回车符和换行符,通知客户端空行下无首部信息;
响应实体:真正访问页面包含的内容;

HTTP请求方法
在HTTP通信过程中,每个HTTP请求报文中都会包含一个HTTP请求方法,用于告知客户端向服务器端请求执行某些具体的操作。

常见的HTTP请求方式:GET、POST、HEAD

HTTP状态码



二.HTTP工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据

HTTP 请求/响应的步骤:

客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com

2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

三.URL.URI.URN
URI

URI一般由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。

URL

采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等

URN,uniform resource name,统一资源命名,是通过名字来标识资源,

URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
http事务、

包含一个HTTP请求,和对应请求的响应就叫做一个http事务,也可以理解http事务就是一个完整的HTTP请求和HTTP响应的过程。

HTTP协议默认情况下每个事务都会打开和关闭一个新的连接,所以相当耗费时间和带宽,由于TCP慢启动特性,所以每条新的连接的性能本身就会有所降低,所以可打开的并行连接的数量上限是有限的。所以使用持久连接这种模式比默认情况下不使用持久连接的方式会好一点,他的好处表现在其请求和tcp断开的过程所消耗的时间会被减少

新网虚拟主机