Http、Https网络请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Http、Https网络请求相关的知识,希望对你有一定的参考价值。

参考技术A HTTP协议通常承载于TCP协议之上;有时也承载于TLS或SSL协议层之上,也就是我们常说的HTTPS。

大部分网站采用HTTP协议进行交互,目前仍有大量的客户端采用HTTP协议进行交互。但是随着安全等级的提升,这些交互逐渐被HTTPS协议取代;

一次HTTP操作称为一个事务,其工作过程可分为五步:

所有流程,均由HTTP请求自动完成。如果在以上过程中的某一步出现错误,那么产生错误的信息将返回,客户端做对应处理。可以是客户端直接与服务器进行交互,也可能在请求中间增加代理。

HTTP基于传输层TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。盗用下图所示TCP连接的三次握手:

由于服务器的IP或者域名都是相对固定的,而客户端可能经常发生变化,因此HTTP协议似乎永远是客户端(Client)发起请求,服务器(Server)返回响应,Request和Response成对出现。同时,如果客户端没有主动请求,很难实现由服务端向客户端推送数据。

HTTP协议的主要特点可概括如下:
1、支持客户端/服务器模式,支持基本认证和安全认证。
2、简单快速

3、灵活

4、可以持续连接

5、无状态

URL(Uniform Resource Locator)格式, http://www.xxxxxx.com/images/icon.png ;
地址用于描述一个网络上的资源,使用协议+host+path的方式,基本格式如下:

Accept

Accept-Encoding

Accept-Language

Accept-Charset

User-Agent

Content-Type

Referer

Connection:

Host

Cookie

Content-Length

Authorization

UA-Pixels,UA-Color,UA-OS,UA-CPU

Range

HTTP/1.1协议,共定义了八种方法,用来表明Request-URI指定的资源的不同操作方式:

GET

POST

PUT

DELETE

OPTIONS

HEAD

TRACE

CONNECT

PATCH

方法名称区分大小写。当某个请求所针对的资源不支持对应的请求方法的时候,服务器返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

包含:状态行、消息报头、响应正文。
每一次请求,都会产生一个响应。一般使用状态码,粗略区分请求是否成功。如果一切正常,一个标准网页会收到一条200的状态码;错误有对应的错误码,常见的有403、404、500等。
下面列出所有错误码:

发现了一个趣味状态码图,喜欢可以点击: https://www.toutiao.com/i6628119994469204484/

Allow

Date

Expires

P3P

Set-Cookie

ETag

Last-Modified

Content-Type

IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)定义了8个大类的媒体类型,分别是:

Content-Range

Content-Length

Content-Encoding

Content-Language

Server

X-AspNet-Version

例如: X-AspNet-Version: 4.0.30319

X-Powered-By

Connection

Location

Refresh

HTTPS

SSL

TLS

对称加密

非对称加密

证书包括内容:

客户端在接受到服务端发来的SSL证书时,会对证书的真伪进行校验,以浏览器为例说明如下:

所以通过发送SSL证书的形式,既解决了公钥获取问题,又解决了黑客冒充问题,一箭双雕,HTTPS加密过程也就此形成

所以相比HTTP,HTTPS 传输更加安全

HTTPS 缺点:

综上所述,相比 HTTP 协议,HTTPS 协议增加了很多交互、加密解密等流程,保证数据传输的安全,很大程度上避免了黑客的攻击。

以上是关于Http、Https网络请求的主要内容,如果未能解决你的问题,请参考以下文章

完美解决Android 9.0以上HTTP网络请求被限制问题

网络请求

fiddler怎么不监听本机的网络请求

FlutterHTTP 网络操作 ( 引入 http 插件 | 测试网站 | Get 请求 | Post 请求 | 将响应结果转为 Dart 对象 | Future 异步调用 )

网络编程 应用层协议 -HTTP

网络编程 应用层协议 -HTTP