超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。
2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。
http是:
超文本传输协议(应用层的,基于tcpip协议的)
特点:无状态,无连接(短连接)
请求消息格式:请求行请求头部空行请求数据
请求头之间的分割是
请求头和请求体之间的分割是
请求行:GET 路径 HTTP/1.1
响应消息格式:响应行响应头部空行响应数据
响应头之间的分割是
响应头和请求体之间的分割是
响应行: HTTP/1.1 状态码 状态描述
常见的请求头都有哪些?
user-agent:用什么浏览器访问的
content-type:请求体的数据格式是什么?(服务端按照请求格式进行解析)
请求方法
请求方法:getpostputdeleteheadoptionstraceconnect
get请求和post的请求的区别
get,数据放在url上,有长度限制,一般用于获取数据
post请求,数据放在请求数据部分,没有长度限制,一般用于提交数据
状态码
状态码:
1xx请求被接受但是还在处理当中
2xx请求成功
3xx重定向(301永久重定向和302临时重定向)
4xx客户端错误(请求错误)
5xx服务器错误
2. http协议概述
基于HTTP协议搭建的服务称为web服务
默认HTTP协议对应的端口号为80
更加安全的一种类似HTTP的协议称为HTTPS协议,默认端口为443
实现通过HTTP协议能够看到页面信息,需要编写相应网站代码文件,网站代码文件称为html文件
3. http工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
-
客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
-
发送HTTP请求 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
-
服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
-
释放连接TCP连接 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
-
客户端浏览器解析HTML内容 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
4. 用户访问网站的过程
1.利用DNS协议进行域名解析
2.建立tcp协议三次握手过程
3.客户端发出访问网站相应页面请求(发出http协议请求报文)
4.系统架构部署情况
CDN缓存加速服务器
服务端发出响应访问页面的请求信息(发出http协议响应报文)
5.断开tcp协议四次挥手过程
6.浏览器将html文本显示
5. http请求方法
HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:
GET
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除Request-URI所标识的资源。
TRACE
回显服务器收到的请求,主要用于测试或诊断。
OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
注意事项:
-
方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
-
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。
6. 请求报文结构
①. 请求的方法(get方法没有请求主体内容 post方法会有请求主体信息)
②. 请求的数据信息(默认请求index.html首页文件)
③. 请求http协议版本
tcp协议分为长连接(http1.1)和短连接(http1.0)
查看请求报文与响应报文详细结构信息方法:(2种方法)
curl -v www.baidu.com --- 利用curl命令进行网站访问
-v --- 详细显示请求报文结构和响应报文结构信息
wget --debug www.baidu.com
7. HTTP协议资源类型和名词概念介绍
1.媒体资源类型
对于web服务可以处理的用户请求资源信息(请求html xml我都可以处理)
2.url
全称为Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)
3.uri
URI,全称为Uniform Resource Identifier,中文翻译为统一资源标识符
8. 静态网页资源
纯粹HTML格式的网页(可以包含图片、视频JS(前端功能实现)、CSS(样式)等)通常被称为“静态网页”
静态资源特点:
-
纯文本类程序或文件,如.html、.htm、.xml、.shtml、.js、.css等;
图片类文件或数据文档,如.jpg、.gif、.png、.bmp、.txt、.doc、.ppt等;
视频类流媒体文件,如.mp4、.swf、.avi、.wmv、.flv等。
-
每个网页的内容都是保存在网站服务器文件系统上的,
也就是说,静态网页是实实在在保存在服务器上的文件实体
-
网页内容是固定不变的,因此,容易被搜索引擎收录 (优点)
-
因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,(缺点)
当网站信息量很大时,完全依靠静态网页比较困难
-
网页的交互性较差,在程序的功能实现方面有较大的限制 (缺点)
-
网页程序在用户浏览器端解析
当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析) (优点)
1.6 动态网页资源
所谓的动态网页是与静态网页相对而言的,
也就是说,动态网页的URL后缀不是.html、.htm、.xml、.shtml、.js、.css等静态网页的常见扩展名形式,
而是.asp、.aspx、.php、.js、.do、.cgi等形式的
动态资源特点:
-
网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi等
动态资源网页中会出现? &等特殊符号信息
-
网页一般以数据库技术为基础,大大降低了网站维护的工作量。
-
采用动态网页技术的网站可以实现更多的功能,
如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等
-
动态网页并不是独立存在于服务器上的网页文件
-
动态网页资源不便于被搜索引擎收录
-
网页程序在服务架构端进行解析
伪静态网页
取长补短(伪静态资源实质是动态资源)