I wanna test my phone working on TCP, so if asterisk could support transport=tcp?
TCP cannot be used as a Real Time Protocol.
TCP, (meaning Transmission Control Protocol) waits for the distant end to acknowledge the receipt of data before sending the next block. If something is lost, it can be resent.
Asterisk uses UDP (the Uniform Datagram Protocol) for the Real Time Protocol.
UDP continuously sends packets, and doesn’t really care to re-send packets if they arrive late, are corrupted, or don’t arrive at all.
Of course you’re thinking, “But, I want to ensure my packets get there!”. Well, yes. You do. But you need bandwidth and good network control to ensure that. Retransmitting doesn’t help you.
Why? Well, suppose you dropped a packet, or there was a network collision that caused a packet to become corrupt, sending it again is possible, but you don’t want to do that. The re-sent packet is useless right now, you needed it to be there a few milliseconds ago. NOW you have new packets that have arrived to make up the voice stream. The old data has become useless. It doesn’t help you to re-create the voice stream that’s coming in right now. So, you’re better off not re-sending it all.
Asterisk doesn’t do TCP for the RTP (Real Time Protocol). It just doesn’t work, and you wouldn’t want to use it anyway.