首页 > 其他分享 >HTTP&HTTPS协议

HTTP&HTTPS协议

时间:2023-05-29 20:23:35浏览次数:48  
标签:协议 HTTP 请求 Request URI HTTPS 服务器 资源

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:[email protected]
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,请求,Request,URI,HTTPS,服务器,资源
From: https://www.cnblogs.com/2210z/p/17441443.html

相关文章

  • netcore-http
    https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0 //Addservicestothecontainer.builder.Services.AddHttpClient();publicclassBasicModel:PageModel{privatereadonlyIHttpClientFactory_httpClient......
  • python使用hTTP方法
    Python中可以使用requests库来发送HTTP请求,其中包括GET、POST、PUT、DELETE等方法。下面是一个使用requests库发送HTTP请求的示例:importrequests#发送GET请求response=requests.get('ExampleDomain')#发送POST请求data={'key1':'value1','key2':'val......
  • HTTPS基础知识
    HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL(SecureSocketLayer)和TLS(TransportLayerSecurity)协议代替而已。通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。SSL是独立于HTTP的协......
  • HTTP HyperText Transfer Protocol 超文本传输协议
    http是在TCP上层的应用协议,基础协议到TCP/UDP就结束了,剩下的是应用协议。应用协议都是在TCP/UDPpayload中,根据需求制定的标准。请求请求包括:请求行(requestline)、请求头部(header)、空行和请求数据四个部分组成。请求有多种方法,比如我们常见的GET,POST等。响应响应包括:状态......
  • sockjs.js:1603 GET http://localhost/sockjs-node/info?t=1685340190468 net::ER
    vue项目报错不影响运行,但控制台看到这报错,属实不舒服 解决方法:进入\node_modules\sockjs-client\dist\sockjs.js注释1603行   刷新页面,没报错了 ......
  • 06、HSMS协议介绍
    本章的内容主要参考了SECS半导体设备通讯-2HSMS通信标准,外加上自己看的一些其他的文档。也加上了一些自己的理解,特此记录。若有侵权,请联系删除,谢谢。再次特别感谢SECS半导体设备通讯-2HSMS通信标准的作者。1、HSMS通信标准概述HSMS定义了使用TCP/IP作为物理传输媒......
  • Meta http-equiv属性详解
    http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。 引用meat标签的http-equiv属性语法格式是:<metahttp-equiv="参数"content="参数......
  • 【lwip】14-TCP协议分析之TCP协议之可靠传输的实现(TCP干货)
    lwip_14_TCP协议之可靠传输的实现前言‍前面章节太长了,不得不分开。这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html‍两个时钟处理函数lwip的时钟机制可以翻看前面章节。lw......
  • MQTT协议简介
    ##一、MQTT协议简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。![img.png](img.png)MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提......
  • Tomcat处理http请求之源码分析
    本文将从请求获取与包装处理、请求传递给Container、Container处理请求流程,这3部分来讲述一次http穿梭之旅。1请求包装处理tomcat组件Connector在启动的时候会监听端口。以JIoEndpoint为例,在其Acceptor类中:protectedclassAcceptorextendsAbstractEndpoint.Acceptor{......