The Ice protocol is an application layer protocol, just like http: see https://en.wikipedia.org/wiki/Internet_protocol_suite#Application_layer
The Ice protocol does not depend on http. The Ice protocol is implemented over various transport protocols, such as TCP (with or without an additional TLS layer), UDP, Bluetooth RFCOMM and WebSocket.
WebSocket (https://en.wikipedia.org/wiki/WebSocket) upgrades an http connection to a binary WebSocket connection. We then use the Ice protocol over this WebSocket connection:
This allows you to use http/WebSocket-aware proxies and firewalls to manage your Ice/WebSocket/TCP connections.
I guess you may see this as sending Ice protocol messages over http, but it's really over WebSocket, not plain http.
Then in terms of serialization, the Ice serialization format is called the "Ice encoding" and is totally independent of http. Ice puts byte sequences encoded using the Ice encoding into Ice protocol messages, and then send these messages over TCP, WebSocket (etc.) connections.
I hope this is clearer now!