http 的特点
灵活:HTTP 允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
无连接是表示每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
PS:无连接-----举例A给B电话,一次通话只说 一件事。好处:没有一直占着资源通道。连接一次就关闭通道,有新的连接再建立通道。缺点:请求频繁的话,建立和释放 TCP 连接的开销就很大。
HTTP1.1 版本后支持可持续连接。通过这种连接,就有可能在建立一个 TCP 连接后,发送请求并得到回应,然后发送更多的请求并得到更多的回应.通过把一次建立和释放 TCP 连接的开销分摊到多个请求上,则对于每个请求而言,由于 TCP 而造成的相对开销被大大地降低了。而且, 还可以发送流水线请求,也就是说在发送请求 1 之后的回应到来之前就可以发送请求 2.也可以认为,一次连接发送多个请求,由客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端。
PS:可持续连接-----举例A给B电话,一次通话说n件事。
无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,它只是规定了协议而已。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送 的数据量增大。另一方面,在服务器不需要先前信息时,它的应答就较快。
PS:A让B带一份饭,请求发送完就结束了,不会对这个处理做记忆。下次A让B再带一份水,而不是说:给我带一份饭再加一瓶水,如果每次都需要处理前面的信息,那么信息重传会导致传送 的数据量增大,不需要处理之前的逻辑响应肯定也会更快。
上述来自马士兵sevlet视频。
http 和 https 的区别
HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)是用于在客户端和服务器之间传输数据的两种不同协议。它们之间的主要区别在于安全性和数据传输的加密方式:
-
安全性:
- HTTP:HTTP是一种不加密的协议,数据在传输过程中是明文的,容易受到窃听和中间人攻击的威胁。这意味着攻击者可以截取HTTP请求和响应,并查看其中的敏感信息,如登录凭据或个人数据。
- HTTPS:HTTPS通过使用SSL/TLS(安全套接层/传输层安全)协议来加密数据传输,使数据在传输过程中变得加密和安全。这使得中间人攻击更加困难,因为攻击者不能轻易解密HTTPS通信中的数据。
-
URL前缀:
- HTTP:HTTP的URL以 “http://” 开头,例如:http://www.example.com。
- HTTPS:HTTPS的URL以 “https://” 开头,例如:https://www.example.com。这个前缀表明网站正在使用安全的加密连接。
-
默认端口:
- HTTP:默认端口是80。
- HTTPS:默认端口是443。这是因为HTTPS使用加密,需要不同的端口来处理加密通信。
-
证书要求:
- HTTP:不需要SSL/TLS证书,因为HTTP是不加密的。
- HTTPS:网站需要获得SSL/TLS证书,这个证书由可信的证书颁发机构(CA)签发,用于验证网站的身份。证书会显示在浏览器地址栏中,以表明连接是安全的。
-
性能开销:
- HTTP:由于不涉及加密/解密操作,通常比HTTPS略快。
- HTTPS:加密和解密数据会引入一些性能开销,但现代计算机和网络已经使这种开销相对较小,通常不会明显影响性能。
安全性详述:
HTTP明文传输,数据没有加密,安全性较差,HTTPS(HTTP + SSL),数据传输过程是加密的,安全性要好一些。他们都是应用层协议。
使用HTTPS协议要经过SSL认证来申请SSL证书,认证拿到证书的过程一般都是收费的,所以成本略高。
HTTP的速度要比HTTPS要更快一些,就是因为HTTP和服务器建立连接要通过TCP的三次握手,客户端和服务端只需要交换3个包,HTTPS在进行连接的时候除了要TCP的3个包,还要加上SSL握手的9个包,一共12个包。
默认端口不同,http默认80端口,https默认443接口。
HTTPS认证是怎么认证的?
客户端和服务端进行数据传输之前,先通过证书对双方进行身份验证:
-
客户端在发送SSL握手信息给服务端要求连接
-
服务端会将证书发送给客户端
-
客户端检查服务端证书,确认这个这个证书的签发机构是否值得信任,如果检查有问题,客户端会将是否继续通讯的决定权交给客户端,如果检查无误,或者用户选择继续,就表现客户端认可服务端身份。
-
服务端要求客户端发送证书,并且检查是否通过验证,失败就关闭连接,成功的话就得到客户端的公钥
至此,服务端及客户端双方身份认证接受,双方都确保彼此身份可靠。

HTTPS一定安全吗?
不一定,HTTPS往往无法阻止中间人攻击。
A和B进行数据交互的时候,可以采用加密的方式,加密分为对称和不对称两种。
对称加密只要被破解出加密方式,就很容易泄露信息。
A生成一个秘钥ka,B生成一个秘钥kb;ka用于解密A加密的数据,kb用于解密B加密的数据。
A将ka传递给B,B将kb传递A,这样的话,A再给B传递信息的时候,B接受到之后用ka来进行解密。
HTTPS进行密文传输的时候采用的不对称加密的方式。但是如果有中间人拦截请求后模仿A和B来与B和A进行通信的时候也会泄露数据。
https 加密后,怎么去抓包呢?
常规下请求后抓到的包内容是加密状态,无法直接查看。
但是,我们可以通过抓包工具来抓包。它的原理其实是模拟一个中间人。
通常 HTTPS 抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。
而且,浏览器只会提示安全风险,如果用户授权仍然可以继续访问网站,完成请求。因此,只要客户端是我们自己的终端,我们授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。通常HTTPS抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。
HTTP 状态码
[
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
307 Internal Redirect 内部重定向
304 Not Modified 自从上次请求后,请求的网页未修改过。 协商缓存
200 memory cache 强缓存
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
]
本文对比了HTTP和HTTPS在安全性的加密方式、SSL证书要求、默认端口、性能差异以及身份验证机制。HTTPS提供了更好的安全性,但并非绝对安全,可能面临中间人攻击。同时概述了HTTP状态码的基本含义。


被折叠的 条评论
为什么被折叠?



