网络协议有哪些(网络协议包含)

2022-04-07 03:25:09 发布:网友投稿
热度:88

作为软件测试,我们都知道一些常用的网络协议是我们必须要了解和掌握的,比如HTTP协议和HTTPS协议,这是两个应用非常广泛的协议,所以也是面试官在面试的时候经常会问的两个协议。而且,因为这两个协议的地址相似且相关,面试官经常会问一个问题:你能告诉我http协议和https协议的区别吗,以便调查你对它们的掌握程度?如果你不知道,不妨看看这篇文章。

HTTP 协议

其实大家可能都很熟悉http协议。HTTP协议,全称是超文本传输协议。它是在TCP和三次握手之间建立链接的基础上工作的,所以http协议是一个基于TCP协议的80端口应用层协议,其主要功能是将万维网WWW上的资源转移到本地浏览器上。

HTTP协议所做的主要是用来规定客户端和服务器端的数据传输格式,所以是一个标准和规范。那么它是如何定义这个规范的呢?这就需要我们看一下这个协议的具体内容。接下来,让我们通过使用fiddler抓取数据包来直观地查看此消息的内容:

每个http连接包括两个部分:请求消息和响应消息。就像你在浏览器中发送访问百度页面的请求,百度服务器会给我返回响应并显示百度页面,所以HTTP协议是基于请求和响应模式的。

请求消息

首先,我们来看HTTP协议请求消息,即http request,它指的是从客户端到服务器的请求消息,包括以下信息:

请求行:包括请求方式(GET、POST等)。),请求地址uri、HTTP版本等信息。

Header:包括很多内容,比如内容类型(从客户端传递到服务器的数据格式)、User-Agent(表示客户端的基本信息)等等。

空行:是格式要求,表示请求头的结束。

请求体:是请求体,通常是参数等信息。

具体的抓取包如下图所示:

响应消息

服务器收到客户端的请求后,会给出一个响应,也就是http响应,其中还包括以下四部分信息:

响应行:包括http版本和响应状态代码信息。

响应头:还包括很多信息,如内容类型、cookie \令牌等。

空行:表示响应头的结尾。

响应体:服务响应返回的具体数据,如XML、JSON数据等,也是接口测试的关键内容。

从上面的信息我们还可以看出,http协议具有以下特点:

通信使用的明文进行数据传输的,任何一个中间截取者都可以截取数据进行篡改;请求的客户端和响应的服务器端不会对通信双方进行身份的确认,这样就可能会导致任何人都可以假冒成为通讯方而不被发现;也没有校验和保护数据的完整性的机制,被篡改的数据没有办法被通讯双方所发现。

然而,随着互联网的不断发展,我们越来越多的业务是在网上进行的,安全性也越来越受到重视。因此,针对HTTP协议的这些不安全特性,一种新的协议应运而生,这就是HTTPS协议。

HTTPS 协议

HTTPS,全称是超文本传输协议安全,是一个以安全为目标的HTTP通道,简而言之,是HTTP协议的安全版本。

那么它是如何实现安全性的呢?请看下图:

从图中我们可以清楚地看到,HTTPS协议在HTTP协议和TCP协议之间增加了ssl层,因此其安全性是通过SSL协议实现的。因此,HTTPS协议也常被称为:带SSL外壳的HTTP协议。

那么这个SSL协议能提供什么样的安全性呢?给大家一个公式:HTTP加密认证完整性保护=HTTPS

SSL 握手过程

如何实现这些安全机制,我们需要看看HTTPS的工作流程。下图显示了SSL连接的握手过程:

让我们用文字解释一下上面的过程:

1.客户端通过发送Client Hello 报文开始 SSL 通信

客户端发起请求,并以明文形式发送请求信息,包括版本信息、加密套件候选列表、压缩算法候选列表、随机数、扩展字段等信息。

相关信息如下:支持的最高TSL协议版本,从低到高,SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,目前基本不再使用低于TLSv1的版本;客户端支持的密码套件列表,每个密码套件对应于前面TLS原理中四个功能的组合:

认证算法

密钥交换算法密钥交换(密钥协议)

对称加密算法Enc(信息加密)

消息Mac(完整性检查);

2.服务器可进行 SSL 通信时,会以 Server Hello 报文应答

服务器返回协商的信息结果,包括选择的协议版本、选择的加密套件密码套件、选择的压缩算法压缩方法、随机数s等。,其中随机数用于随后的密钥协商;

3.服务器发送 Certificate 证书报文

服务器为认证和密钥交换配置相应的证书链;消息中包含公钥证书,客户端可以通过证书验证服务器的身份,这是为了防止第三方冒充身份,保证双方身份的真实性。

4.服务器发送 Server Hello Done 报文通知客户端

该消息的发送通知客户端server_hello消息的发送结束,这标志着初始阶段SSL握手协商部分的结束。

