HTTP&HTTPS协议

发布时间 2023-05-29 20:22:27作者: i苏沐辰

HTTP协议

1、什么是HTTP

超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。
HTTP(HyperText Transter Protocol,超文本传输协议 ),是一个基于请求与响应,无状态的,应用层的协议常基干TCP/P协议传输数据,互联网上应用最为广泛的一种网络协议所有的WWW文件都必须遵守这个标准

设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法

2、HTTP发展历史

3、HTTP工作流程

客户端通过TCP三次握手与服务器建立连接

TCP建立连接成功后,向服务器发送HTTP请求

服务器收到HTTP请求后,向客户端发送http响应

客户端通过TCP四次断开,与服务器断开TCP连接

什么是B/S、C/S架构

C/S(Client/Server)客户机和服务器结构

B/S(Browser/Server) 浏览器和服务器结构

在HTTP 0.9和1.0中,TCP连线在每一次请求/回应对之后关闭。

在HTTP 1.1中,引入了保持连线的机制,一个连按可以重复在多个请求/回应使用。

持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新运行TCP握手程序

4、统一资源定位符 (URL)

URL( 统一资源定位符):我们常说的网址,包含了用于查找资源的足够的信息,而一个完整的URL包含下面几部分

协议方案名:http,ftp,file,mailto,telnet,ldap.
登录信息:如果网页需要认证时,需要填写该参数,所以是可选项
服务器地址:可以使iP地址形式,也可以是能被DNS解析为IP地址的域名形式
端口号:指定服务器连接的端口号·也选填.不填则指向本协议的默认端口号
带层次的文件路径:获取资源在服务器中的具体地址 ;
查询字符串·针对已指定路径的资源,可使用查询字符串来获取想要的参数,此项也是可洗项
片段标识符·信息片段字符串,用来标记已获取资源中的子资源(在文档中的某个位置)。

5、统一资源标志符 (URI)

URI ( Universal Resource ldentifier 统一资源标志符),用来标识抽象或物理资源的一个紧凑字符串。

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

HTTP使用统一资源标识符(Uniform Resource ldentifiers,URI) 来传输数据和建立连接

URI和URL的区别: URL是URI的一个子集

URN = Universal Resource ame 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。

6、下面哪些是URL

ftp://ftp.heetian.com/rfc/rfc1808.txthttp://www.heetian.com/rfc/rfc2396.txt
ldap://[2001:db8:7)/c=GB?objectClass?one
mailto:John.Doe@heetian.com
news:comp.infosystems.www.heetian.com
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasisnames:specification:docbook:dtd:xml:4.1.2

7、客户端请求消息

HTTP请求报文 : web客户端向服务器发送的请求

HTTP请求由四个部分组成
请求行

请求行 Method Request-URI HTTP-Version CRLF
Method: 表示请求方法
Request-URI:是一个统一资源标识符
HTTP-Version:表示请求的HTTP协议版本
CRLF: 表示回车和换行

	请求方法
​	GET					请求获取Request-URI所标识的资源
​	POsT				  在Request-URI所标识的资源后附加新的数据	
​	HEAD				 请求获取由Request-URI所标识的资源的响应消息报头
​	PUT					请求服务器存储一个资源,并用Request-URI作为其标识
​	DELETE			  请求服务器删除Request-URI所标识的资源	
​	TRACE				请求服务器回送收到的请求信息,主要用于测试或诊断
​	OPTIONS		   请求查询服务器的性能,或者查询与资源相关的选项和需求		
​	CONNECT		 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器	
​	PATCH				用于将局部修改应用到资源。( 由 RFC 5789 指定的方法)	
请求头部

请求头部字段:( Request Header Fields )
Header : Header_Value CRLF
允许客户端传递关于自身的信息和希望的响应形式
在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的

空行

空行
表示请求头结束,请求正文(请求体)开始

请求数据

