How does the 3DS protocol work?