4

暗号化されていない TCP と SSL の両方に 1 つのポートを使用したいと考えています。

目標は、1 つのポートをマシンへの入り口にすることです。これは、すべてのプロトコルとトランスポートをポートに多重化することを意味します。たとえば、ストリームの最初の 4 バイトを覗きます。「GET」、「POST」、「HEAD」などで始まる場合、それが HTTP プロトコルであることはわかっているので、接続を HTTP サーバーに渡します。「HELO」または「EHLO」の場合、SMTP サーバーに渡すことを知っています。

問題は、それが SSL 接続である場合 (OpenSSL に渡すために)、何を探すべきかということです。

4

1 に答える 1

4

SSL 2 は、最初の 2 バイトとして 8x yz (16 進数) を持ち (x yz は、8F 13 など、何でもかまいません)、SSL 3 以降では、最初の 2 バイトとして 16 03 hex を持ちます。

更新: コメントで指摘されているように、一部のプロトコルではサーバーが最初に何かを送信する必要があるため (FTP と POP3 はいくつか挙げられており、SMTP はコメントで言及されています)、アプローチは限られた数のプロトコルでのみ機能します。

于 2012-07-06T18:04:54.430 に答える