首页 > 自考资讯 > 自考知识

http请求的过程与原理,https端口

头条共创 2024-06-27

http协议基于tcp协议,默认端口80。它有什么特点呢?它是基于请求和响应的,当我们拿到数据包时,我们可以看到http协议有请求消息和响应消息,是无状态协议和无连接协议。

78b0e342e5e540269820c136c2babba9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=aoftunea4f%2BGYRsVRAJdIL8AW%2FE%3D edc9c543b51a468f91338a294d16161d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=QDzYAPuHTm8VWEiBZQIf00836Yo%3D 4a885dd324a642038d50ffc9e5711155~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=VA7BJBiAzFFwCETThl3xymMDZ64%3D 无连接意味着:

http协议一次只能处理一个请求。它仅限于每个连接仅处理一个请求。这意味着服务器处理来自客户端的请求,并在收到客户端的响应后即收到一个连接后断开连接。处理一个请求。

如果有后续请求,则必须重新启动连接。在实践中,我们这样做是为了节省时间,但网页一般都比较复杂,单个连接可能需要处理多个请求。在这种情况下,处理完一个请求后不需要关闭连接。由于一个连接可以处理多个请求,因此该协议中定义了一种称为保活机制的新功能,以保持其中一个连接处于活动状态。将其保存为长链接。

048130255a114b4da33217037bdfd870~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=YIAX82NS9CpvPgu8qAqLTOOeBDQ%3D

无状态意味着:

该协议不具备客户端内存功能,这会导致请求被断开、请求中的消息未被保留等问题。然后是下一个请求。那么如果现在想使用最后一个请求怎么办?这需要重传。

例如,用户使用淘宝时,必须先登录。登录是一个请求,购买产品是另一个请求。这时,用户必须先登录。我希望能够保留登录相关的信息,但是在这种情况下我应该使用什么样的机制呢?它们是cookie机制和session机制。

4cfc9718759c49e18564f8f0d231621e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=2LI8c1cE71y2IL5KwluAJJCq23M%3D a59e3086a79b41d0b2a5c78a527ef453~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=KI9kFFJhLIJlZQWdmhoTyBDbhN8%3D 纯文本是未加密的消息。因此,账号和密码都是可见的,这是极其危险的,而且双方的“身份”都没有得到认证。例如,如果您有一个客户端想要与服务器进行通信,而中间有第三方,那么由于客户端和服务器没有进行身份验证,因此消息可能会被篡改。由于客户端和服务器之间没有身份验证,第三方可能会窃取此消息,修改它,然后将其发送到服务器。这是一个非常危险的地方,也是http协议的一个明显的缺点。基于这个缺点,超文本传输安全协议HTTPS(正式名称:Hyper Text Transfer Protocol Secure)被引入。

38741643dd8144a7b5f68fc4c6faec31~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=rInb222mChqj7NMTvZoGLmfRN0U%3Dhttps协议是加密的,其消息称为密文。如果没有关联的密钥,您将无法看到其中的特定消息,并且您还可以确保其中一封消息不被盗窃。

http + 加密 + 身份认证 + 完整性 = HTTPS

https 协议基于tcp 端口443。 https协议通常被称为包裹在SSL协议外壳中的http协议。 http和https协议都是基于TCP协议的,但是对于https协议来说,先有一个SSL协议,这就需要先进行SSL封装和加密。 HTTPS网络中封装数据包的过程:首先封装SSL协议头,然后封装HTTP协议,首先基于SSL对其进行加密,然后基于此加密对HTTP报文进行加密发送。

f92564ce0e354271a0661240f1d95634~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=lzjxFUFBgMXVxBYbsY9WBhEOqpg%3D SSL 协议的握手过程非常复杂。这是SSL握手过程,而不是TCP握手。过程变得更加复杂,但是

我们来看看这张照片。

0785bd6269914b1ba3ff806fdcfc09fa~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=nowuJ5Ji4gyePORQXc0IBVHSxvk%3D 该图中的过程实际上相当复杂。为了理解这个过程,让我们用一个相对简单的例子。客户端要与服务器建立连接才能建立连接。

例如,这个女孩是一位顾客。这个男孩是一名服务员。客户端必须与服务器建立https 连接。男孩也很诚恳地说道:“好吧,既然你想跟我联系,那我们就先建立一个安全通道吧。”这就是SSL握手过程。

第一条消息由客户端发起。因此,这称为客户端问候消息。该消息包含客户端支持的所有加密方法。男孩(服务器)从女孩(客户端)告诉他的加密方法中选择相同的加密方法。这意味着您必须选择相同的语言才能进行交流。

第二条消息是男孩根据女孩发送的第一条消息回复的。之前我们将客户端称为client hello,现在我们将把男孩的响应服务器称为hello。

当然,作为一个绅士,男孩想表达他的诚意,为了表明我是一个合法公民,我给了女孩一张身份证,相当于服务器传给客户端的一个证书。然后客户端获得包含一些关键信息的证书。于是,在获得证书后,她在本地秘密生成了一个密钥,并用它来加密后续传输的数据以及后续http协议中的交互消息。她以某种方式向男孩传达了一个重要的信息。男孩们也很注意。写入后,向您的客户发送消息以使用此加密方法进行安全聊天。至此,SSL握手完成。

上图是一个简单的过程;下图是详细版本。

4cbf792e19234c908fe2678d098e4a79~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=GpG%2BvE69x3vM4G2vPofopuFloSk%3D 客户端在左边,服务器在右边

客户端向服务器发送握手(客户端问候)消息,并将所有加密规则发送到服务器。接收到它的服务器会用包含一组加密算法、ID 卡消息和证书的服务器问候进行响应。第二条消息是服务器hello,第三条消息也是证书之一。客户端获得证书后,对证书进行验证,以确认其身份是否合法。如果证书可信,客户端会在本地静默生成密钥并将生成的密钥传送给服务器。通过客户端密钥交换,交换客户端密钥并将加密的包描述发送到客户端。我所要做的就是告诉客户端本地生成的密钥。服务器收到后会确认。 SSL 握手已完成。

概括:

首先,加密函数通过客户端生成的密钥进行加密,身份认证通过服务器颁发的证书进行。只有服务器颁发证书时才称为单向身份验证。如果某些网站对安全性要求较高,可以使用双向认证。使用单一身份验证时,只有服务器颁发证书。双向身份验证要求客户端和服务器相互验证并交换证书。访问CA,将此证书发送到服务器,并让服务器验证客户端的身份。

fc2f2bbf83aa44f6b4192a3d14b115a1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=eno%2F3SM74UgCW8aON2yXqP%2F1XdA%3D 完整性验证是为了防止消息被第三方篡改,有一种哈希算法叫MD5,通过MD5进行。这与应用补丁相同,将其添加到客户端的消息中,然后在服务器收到后验证并比较摘要的准确性。如果客户端有相同的补丁,则说明消息没有被篡改。

面试官问的一个常见问题是:https 和http 协议之间的区别。

308ceeba76e8491f8f056a219ac88a7f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=RD371tHn7N5GogtU%2Fj41aoWZRvU%3D

第一:安全性

从安全角度来看,https协议比http协议更安全。因为http是明文,容易受到攻击。没有办法验证你的身份,也没有办法保证你的身份。数据完整性呢?它对密文进行加密,验证您的身份,并防止消息篡改,为您提供非常高的安全性。这是两者之间第一个非常重要的区别。

第二:灵活性

http是TCP端口80,https是TCP端口443。这是因为HTTP协议的实现过程比SSL协议更加复杂。基于该技术开发网站的技术要求较高,涉及加密、密钥计算等非常复杂的技术。

第三:速度

显然http协议肯定更快。它非常快,因为它不需要经历复杂的SSL 握手。 https协议需要良好的服务器性能,因为它要经过一些复杂的安全流程。如果您的服务器没有足够的资源,它将无法运行这种复杂的加密算法,并且您的用户将遇到访问缓慢的情况。

第四:经济适用度

是http协议,没有额外费用。但https协议需要去CA颁发证书,每年费用为600到1000美元,还有技术支持等费用。虽然https占比非常明显,但是仍然有一些网站,比如一些中小企业,因为服务器要求比较高,无法承受。

关注我,了解更多程序员信息技术,接收丰富资讯

283c8acaf1b741769de6d952d172f4d5~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720075745&x-signature=XUJdEtogP54fMwhFgJXncaOnx7w%3D

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