Multicast
What is Multicasting ?Multicasting is a technique developed to send packets from one location in the Internet to many other locations, without any unnecessary packet duplication. In multicasting, one packet is sent from a source and is replicated as needed in the network to reach as many end-users as necessary.
The concept of a group is crucial to multicasting. Every multicast requires a multicast group; the sender (or source) transmits to the group address, and only members of the group can receive the multicast data. A group is defined by a Class D address (addresses 224.0.0.0 to 239.255.255.255 ).
Multicasting uses UDP (User Datagram Protocol) as its underlying transport protocol.
TCP (transmission control protocol)
uses frequent transmission of acknowledgement (ACK) packets between the receiver and the transmitter for flow control, and also to determine if packets have arrived safely, in order that dropped packets can be retransmitted. This form of feedback and retransmission does not scale well into the one to many case, although some forms of reliable multicast do use negative acknowledgements (NACKs) to signal the need for retransmission.
UDP
is a simpler protocol where there is no acknowledgement of the success or failure of the transmission of any packet, and no retransmission, at the transport layer. (In the jargon, UDP is called "best effort.") Strictly speaking, therefore, multicast data transport is unreliable, and any reliability must be engineered-in at a higher level.
There are some special multicast groups, say "well known multicast groups", you should not use in your particular applications due the special purpose they are destined to:
- 224.0.0.1 is the all-hosts group. If you ping that group, all multicast capable hosts on the network should answer, as every multicast capable host must join that group at start-up on all it's multicast capable interfaces.
- 224.0.0.2 is the all-routers group. All multicast routers must join that group on all it's multicast capable interfaces.
