HTTP基本知识

HTTP:超文本传输协议

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据 的「约定和规范」。

注意:是两点之间,所以说明HTTP可以在客户端和客户端之间传输

HTTP常见状态码

1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。

2xx

2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。

「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都 会有 body 数据。

「204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。 「206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源 的全部,而是其中的一部分,也是服务器处理成功的状态。

3xx

3xx 类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源, 也就是重定向。

「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次 访问。

「302 Found」表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。 301 和 302 都会在响应头里使用字段 Location ,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

「304 Not Modified」不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定 向,用于缓存控制。

4xx

4xx 类状态码表示客户端发送的报文有误,服务器无法处理,也就是错误码的含义。

「400 Bad Request」表示客户端请求的报文有错误,但只是个笼统的错误。

「403 Forbidden」表示服务器禁止访问资源,并不是客户端的请求出错。

「404 Not Found」表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

5xx

5xx 类状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误 码。

「500 Internal Server Error」与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并 不知道。

「501 Not Implemented」表示客户端请求的功能还不支持,类似"即将开业,敬请期待"的意思。「502 Bad Gateway」通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问 后端服务器发生了错误。

「503 Service Unavailable」表示服务器当前很忙,暂时无法响应服务器,类似"网络服务正忙,请稍 后重试"的意思。

常见字段

host字段

host字段是HTTP请求头的一部分,用于指定请求的目标服务器域名或IP地址。它在HTTP/1.1协议中为必选字段,主要用于虚拟主机环境下区分同一IP地址上的多个域名。

简而言之,就是可以通过host字段访问同一台服务器的上面的不同网址

Content-Length 字段

服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。

Connection 字段

Connection 字段最常用于客户端要求服务器使用 TCP 持久连接,以便其他请求复用。

Content-Type 字段

Content-Type 字段用于服务器回应时,告诉客户端,本次数据是什么格式。

GET与POST

Get 方法的含义是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。

而 POST 方法则是相反操作,它向 URI 指定的资源提交数据,数据就放在报文的 body 里。

GET 和 POST 方法都是安全和幂等的吗?

在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。

所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

那么很明显 GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据 都是安全的,且每次的结果都是相同的。 POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据 就会创建多个资源,所以不是幂等的

HTTP特点

1.无状态通过

因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减 轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。

无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。

cookie解决问题

2.明文传输

明文意味着在传输过程中的信息,是可方便阅读的,通过浏览器的 F12 控制台或 Wireshark 抓包都可 以直接肉眼查看,为我们调试工作带了极大的便利性。 但是这正是这样,HTTP 的所有信息都暴露在了光天化日下,相当于信息裸奔。在传输的漫长的过程 中,信息的内容都毫无隐私可言,很容易就能被窃取.

3. 不安全

HTTP 比较严重的缺点就是不安全: 通信使用明文(不加密),内容可能会被窃听。比如,账号信息容易泄漏,那你号没了。 不验证通信方的身份,因此有可能遭遇伪装。比如,访问假的淘宝、拼多多,那你钱没了。 无法证明报文的完整性,所以有可能已遭篡改。比如,网页上植入垃圾广告,视觉污染,眼没 了。 HTTP 的安全问题,可以用 HTTPS 的方式解决,也就是通过引入 SSL/TLS 层,使得在安全上达到了极 致。

HTTP与HTTPS

区别

  1. HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全 的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

  2. HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是用于在网络通信中提供加密和身份验证的协议。TLS 是 SSL 的后续版本,目前广泛使用的是 TLS 1.2 和 TLS 1.3。它们的主要功能包括:

  • 加密数据传输,防止窃听和篡改。
  • 验证服务器(和客户端)身份,防止中间人攻击。
  1. HTTP 的端口号是 80,HTTPS 的端口号是 443。

  2. HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

HTTPS解决了HTTP的因为明文传输带来的风险

混合加密的方式实现信息的机密性,解决了窃听的风险。

摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完 整性,解决了篡改的风险。

将服务器公钥放入到数字证书中,解决了冒充的风险。

相关推荐
Blurpath2 小时前
什么是 ISP 代理?双 ISP 代理又是什么?一文讲清原理与应用场景
服务器·网络·ip代理·静态代理·住宅代理
_F_y2 小时前
网络基础概念
网络
qq_254617773 小时前
Linux创建VLAN虚拟网卡的命令
linux·网络协议
专业机床数据采集3 小时前
西门子数控数采集变量与说明对照表
大数据·网络·cnc数据采集
ACP广源盛139246256733 小时前
GSV6701A@ACP#6701A产品规格详解及产品应用分享
网络·嵌入式硬件·音视频
奥利文儿3 小时前
【虚拟机】win11+VMware+ubuntu24 网络配置篇
网络·数据挖掘·数据分析
老蒋新思维3 小时前
创客匠人:当知识IP遇上系统化AI,变现效率如何实现阶跃式突破?
大数据·网络·人工智能·网络协议·tcp/ip·重构·创客匠人
天远云服3 小时前
Go 语言实战:手撸 AES-128-CBC 加密,对接天远金融风控 API
大数据·服务器·网络·golang
一执念3 小时前
【路由器-AP、DHCP、ARP、广播帧、交换机、信道】-初级知识串联(一)
网络·智能路由器