5.客户端以 Client Key Exchange 报文作为回应

从服务器收到证书后,客户端将验证证书的有效性。如果证书通过验证,将进行后续通信。否则会根据不同的错误情况进行提示和操作。

在验证证书的有效性后,客户端计算并生成一个随机密码字符串,该字符串带有一个称为Pre-master secret的随机数,并使用证书公钥对其进行加密,然后将其发送给服务器;消息已经在步骤3中用公钥加密。

此时,客户端已经获得了计算协商密钥所需的全部信息:两个明文随机数random_C和random_S,以及自己的Pre-master,并计算出协商密钥。

6.接着客户端继续发送 Change Cipher Spec 报文

通过该消息,客户端通知服务器,所有后续通信都通过协商的通信密钥和加密算法进行加密。

7.客户端发送 Finished(encrypted_handshake_message) 报文

将之前所有通信参数的哈希值与其他相关信息结合生成一条数据,用协商密钥会话秘密和算法进行加密,然后发送到服务器进行数据和握手验证;此消息包含迄今为止连接的所有消息的总检查值。握手协商的成功取决于服务器能否正确解密消息。

8.服务器同样发送 Change Cipher Spec 报文

加密的预主数据由服务器私钥解密。基于先前交换的两个明文随机数random_C和random_S,协商密钥被计算为enc _ key = FUC (random _ c,random _ s,预主)。然后计算之前收到的所有信息的哈希值,对客户端发送的encrypted_handshake_message进行解密,验证数据和密钥的正确性;

验证通过后,服务器还会发送change_cipher_spec通知客户端,所有后续通信都是通过协商的密钥和算法加密的。

9.服务器同样发送 Finished(encrypted_handshake_message)报文

服务器还结合所有当前的通信参数信息来生成一条数据,用协商密钥会话秘密和算法对其进行加密,并将其发送给客户端。

客户端计算所有接收信息的哈希值,用协商密钥解密加密的握手消息,并验证服务器发送的数据和密钥。如果验证成功,则握手完成。

10.开始进行应用层协议的通信,即发送 HTTP 请求。

在服务器和客户端的消息交换完成后,建立SSL连接。正式开始发送http通信消息,发送HTTP请求消息。当然,通信消息会受到SSL的保护。

应用层在发送数据时会附加一个称为MAC(消息认证码)的消息摘要。MAC可以发现消息是否被篡改,从而保护消息的完整性。

11.应用层协议通信,即发送 HTTP 响应。12.最后由客户端断开连接。断开连接时,发送 close_notify 报文。

上图有所遗漏。此步骤后,将发送TCP FIN消息,以关闭与TCP的通信。

通过以上12步分析,我们可以清楚地看到SSL是如何提供数据安全性的:

1)是否通过证书验证双方身份,确保身份的真实性和可靠性,防止第三方伪造;

2)通过协商好的密钥对通信数据进行加密,保证数据不会被任何数据拦截器看到,保证数据的保密性;

3)通过MAC的消息摘要,保证了数据没有被篡改,保证了数据的完整性。

使用 HTTP 协议还是 HTTPS 协议呢?

在这一点上,我们会发现httpS协议确实比HTTP协议安全很多,但是我们在日常生活中还是会看到一些使用HTTP协议的网站。既然HTTPS如此安全可靠,为什么不是所有的网站都使用HTTPS呢?主要原因如下:

1.它消耗了大量的计算机资源:与纯文本通信相比,加密通信会消耗更多的CPU和内存资源。如果每一次通信都被加密,将会消耗相当多的资源,并且当在一台计算机上平等共享时,可以处理的请求数量肯定会减少。

2.通信速度会变慢:与使用HTTP相比,网络负载可能会慢2到100倍。除了用TCP连接,发送HTTP请求和响应,还必须进行SSL通信,所以整体处理流量必然会增加。

3.服务器和客户端的机器性能要求更高:由于大量消耗CPU、内存等资源,导致处理速度变慢。由于SSL必须在服务器和客户端都加密,因此,与HTTP相比,它会消耗更多的服务器和客户端的硬件资源,从而导致负载增加。

4.购买证书需要额外费用:证书对HTTPS通信至关重要。使用的证书必须从证书颁发机构购买。根据不同的认证机构,证书的价格可能略有不同。通常一年的授权费用在600 -1000人民币。那些买证书不划算的服务和一些个人网站可能只会选择使用HTTP作为通讯方式。

HTTP 协议和 HTTPS 协议的区别

最后,让我们总结一下http和https之间的区别:

最后,需要软件测试数据的朋友可以通过转发私信【软件测试】获得100G数据包

下一篇:网络兼职有哪些(有哪些网上可以做的兼职)
上一篇:学籍辅号是什么(学籍辅号是什么怎么填写)