Первый.
http://citforum.ru/nets/semenov/6/ssl_65.shtml6.5.1. Спецификация протокола записей SSL 6.5.1.1. Формат заголовка записи SSL
(2 - 3 байта заголовка записи)
RECORLENGTH = ((byte[0] & 0x7F << 8)) | byte[1];
6.5.2.5. Протокольные сообщения клиента
CLIENT-HELLO (Фаза 1; посылается открыто)
char MSG-CLIENT-HELLO
char CLIENT-VERSION-MSB
char CLIENT-VERSION-LSB
char CIPHER-SPECS-LENGTH-MSB
char CIPHER-SPECS-LENGTH-LSB
char SESSION-ID-LENGTH-MSB
char SESSION-ID-LENGTH-LSB
char CHALLENGE-LENGTH-MSB
char CHALLENGE-LENGTH-LSB
char CIPHER-SPECS-DATA[(MSB<<8)|LSB]
char SESSION-ID-DATA[(MSB<<8)|LSB]
char CHALLENGE-DATA[(MSB<<8)|LSB]
ИЕ первый запрос дает в точности соответствующий
этому описанию SSL. Я вижу это как последовательность
0x80,0x2E,0x01,0x03,0x00,0x00,0x15,0x00, и т. д.
Второй.
http://citforum.ru/nets/semenov/6/tls.shtml
(http://rfc2.ru/2246.rfc тут то же самое, но лучше изложено)
6.2.1. Фрагментация (запись)
struct {
ContentType type; // handshake(22),
ProtocolVersion version;
uint16 length;
opaque fragment[TLSPlaintext.length]; // сюда входят две нижние структуры
} TLSPlaintext;
7.4. Handshake protocol
struct {
HandshakeType msg_type; // client_hello(1),
uint24 length;
client_hello ClientHello;
} Handshake;
7.4.1.2. Hello клиента
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites<2..216-1>;
CompressionMethod compression_methods<1..28-1>;
} ClientHello;
Другой запрос TLS, написаный мною. Последовательность байт
0x16, 0x03, 0x00, 0x00, 0x37, и т. д.
Каждый из этих запросов посылаю на сервер и получаю ответ TLS,
содержащий server-hello (который я понимаю), сертификат, еще
что-то (которые я пока не понимаю) и server_hello_done.
Дальнейший обмен невозможен, т. к. я туда еще не продвинулся
В протоколе TLS есть еще пункт
E. Совместимость с SSL
который я сначала не заметил. Но все равно не понял.
На сервер приходит не hello, а какие-то байты, которые надо
как-то интерпретировать. Они разные
0x80,0x2E,0x01,0x03,0x00,0x00,0x15,0x00, и т. д.
0x16, 0x03, 0x00, 0x00, 0x37, и т. д.
Ответ как будто одинаковый.