I am using a modem, and it shows a download speed of n kbps and an upload speed of m kbps. When I check its logs, it shows the amount of data downloaded and uploaded. I'm wondering why it shows that I've uploaded 3 MB of data in an hour, which seems excessive when I never upload anything or use torrents.

So what am I uploading when I'm surfing the web?

5 Answers 5


For more details on how TCP connections and acknowledgments work, see Diogo's answer

When you visit a site, something like this happens:

  1. A connection is made with your DNS server (if not already done) of which your computer already knows the IP address of (or through some automatic mechanism that requests this information from your ISP), sending packets in order to connect and to acknowledge the connection has been made. After the connection has been made, your site asks the IP address of the site you visit such that it knows what computer to contact to get the site. This means it sends a packet containing the domain name to get that response. Later it also sends a packet to close the connection.

  2. A connection is made to the web server which hosts the site you want to visit, this again sends a packet to connect and to acknowledge the connection. After that it makes a request for the page you want to visit, again sending a packet. Then it responds and you get served the HTML of the web page which indicates the structure of the page (not the layout).

  3. Because you only have the structure, you still need to fetch the rest. So, additional requests (a SU question is like 40 requests) are made to get scripts, styles and media like images and the like. And because some of these might not be on the same web server as you visit, additional DNS resolving might take place bringing you back to step 1.

  4. On top of that all, note that every packets you receive are acknowledged adding yet another source of data that gets uploaded, to spare out on packets usually multiple packets are acknowledged at once. Thus, when you receive something you will send to the server that you have received it so it knows that what it send didn't get lost somewhere. That way, the server doesn't have to try sending it again.

The bottom line is that you can't download something without first connecting and uploading some requests to the servers you are downloading from. And that's what makes up for a little upload...

And it's not like that you only click, you do more than that, let's take your question as an example: You have typed around 500 characters, a character counts as 1 byte (if ASCII character, all are in this case) and can be from 1 to 4 bytes (if an Unicode character). So, your question actually takes 0.5 KB or 0.00005 MB! But it's not just the question that gets send to us, it's also surrounded by a POST or AJAX request which asks the server to store your question and the packet headers itself.

If you add everything up it becomes reasonable to reach a few megabytes in a few hours or so.

  • 1
    Attempted to outline William's answer while referring to Diogo on the go, go upvote them too! :) Commented Aug 11, 2012 at 15:23
  • 2
    And I tried to be quick when I should have written a detailed answer like this! I always seem to miss out on these answers that sky rocket!!! Commented Aug 13, 2012 at 10:14

Your upload is based primary by the requisitions that you do on typing an address(www.google.com for example) to a webserver to request a HTTP connection to that site. After these requestions, the next point of uploading are ACKs (Acknowledgements from TCP connections on HTTP protocol) on its handshake process:

In data networking, an acknowledgement (or acknowledgment) is a signal passed between communicating processes or computers to signify acknowledgement, or receipt of response, as part of a communications protocol. For instance, ACK packets are used in the Transmission Control Protocol to acknowledge the receipt of SYN packets when establishing a connection, data packets while a connection is being used, and FIN packets when terminating a connection.

To exemplify, take a look at the TCP diagram(you use TCP on surfing on Internet):



When you are online, quite simply, everything that comes from a remote target is a download and everything you send is an upload.

So, even simply requesting a webpage will consist of your machine (most likely) making a DNS request, connecting to a web server, sending a request for a page, then sending a request for each element/picture/css/javascript on that page.

3MB for an hours usage isn't really that much!

  • when I request a page then everything related with that page comes automatically or for each element a separate request goes that you mentioned? Commented Aug 11, 2012 at 15:00
  • 1
    @Debabratta a separate request is sent for each resource. One for the page (with the content - text, markup - layouts etc), one each for the various images, javascript files, css files that are referred in the page. (Sometimes the browser uses the cache - the copy of the image that you downloaded the last time you visited the page. But this also involves a request to see whether the image has changed). Requests from flash, silverlight or other such plug ins also add up.
    – Nivas
    Commented Aug 11, 2012 at 18:42

More than ordinary TCP and HTTP packets, you should also learn a bit about some special informations which are captured by trackers. Get informations on the Ghostery dedicated website.

They only make necessary data bigger!


A simpler breakdown:

  • TCP packets to open a connection to server
  • HTTP request packets for each component of a web page

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .