HTTP协议

1、什么是HTTP

超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。

HTTP(HyperText Transter Protocol,超文本传输协议 ),是一个基于请求与响应,无状态的,应用层的协议常基干TCP/P协议传输数据,互联网上应用最为广泛的一种网络协议所有的WWW文件都必须遵守这个标准

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

2、HTTP发展历史

3、HTTP工作流程

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

1、第一次握手(SYN):客户端发送一个同步序列号(SYN)段给服务器。该段包含一个随机生成的初始序列号,用来标识数据包的顺序。

2、第二次握手(SYN-ACK):服务器收到客户端的SYN段后,会发送一个带有确认序列号(ACK)和同步序列号(SYN)的段给客户端。ACK字段的值设为客户端的初始序列号加1,表示服务器已经接收到了客户端的请求,并准备好建立连接。

3、第三次握手(ACK):客户端收到服务器的SYN-ACK段后,会发送一个带有确认序列号(ACK)的段给服务器。客户端的ACK字段的值设为服务器的初始序列号加1,表示客户端已经接收到了服务器的确认,连接建立成功。

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

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

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

1、第一次挥手(FIN):当客户端希望关闭连接时,发送一个FIN(结束)段给服务器,表示客户端已经没有数据要发送了,但仍可以接收数据。

2、第二次挥手(ACK):服务器收到客户端的FIN段后,会发送一个确认序列号(ACK)的段给客户端,表示服务器已经收到了客户端的关闭请求。

3、第三次挥手(FIN):当服务器确定已经没有数据要发送时,发送一个FIN段给客户端,表示服务器也没有数据要发送了。

4、第四次挥手(ACK):客户端收到服务器的FIN段后,发送一个确认序列号(ACK)的段给服务器,表示客户端已经收到了服务器的关闭请求,然后等待一段时间(等待可能延迟的最长时间),确保服务器收到ACK后才关闭连接。

什么是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比较

HTTP&HTTPS协议的更多相关文章

  1. 网站使用https协议

    了解https HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层.HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443. SSL ...

  2. 服务器开启https协议

    开启Tomcat https服务 发布企业级应用的时候遇到一个问题,就是IOS7.1之后app的下载地址URL必须是https开头的协议,所以服务器必须支持https协议. 实验环境:Mac OSX ...

  3. 【转】Tomcat启用HTTPS协议配置过程

    转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/530 ...

  4. IIS同时实现网站部分使用https协议访问另一部分http访问

    一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同 ...

  5. HTTPS 协议和原理

    1 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身 ...

  6. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  7. HTTPS协议说明

    HTTPS协议说明 基本现在最安全的网络连接就是使用https了,http协议有几个不安全的地方: 传输信息是明文的. -- http的传输信息是明文的,基本网络劫持下就束手就擒了. 不能防止篡改. ...

  8. 下载https协议需要的cer证书

    一:https简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

  9. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理

    转自:http://op.baidu.com/2015/04/https-s01a01/ 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS.本文重 ...

  10. https协议了解,以及相关协议的解析

    HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...

随机推荐

  1. 基于Switching的 恒虚警率检测算法

    转发和使用请注明来源,以下为本人精心整理,还请尊重本人劳动成果与产权!由于本人现有知识和能力有限,如存在错误之处请指正!下面为正文内容: 1.S-CFAR检测算法(Switching,开关CFAR) ...

  2. Linux云计算运维工程师day28shell编程基础

    一. 1.全局变量.环境变量 Export OLDOBY="I am a oldboy."  Echo OLDOBY OLDOBY="I am a oldboy.&quo ...

  3. Centos 安装 python3.x 为默认

    CentOS 7 中默认安装了 Python,但是版本是2.x的,由于2020年python2.x将停止更新,因此需要将版本升级至3.x.但由于python2.x是系统集成的,很多命令都是要基于pyt ...

  4. 迁移学习(MEnsA)《MEnsA: Mix-up Ensemble Average for Unsupervised Multi Target Domain Adaptation on 3D Point Clouds》

    论文信息 论文标题:MEnsA: Mix-up Ensemble Average for Unsupervised Multi Target Domain Adaptation on 3D Point ...

  5. Sitecore10 Demo演示环境Azure一键部署(Step By Step Guide to installing Sitecore10 in Azure Paas)

    本文演示Sitecore XP Single(XP0)在Azure上的一键部署,即"30分钟生成Sitecore演示环境"的一环. 关于XP(即Sitecore Experienc ...

  6. Godot 4.0 文件读取(C#)

    搞半天才弄明白Godot文件操作. Godot的文档总是试图让我使用自定义Resource来支持文件操作,但是我只需要读取纯文本. 读取纯文本 读取纯文本的方式如下: //Godot.FileAcce ...

  7. 自定义alert、confirm、prompt的vue组件

    Prompt.vue组件 说明: 通过props定制定制的Prompt,可选值 mode 默认值:prompt, 其他模式:confirm.message(简单的提示,可设置提示显示时间,类似aler ...

  8. Python获取jsonp数据

    使用python爬取数据时,有时候会遇到jsonp的数据格式,由于不是json的,所以不能直接使用json.loads()方法来解析,需要先将其转换为json格式,再进行解析.在前面讲了jsonp的原 ...

  9. save() prohibited to prevent data loss due to unsaved related object 'item_n

    问题描述: save() prohibited to prevent data loss due to unsaved related object 'item_no 原因分析: 原来的目的是保存数据 ...

  10. java.sql.SQLException: The connection property 'useSSL' only accepts values of the form: 'true', 'false', 'yes' or 'no'. The value 'true;' is not in this set.

    错误说明: 数据库连接属性"useSSL"的值只能为'true','false','yes','no',多余的都不行 因此我们要到数据库的连接属性(properties)里找答案 ...