currently we use an industrial computer board running XP. The same problem, but all ready to use. You need an account at dyndns (www.dyndns.org) and run a dyndns client. Each time the ip adress changes (with a new connection) this client reports the new ip address to dyndns and this sevice maintains a list to translate a name (which is always the same) to the current ip address. Works for some stations over the last ten years without any problem.
In the meantime I found an implementation of such a client in MF, so this is more or less solved. Maybe there is a bug in it, but nothing that can’t be solved I guess.
I am not familar with the deep layers of Internet (for now). Did the data connection of this Cellular Radio send data packages of same size, or is this data of dynamic length?
Guess it is same size, it would be easy (and industrial standard) to implement a ring buffer, which can hold some such packages. The background fills this buffer using the DMA ontroller which is a masterpiece from Atmel compared to impementation of other companies. You can pump data in at very high speeds without disturbing the CPU.
The foreground is running a thread (the web server) which takes this packages out of the ring buffer and do what ever needed.
The cellular Radio moduls also implement Start/Stop in hardware using RTS/CTS and software, XON/XOFF, even if the buffer gets full, there will be no problem.
Processing it character by character in a ISR is a very simple implementation.
If the data is of dynamic length, things going little more tricky. But buffering is still possible.
And this works the same other way round. The chip has more than one DMA layer, so simultaniously sending and receiving of data packets could be done all in HW and so really fast, as we have a 400MHz machine.
So I hope it is possible to get this running more or less.
Find more Infos at http://www.atmel.com/Images/Atmel_11055_32-bit-ARM926EJ-S-Microcontroller_SAM9X35_Datasheet.pdf page 447 ff.
With best regards