Web browsers work in two main ways. These can be distinguished in the URL. Eg http://www.theyworkforyou.com is insecure. https://www.twitter.com is secure.
If, for example, you try to use twitter in an insecure manner it automatically switches to a secure link.
The data that passes between two insecure web links can be tracked by anyone who has access to any of the networks that the data passes on. There are programs such as packet sniffers that are created to do this. Obviously the Internet Service Provider (ISP) can do this. However, data that transfers in a secure manner cannot be tracked. The secure system is called SSL Secure Sockets Layer.
The way it works is that a system called asymmetric key encryption is used to exchange a session encryption key between client and server. The server first passes out what is called a certificate with details of a number that can be used to encrypt a message. The client then encrypts the session key using that number. The system is asymmetric in that a different number is used to decode the session key than is used to encode the session key. Hence it is possible to encode the session key in such a way as only the server (and no-one in the middle of the conversation) can decode it.
This is normally done with the Rivest Shamir Adleman (RSA) algorithm which is based upon the mathematical rule that factoring the product of two very large prime numbers takes a very very long time.
This is that if n=pq (p and q being both prime numbers) and m=(p-1)(q-1) and E a number selected to be coprime with m (ie it has no common factors) and D is another number selected so that DE mod n=1 then if your session key is x
y=x ** E mod n (** to the power of)
and the magic is that x=y ** D mod n
So E (plus n) is your public key and D (plus n) the private key. The client encrypts the session key with the public key and the server uses the private key to decrypt it. To get the private key from the public key you need to factor n.
If you pick long enough session keys and long enough prime numbers it is not practical to break the encryption. (it takes too many centuries of processing).
Hence if you are using SSL all that can be tracked by a "man in the middle" is which IP address is being used for the server. It is not possible to know which web pages on that server are being looked at or even the domain of the server.
The IP addresses are the numbers of each computer. You can find your public IP address here.
The same can be done for email. Furthermore it is possible to use onion routing to conceal what the destination IP address is. Hence no useful information can be obtained by people getting access to the communications between client and server.
Hence unless the state bans the use of encryption (which is used for credit card transations) then ISPs are unable to pick up any useful information about what people are doing on the net.
Obviously the state could require everyone to have a chip implanted in their skull to record all communications, but I don't think that would enthuse people.
The above, however, is why the snooping bill won't acheive anything.
If you want me to respond to any comment please either comment only on the past few entries or put something in your comment to make it clear what you are commenting on (the URL would help). Otherwise I will not be able to find the comment quickly and will not respond.