To understand, what is encrypted and what not, you need to know that SSL/TLS is the layer between the transport-layer and the application-layer.
in the case of HTTPS, HTTP is the application-layer, and TCP the transport-layer. That means, all Headers below the SSL-Level are unencrypted. Also, SSL itself may expose data. The exposed data includes(for each layer's Header):
NOTE: Additional Data might be exposed too, but this data is pretty sure to be exposed.
MAC:
- Source MAC address(Current Hop)
- Destination MAC address(Next Hop)
IP(assuming IPv4):
- Destination IP address
- Source IP address
- IP Options(if set)
- Type-Of-Service(TOS)
- The number of hops the current packet passed, if TTL is set to 64
TCP:
- Source Port
- Destination Port
- TCP-Options
Theoretically, you can encrypt the TCP-Headers, but that is hard to implement.
SSL:
- Hostname(if SNI is being used)
Usually, a browser won't just connect to the destination host by IP immediantely using HTTPS, there are some earlier requests, that might expose the following information(if your client is not a browser, it might behave differently, but the DNS request is pretty common):
DNS:
This request is being sent to get the correct IP address of a server. It will include the hostname, and its result will include all IP addresses belonging to the server.
HTTP:
the first request to your server. A browser will only use SSL/TLS if instructed to, unencrypted HTTP is used first. Usually, this will result in a redirect to the seucre site. However, some headers might be included here already:
- User-Agent(Specification of the client)
- Host (Hostname)
- Accept-Language (User-Language)