Hier mal ein Erklärungsversuch aus der Sicht eines Netzwerkers.
Zunächst stellt sich mal die grundlegende Frage, ob beide Seiten das gleiche Zählen.
Zählt dein Ipad zum Beispiel jede Übertragungswiederholung eines verlorernen Paketes extra und die Gegenseite tut dies nicht, so wäre die Diskrepanz direkt mal erklärt, aber das wäre zu einfach.
Nutzt das Ipad vielleicht Diversity (sendet die gleichen Daten gleichzeitig an mehrere Basisstationen), dann stellt sich auch hier die Frage wie dein Ipad das zählt und wie der Mobilfunkprovider, aber auch das ist eine zu einfache Antwort
Zählen von einem Datenstrom alleine ist nicht schwer und recht einfach zu bewerkstelligen, deshalb kann das dein Ipad wahrscheinlich ziemlich einfach nebenbei erledigen.
Das verteilte Zählen (es muss ja jede Basisstation mit der du mal verbunden bist die Pakete und deren Größe zählen und an eine zentrale Instanz melden) eines Datenstroms ist schon deutlich komplizierter.
Das verteilte Zählen von vielen gleichzeitigen Datenströmen dagegen ist eine Aufgabe die alles andere als trivial und enorm Resourcenfressend ist.
Das führt dazu, dass der Traffic meistens nur Stichprobenartig (jedes x-te Paket wird untersucht und die Summe dann mit x multipliziert) gemessen wird. Wenn jetzt (statistisch sehr unwahrscheinlich, aber möglich) immer nur Winzlingspakete von dir untersucht werden und die großen immer unbemerkt durchschlüpfen, dann kannst du deutlich mehr Traffic erzeugen als in der Zählung auftaucht. Da gibt es eine ganze Reihe von wissenschaftlichen Arbeiten zu...
Warum ist das Zählen so kompliziert?
Naja, gehen wir zunächst mal davon aus, dass nicht in der Basisstation mit der du verbunden wirst gezählt wird (das würde den Kommunikationsaufwand im Backbone zur Abrechnungsstelle deutlich erhöhen) sondern eher in deinem SGSN (Serving GPRS Support Node - der Name stammt noch aus GPRS Zeiten). Durch den fließen die Daten von allen Usern von einer ganzen Reihe von Basisstationen. Um jetzt zu wissen ob ein Paket von dir oder für dich ist (er muss ja beides zählen) muss er nun also jedes einzelne Paket, das bei ihm ankommt, bearbeiten (sonst kriegt er ja nicht alle mit).
Bei jedem Paket muss der SGSN, also jede Source und Destination IP auslesen und nachschlagen zu welchem Teilnehmer die IP gehört (denn den "kostet" es ja was). Wenn er diesen Teilnehmer gefunden hat muss er sich noch die Summe der Länge aller bisher gesehenen Pakete plus die des aktuellen Paketes merken - und zwar für in und outgoing traffic einzeln.
In der O-Notation geht eine Suche in einer Hashmap zwar in O(1), trotzdem muss dafür einiges an Rechenaufwand betrieben werden um den Hash erstmal auszurechnen. Das 2x für jedes Paket, dann noch die beiden extrem zeitaufwändigen Lese- und Schreibzugriffe auf den Speicher (zum Merken der Paketlänge), der nebenbei auch noch mächtig groß sein muss wenn der SGSN viele Verbindungen verwaltet, und das Übertragen der Daten an die Abrechnungsstelle kostet einiges an Rechenleistung, Zeit und Ressourcen.
Das geht so weit, dass im ISP Backbone Bereich der Geschwindigkeitslimitierende Faktor das Zählen wäre, wenn man es so betreiben würde.
Dagegen ist das Zählen auf deinem IPAD ein Klacks
