As redes de celular provavelmente têm altas latências, portanto, o tempo de ida e volta de seus pacotes provavelmente está em algum lugar na magnitude de até um segundo. Basta verificar isso emitindo um ping para algum host da Internet com uma latência constante conhecida, por exemplo:
# ping www.gogle.de
PING www.l.google.com (74.125.79.99) 56(84) bytes of data.
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=1 ttl=53 time=12.7 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=2 ttl=53 time=16.1 ms
64 bytes from ey-in-f99.1e100.net (74.125.79.99): icmp_seq=3 ttl=53 time=17.2 ms
^C
--- www.l.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 12.794/15.377/17.218/1.886 ms
O TCP é capaz de se adaptar a redes de alta latência devido ao seu buffer interno e capacidade de enviar uma quantidade razoável de dados sem a necessidade de receber respostas imediatas, portanto você pode ver boas taxas de transferência para transferências em massa com sua conexão. Mas a alta latência, obviamente, terá um grande impacto no desempenho dos handshakes TCP (ou seja, no início da conexão) e em todos os protocolos "ping-pong" nos quais um lado aguarda a resposta do outro antes de fazer qualquer processamento adicional (como HTTP com muitos pequenos objetos para buscar, pior ainda se eles dependem um do outro como seria o caso com frames e iframes e arquivos javascript incluídos).
Editar: você deve usar algo como Firebug para ver o que está acontecendo com mais detalhes. Ou até mesmo executar um rastreamento Wireshark para obter informações em nível de protocolo. Se você obtiver dados apontando para um problema com o ISP, talvez queira fazer uma reclamação para eles. Além disso, usando uma MTU menor pode valer a pena tentar - algumas transmissões podem sofrer de blackholes MTU .