http协议基于tcp协议,默认端口80。它有什么特点呢?它是基于请求和响应的,当我们拿到数据包时,我们可以看到http协议有请求消息和响应消息,是无状态协议和无连接协议。
无连接意味着:
http协议一次只能处理一个请求。它仅限于每个连接仅处理一个请求。这意味着服务器处理来自客户端的请求,并在收到客户端的响应后即收到一个连接后断开连接。处理一个请求。
如果有后续请求,则必须重新启动连接。在实践中,我们这样做是为了节省时间,但网页一般都比较复杂,单个连接可能需要处理多个请求。在这种情况下,处理完一个请求后不需要关闭连接。由于一个连接可以处理多个请求,因此该协议中定义了一种称为保活机制的新功能,以保持其中一个连接处于活动状态。将其保存为长链接。
无状态意味着:
该协议不具备客户端内存功能,这会导致请求被断开、请求中的消息未被保留等问题。然后是下一个请求。那么如果现在想使用最后一个请求怎么办?这需要重传。
例如,用户使用淘宝时,必须先登录。登录是一个请求,购买产品是另一个请求。这时,用户必须先登录。我希望能够保留登录相关的信息,但是在这种情况下我应该使用什么样的机制呢?它们是cookie机制和session机制。
纯文本是未加密的消息。因此,账号和密码都是可见的,这是极其危险的,而且双方的“身份”都没有得到认证。例如,如果您有一个客户端想要与服务器进行通信,而中间有第三方,那么由于客户端和服务器没有进行身份验证,因此消息可能会被篡改。由于客户端和服务器之间没有身份验证,第三方可能会窃取此消息,修改它,然后将其发送到服务器。这是一个非常危险的地方,也是http协议的一个明显的缺点。基于这个缺点,超文本传输安全协议HTTPS(正式名称:Hyper Text Transfer Protocol Secure)被引入。
https协议是加密的,其消息称为密文。如果没有关联的密钥,您将无法看到其中的特定消息,并且您还可以确保其中一封消息不被盗窃。
http + 加密 + 身份认证 + 完整性 = HTTPS
https 协议基于tcp 端口443。 https协议通常被称为包裹在SSL协议外壳中的http协议。 http和https协议都是基于TCP协议的,但是对于https协议来说,先有一个SSL协议,这就需要先进行SSL封装和加密。 HTTPS网络中封装数据包的过程:首先封装SSL协议头,然后封装HTTP协议,首先基于SSL对其进行加密,然后基于此加密对HTTP报文进行加密发送。
SSL 协议的握手过程非常复杂。这是SSL握手过程,而不是TCP握手。过程变得更加复杂,但是
我们来看看这张照片。
该图中的过程实际上相当复杂。为了理解这个过程,让我们用一个相对简单的例子。客户端要与服务器建立连接才能建立连接。
例如,这个女孩是一位顾客。这个男孩是一名服务员。客户端必须与服务器建立https 连接。男孩也很诚恳地说道:“好吧,既然你想跟我联系,那我们就先建立一个安全通道吧。”这就是SSL握手过程。
第一条消息由客户端发起。因此,这称为客户端问候消息。该消息包含客户端支持的所有加密方法。男孩(服务器)从女孩(客户端)告诉他的加密方法中选择相同的加密方法。这意味着您必须选择相同的语言才能进行交流。
第二条消息是男孩根据女孩发送的第一条消息回复的。之前我们将客户端称为client hello,现在我们将把男孩的响应服务器称为hello。
当然,作为一个绅士,男孩想表达他的诚意,为了表明我是一个合法公民,我给了女孩一张身份证,相当于服务器传给客户端的一个证书。然后客户端获得包含一些关键信息的证书。于是,在获得证书后,她在本地秘密生成了一个密钥,并用它来加密后续传输的数据以及后续http协议中的交互消息。她以某种方式向男孩传达了一个重要的信息。男孩们也很注意。写入后,向您的客户发送消息以使用此加密方法进行安全聊天。至此,SSL握手完成。
上图是一个简单的过程;下图是详细版本。
客户端在左边,服务器在右边
客户端向服务器发送握手(客户端问候)消息,并将所有加密规则发送到服务器。接收到它的服务器会用包含一组加密算法、ID 卡消息和证书的服务器问候进行响应。第二条消息是服务器hello,第三条消息也是证书之一。客户端获得证书后,对证书进行验证,以确认其身份是否合法。如果证书可信,客户端会在本地静默生成密钥并将生成的密钥传送给服务器。通过客户端密钥交换,交换客户端密钥并将加密的包描述发送到客户端。我所要做的就是告诉客户端本地生成的密钥。服务器收到后会确认。 SSL 握手已完成。
概括:
首先,加密函数通过客户端生成的密钥进行加密,身份认证通过服务器颁发的证书进行。只有服务器颁发证书时才称为单向身份验证。如果某些网站对安全性要求较高,可以使用双向认证。使用单一身份验证时,只有服务器颁发证书。双向身份验证要求客户端和服务器相互验证并交换证书。访问CA,将此证书发送到服务器,并让服务器验证客户端的身份。
完整性验证是为了防止消息被第三方篡改,有一种哈希算法叫MD5,通过MD5进行。这与应用补丁相同,将其添加到客户端的消息中,然后在服务器收到后验证并比较摘要的准确性。如果客户端有相同的补丁,则说明消息没有被篡改。
面试官问的一个常见问题是:https 和http 协议之间的区别。
第一:安全性
从安全角度来看,https协议比http协议更安全。因为http是明文,容易受到攻击。没有办法验证你的身份,也没有办法保证你的身份。数据完整性呢?它对密文进行加密,验证您的身份,并防止消息篡改,为您提供非常高的安全性。这是两者之间第一个非常重要的区别。
第二:灵活性
http是TCP端口80,https是TCP端口443。这是因为HTTP协议的实现过程比SSL协议更加复杂。基于该技术开发网站的技术要求较高,涉及加密、密钥计算等非常复杂的技术。
第三:速度
显然http协议肯定更快。它非常快,因为它不需要经历复杂的SSL 握手。 https协议需要良好的服务器性能,因为它要经过一些复杂的安全流程。如果您的服务器没有足够的资源,它将无法运行这种复杂的加密算法,并且您的用户将遇到访问缓慢的情况。
第四:经济适用度
是http协议,没有额外费用。但https协议需要去CA颁发证书,每年费用为600到1000美元,还有技术支持等费用。虽然https占比非常明显,但是仍然有一些网站,比如一些中小企业,因为服务器要求比较高,无法承受。
关注我,了解更多程序员信息技术,接收丰富资讯
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。