If server is streaming to multicast address (for example 18.104.22.168:1234) and a client is receiving data from the same address: in this case, is IGMP protocol used automatically? Is it possible to use multicast without IGMP, and what would be the downside of it?
For receiving multicast data coming from a different subnet/LAN, you need IGMP enabled on the receiver and the subnet facing interface of your router.
If you have a multicast source on the same subnet(ie, in the same broadcast domain), you do not need igmp enabled on your receiver and router. This is subject to the condition that if any bridges are present in your subnet, they must not have igmp-snooping enabled on them. By default, a bridge floods all multicast data.
So multicast packets will come to your NIC. But, you need to tell your NIC driver somehow to read multicast packets and send it up for further processing by higher layers.