SslApplicationProtocol 구조체
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
TLS 애플리케이션 프로토콜의 값을 나타냅니다.
public value class SslApplicationProtocol : IEquatable<System::Net::Security::SslApplicationProtocol>
public readonly struct SslApplicationProtocol : IEquatable<System.Net.Security.SslApplicationProtocol>
type SslApplicationProtocol = struct
Public Structure SslApplicationProtocol
Implements IEquatable(Of SslApplicationProtocol)
- 상속
- 구현
예제
다음 코드 예제에서는 에서 애플리케이션 수준 프로토콜 SslStream의 협상을 보여 줍니다. 서버는 및 protocol2
에 대한 protocol1
지원을 보급합니다. 클라이언트는 및 protocol3
에 대한 protocol2
지원을 보급합니다. 일반적으로 지원되는 프로토콜(protocol2
)은 핸드셰이크 중에 협상됩니다.
async Task Server(NetworkStream stream, X509Certificate2 serverCertificate)
{
using var server = new SslStream(stream);
await server.AuthenticateAsServerAsync(new SslServerAuthenticationOptions
{
ServerCertificate = serverCertificate,
ApplicationProtocols = new()
{
new("protocol1"),
new("protocol2"),
}
});
string protocol = Encoding.ASCII.GetString(server.NegotiatedApplicationProtocol.Protocol.Span);
System.Console.WriteLine($"Server - negotiated protocol: {protocol}");
}
async Task Client(NetworkStream stream, string hostName)
{
using var client = new SslStream(stream);
await client.AuthenticateAsClientAsync(new SslClientAuthenticationOptions
{
// the host name must match the name on the certificate used on the server side
TargetHost = hostName,
ApplicationProtocols = new()
{
new("protocol2"),
new("protocol3")
}
});
string protocol = Encoding.ASCII.GetString(client.NegotiatedApplicationProtocol.Protocol.Span);
System.Console.WriteLine($"Client - negotiated protocol: {protocol}");
}
// possible output:
// Server - negotiated protocol: protocol2
// Client - negotiated protocol: protocol2
Async Function Server(stream As NetworkStream, serverCertificate As X509Certificate2) As Task
Using serverStream As SslStream = new SslStream(stream)
Dim options as New SslServerAuthenticationOptions() With
{
.ServerCertificate = serverCertificate,
.ApplicationProtocols = New List(Of SslApplicationProtocol) From
{
New SslApplicationProtocol("protocol1"),
New SslApplicationProtocol("protocol2")
}
}
Await serverStream.AuthenticateAsServerAsync(options)
Dim protocol As String = Encoding.ASCII.GetString(
serverStream.NegotiatedApplicationProtocol.Protocol.Span)
System.Console.WriteLine($"Server - negotiated protocol: {protocol}")
End Using
End Function
Async Function Client(stream As NetworkStream, hostName As String ) As Task
Using clientStream As SslStream = new SslStream(stream)
Dim options as New SslClientAuthenticationOptions() With
{
.TargetHost = hostName,
.ApplicationProtocols = New List(Of SslApplicationProtocol) From
{
New SslApplicationProtocol("protocol2"),
New SslApplicationProtocol("protocol3")
}
}
Await clientStream.AuthenticateAsClientAsync(options)
Dim protocol As String = Encoding.ASCII.GetString(
clientStream.NegotiatedApplicationProtocol.Protocol.Span)
System.Console.WriteLine($"Client - negotiated protocol: {protocol}")
End Using
End Function
' possible output:
' Server - negotiated protocol: protocol2
' Client - negotiated protocol: protocol2
설명
이 형식에는 HTTP 버전에 대해 미리 정의된 SslApplicationProtocol 값이 있는 정적 필드가 포함되어 있습니다.
핸드셰이크 중에 클라이언트는 사용 가능한 ALPN 프로토콜 목록을 보내고 서버는 해당 목록에서 가장 일치하는 항목을 선택합니다.
지원되는 프로토콜의 전체 목록은 TLS Application-Layer ALPN(프로토콜 협상) 프로토콜 ID를 참조하세요.
생성자
SslApplicationProtocol(Byte[]) |
SslApplicationProtocol의 새 인스턴스를 초기화합니다. |
SslApplicationProtocol(String) |
SslApplicationProtocol의 새 인스턴스를 초기화합니다. |
필드
Http11 |
HTTP/1.1 TLS 애플리케이션 프로토콜을 나타내는 SslApplicationProtocol을 가져옵니다. |
Http2 |
HTTP/2 TLS 애플리케이션 프로토콜을 나타내는 SslApplicationProtocol을 가져옵니다. |
Http3 |
HTTP 3.0에 대한 instance 정의합니다 SslApplicationProtocol . |
속성
Protocol |
이 SslApplicationProtocol에서 나타내는 최신 TLS 애플리케이션 프로토콜을 가져옵니다. |
메서드
Equals(Object) |
SslApplicationProtocol을 지정된 개체와 비교합니다. |
Equals(SslApplicationProtocol) |
SslApplicationProtocol를 지정된 SslApplicationProtocol 인스턴스와 비교합니다. |
GetHashCode() |
SslApplicationProtocol 인스턴스에 대한 해시 코드를 반환합니다. |
ToString() |
ToString() 메서드를 재정의합니다. |
연산자
Equality(SslApplicationProtocol, SslApplicationProtocol) |
두 SslApplicationProtocol 개체를 비교하기 위한 같음 연산자입니다. |
Inequality(SslApplicationProtocol, SslApplicationProtocol) |
두 SslApplicationProtocol 개체를 비교하기 위한 같지 않음 연산자입니다. |
적용 대상
.NET