HTTP

1. http协议简介

超文本传输协议(英文: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 请求/响应的步骤:

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

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

  3. 服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  4. 释放连接TCP连接 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  5. 客户端浏览器解析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代理服务器)。

注意事项:

  1. 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

  2. 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(样式)等)通常被称为“静态网页”

静态资源特点

  1. 纯文本类程序或文件,如.html、.htm、.xml、.shtml、.js、.css等;

图片类文件或数据文档,如.jpg、.gif、.png、.bmp、.txt、.doc、.ppt等;

视频类流媒体文件,如.mp4、.swf、.avi、.wmv、.flv等。

  1. 每个网页的内容都是保存在网站服务器文件系统上的,

也就是说,静态网页是实实在在保存在服务器上的文件实体

  1. 网页内容是固定不变的,因此,容易被搜索引擎收录 (优点)

  2. 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,(缺点)

当网站信息量很大时,完全依靠静态网页比较困难

  1. 网页的交互性较差,在程序的功能实现方面有较大的限制 (缺点)

  2. 网页程序在用户浏览器端解析

当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析) (优点)

 

1.6 动态网页资源

所谓的动态网页是与静态网页相对而言的,

也就是说,动态网页的URL后缀不是.html、.htm、.xml、.shtml、.js、.css等静态网页的常见扩展名形式,

而是.asp、.aspx、.php、.js、.do、.cgi等形式的

 

动态资源特点:

  1. 网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi等

动态资源网页中会出现? &等特殊符号信息

  1. 网页一般以数据库技术为基础,大大降低了网站维护的工作量。

  2. 采用动态网页技术的网站可以实现更多的功能,

如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等

  1. 动态网页并不是独立存在于服务器上的网页文件

  2. 动态网页资源不便于被搜索引擎收录

  3. 网页程序在服务架构端进行解析

 

伪静态网页

取长补短(伪静态资源实质是动态资源)

 

原文地址:https://www.cnblogs.com/zdqc/p/9435749.html