I'm not sure what SSL uses to share the symmetric key to both end users, i.e. at the beginning of the communication. Is it RSA? Or El-Gamal? Or something else?
Well, what SSL uses to negotiate the symmetric keys depends on the ciphersuite that both sides agree upon. By far, the most common method is that the client picks a random value (the premaster secret), and encrypts it with the server's RSA public key. However, it is not that unusual for the ciphersuite to specify that the client and the server agree upon a premaster secret using the Diffie-Hellman algorithm (or the Elliptic Curve version), with the DH exchange generally (but not always) being protected via some sort of signature operation.
El-Gamal isn't generally used; in fact, I don't believe that there's a standard ciphersuite that specifies it.