GET方法:提交数据时,数据参数会做为URL的一部分放在文件路径后面发送给服务器,被称为查询字符串
http://www.hetianlab.com?username=12345%40gq.com&password=2f7402f....a592b&validateCode=&rtnJson=true

POST方法: 发送的数据在请求体中
username=12345%40qg.com&password=2f7402f....a592b&validateCode=&rtnJson=true


8、服务器响应消息

HTTP响应报文: 在接收和解释请求消息后服务器返回一个HTTP响应消息


HTTP响应也由四个部分组成,分别是
状态行

状态行 HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version: 表示服务器HTTP协议的版本

Status-Code: 表示服务器发回的响应状态代码

Reason-Phrase: 表示状态代码的文本描述。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
1xx:指示信息--请求已被服务器接收,继续处理2xx: 成功--请求已成功被服务器接收、理解、并接受3xx:重定向--需要后续操作才能完成这一请求
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务端错误--服务器在处理某个还确请求时发生错误

常见状态码

200 OK		//客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401	Unauthorized //请求未经授权这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden//服务器收到请求,但是拒绝提供服务
404 Not Found//请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
消息报头

响应头部字段( Response Header Fields )源进行下一步访问的信息。
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资

空行

空行
表示请求头结束,请求正文( 请求体)开始

响应正文

响应数据

服务器返回的资源内容

("result"."success","message":null)

9、http请求方法理解---GET

GET:获取/查询资源

不包含请求主体


POST: 在Request-URI所标识的资源后附加新的数据

用于向指定资源发送数据,指定的资源会对数据进行处理,然后将处理结果返回给客户端,一般用于表单提交文件上传


POST提交数据的几种Content-Type

application/x-www-form-urlencoded: 最常见的POST提交数据方式,浏览器支持的原生form表单
multipart/form-data: 这称方式一般用来上传文件。
application/ison: 在响应头中很常见,在请求头中用来告诉服务端消息主体是序列化后的json字符串。

boundary

首先生成一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。
然后Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundarv 开始,紧接着内容描述信息然后是回车,最后是字段具体内容(文本或二进制)
如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束

10、HTTP请求方法理解-HEAD

HEAD: 请求获取由Request-URI所标识的资源的响应消息报头首部,不会返回报文主体

HTTP请求方法理解-OPTIONS

OPTIONS: 查询资源支持的方法

HTTP请求方法理解-put

PUT方法自身不带验证机制,任何人都可以执行,存在安全问题,所以网站一般不会使用PUT方法。

PUT:请求服务器存储一个资源,并用Request-URI作为其标识

服务器会将请求主体的内容保存到URL指定的资源位置,包含两种情况

1.URL指定的资源不存在,服务器会新建一个文件,将请求主体中的内容保存到新建的文件里,响应码为201.

2.URL指定的资源存在,服务器会重置文件内容,用请求主体中的内容覆盖原文件内容,响应码为200或204

HTTP请求方法理解-DELETE

DELETE: 请求服务器删除Request-URI所标识的资源


HTTP请求方法理解-trace

TRACE:路径追踪,请求服务器回送收到的请求信息,主要用于测试或诊断发送的请求是否在客户端与服务端之间传送时被网关、防火墙、代理更改

HTTPS协议

1、HTTPS简介

全称: Hyper Text Transfer Protocol over Secure Socket Layer,就是HTTP的安全版,再通俗点就是身披SSL外壳的HTTP。

HTTPS = HTTPNSSL/TLS

HTTPS是一种通过计算机网络进行安全通信的传输协议,经HTTP进行通信,利用SSL/TLS建立全信道,加密数据包·HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性

2、HTTPS特点

内容加密:采用混合加密技术,中间者无法直接查看明文内容

验证身份: 通过证书认证客户端访问的是自己的服务器

保护数据完整性:防止传输的内容被中间人冒充或者篡改

3、HTTP与HTTPS比较