服务器的npn是什么意思

worktile 其他 68

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    服务器的NPN指的是Next Protocol Negotiation,即下一协议协商。它是一种用于在SSL/TLS握手阶段协商选择应用层协议的扩展机制。在SSL/TLS握手过程中,客户端和服务器会交换支持的加密算法和协议版本等信息,而NPN扩展则允许服务器和客户端协商选择一个更高级的应用层协议,例如HTTP/2,而不是使用旧的协议如HTTP/1.1。

    NPN扩展的工作流程如下:

    1. 客户端发送ClientHello消息给服务器,包含了支持的加密算法和协议版本等信息。
    2. 服务器收到ClientHello消息后,会发送ServerHello消息给客户端作为回应,同时在ServerHello消息中包含自己支持的加密算法和协议版本等信息。
    3. 在正常的SSL/TLS握手过程中,客户端和服务器会进行协商,选择一个双方都支持的加密算法和协议版本。
    4. 如果服务器支持NPN扩展且客户端也支持,在ServerHello消息中服务器会附加一个NPN协议扩展报文,其中包含服务器支持的一组应用层协议列表。
    5. 客户端收到ServerHello消息后,会检查其中的NPN协议扩展报文,判断服务器是否支持NPN。
    6. 如果服务器支持NPN扩展,客户端会选择一个应用层协议并将其发送给服务器。
    7. 服务器根据收到的应用层协议选择,返回相应的协议封装给客户端,例如选择HTTP/2协议时,服务器会使用HTTP/2封装请求和响应数据。

    通过使用NPN扩展,服务器和客户端能够在SSL/TLS握手过程中协商选择更高级的应用层协议,从而提供更高效和安全的通信。在支持HTTP/2的服务器和浏览器中,NPN扩展已被其后继技术ALPN(Application-Layer Protocol Negotiation)取代。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    服务器的NPN代表 "Next Protocol Negotiation",即 "下一个协议协商"。它是一种用于在HTTPS连接握手过程中选择传输层安全(TLS)协议版本的机制。

    在建立HTTPS连接时,客户端和服务器之间需要协商TLS协议的版本,以确定使用哪个版本的加密和安全协议来保护数据传输。在过去,这种协商是通过TLS扩展(TLS Extension)中的"Supported Versions"字段进行的。但是,这种方式存在一些问题,比如不同的TLS版本可能会在不同的扩展字段上进行广告宣传,而且无法扩展新的TLS版本。

    为了解决这些问题,NPN被引入到TLS协议中。它允许服务器在握手期间向客户端发送一个支持的协议列表,并允许客户端从中选择一个协议来与服务器建立连接。具体而言,服务器在"server_hello"阶段发送一个"next_protocol_negotiation"扩展来列出支持的协议,然后客户端从中选择一个协议进行使用。选择的协议被称为"Next Protocol",简称NPN。

    通过使用NPN,服务器可以灵活地扩展和升级支持的协议,而不会影响与旧版本的客户端进行兼容性。这使得在TLS握手中使用新的加密和安全协议更加容易和高效。

    总结一下,服务器的NPN表示服务器在HTTPS握手过程中使用的 “下一个协议协商” 机制,它允许服务器列出支持的协议并允许客户端选择一个协议来与服务器建立连接。这种机制提供了更高的灵活性和扩展性,使得支持新的TLS版本和协议变得更加容易。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    NPN是指"Next Protocol Negotiation",也称为"Next Protocol Negotiation Extension",是一种用于在TLS握手过程中协商使用的应用层协议的扩展。NPN扩展允许客户端和服务器协商选择一个比HTTP更高级的协议,例如HTTP/2等。

    在TLS握手过程中,服务器和客户端之间会交换TLS扩展。通过NPN扩展,服务器可以告知客户端它支持的协议列表,而客户端可以从中选择一个合适的协议进行通信。这样可以实现在TLS连接上使用更高效、更安全的协议,提高网络通信的性能和安全性。

    具体操作流程如下:

    1. 客户端发送ClientHello消息给服务器,其中包含支持的TLS版本和加密套件。
    2. 服务器收到ClientHello消息后,将会返回ServerHello消息给客户端。在这个阶段,服务器和客户端可以交换各自所支持的TLS扩展。
    3. 如果服务器支持NPN扩展,它将在ServerHello消息中包含一个NPN扩展。NPN扩展中包含了服务器支持的应用层协议列表。
    4. 客户端收到ServerHello消息后,可以检查其中的NPN扩展,获取服务器支持的协议列表。
    5. 客户端根据服务器支持的协议列表,选择一个与服务器协商的协议。如果客户端也支持该协议,它将在ClientHello消息的NPN扩展中包含所选择的协议。
    6. 服务器收到ClientHello消息后,检查其中的NPN扩展,获取客户端选择的协议。如果服务器也支持该协议,他将在ServerHello消息的NPN扩展中包含所选择的协议。
    7. 至此,服务器和客户端已经完成了NPN协商。它们可以使用所选择的协议进行后续的通信,例如使用HTTP/2协议进行数据传输。

    需要注意的是,NPN扩展在TLS 1.2及之前的版本中并不是默认支持的,而是通过与TLS握手过程一起发送的TLS扩展来实现的。而在TLS 1.3中,NPN扩展已被废弃,取而代之的是更加高级的"ALPN"扩展。ALPN扩展提供了类似的功能,但提供了更多的安全性和灵活性,是目前广泛使用的应用层协议协商机制。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部