This question was asked on Reddit not too long ago.
Here was my answer there:
SSL is the original protocol developed by Netscape 1994. This was SSL
version 1.0 (major version 1
minor version 0
). In 1995, Netscape
came out with SSL version 2.0 (major version 2
minor version 0
).
In 1996, Netscape came out with SSL version 3.0 (major version 3
minor version 0
).
In 1999, maintenance of the "SSL" protocol was handed over to the
IETF, who renamed it "TLS". They started with TLS 1.0, which was
major version 3
minor version 1
.
And it continued.... TLS 1.1 is major version 3
minor version 2
.
TLS 1.2 is major version 3
minor version 3
As you can see, TLS (all the way through 1.2) is mostly minor
revisions on SSL 3.0. What you are in fact looking at is a SSL3.0
structured header, advertising the client can support SSL up to major
version 3, minor version 3, otherwise colloquially known as TLS1.2.
Hence, Wireshark decodes it as a SSLv3.0 header -- the header format
has not changed since SSL3.0. Whereas SSL2.0 is an entirely new
header, and if you could force a browser to initiate an SSL2.0
handshake, you would see Wireshark decode it as such. (google turned
up this though)
I couldn't find a perfect reference that proves this, but you can make
out the gist of it in Appendix E of the TLS1.2
RFC.
Newer versions of Wireshark will correct the protocol label to what was negotiated between the two clients after the Client Hello and Server Hello messages.
If you delete the Server Hello from the capture, you will see Wireshark will continue to label the whole conversation as "SSL 3.0" since it does not know what the agreed version of SSL/TLS was.