Circuit switching establishes a dedicated connection between two endpoints for the duration of a call. It is connection-oriented with no delay in data flow. Packet switching breaks data into packets that may take different routes to the destination and are reassembled using store and forward. There are two schemes for packet switching: datagram, where each packet is treated independently, and virtual circuit switching, which establishes a logical connection between sender and receiver for packets.