Well, Mitch did a darn good job of explaining all of this, but I'll still throw in my two cents...
>Question 1. Is the calculation: <number of possible users> = <permanent >speed> div <users connection speed> correct ? (ie. 512K / 33.6K = 15.238... >users) Like Mitch said, this assumes that everyone's going to be downloading at the same time. Since you say that you want to connect to "the WWW", I'm assuming you're going to be doing lots of web browsing. Web browsing is a pretty feast-and-famine kind of net usage, where you need a whole lot of bandwidth for a few seconds, and then none (while you, the human, are actually *reading* the web page). Because of this, you can (and I have) run a couple of people through one modem. USUALLY, neither person will notice anything at all, since their network usage will be scattered enough such that it won't collide with the other's. So, essentially, the only thing that's really happening is that you're increasing the *utilization* of the line. Occasionally, however, when you are trying to browse and your roommate is downloading something big, you'll get a little frustrated. So, suffice it to say that, as a general rule, two people sharing a 56K connection will be much happier than two people each with their own 28K. Provided your network usage doesn't collide too much, you'll both experience increased network speed. >- I imagined that a high speed connection such as 512K would support 1000 >users not just 15 ! It does.... for the very reason I mentioned above. Another thing that you can probably benefit from if you have a lot of people is caching. If you have a caching proxy server, you can avoid downloading pages over and over again for each user. The nice thing about caches is that they are more likely to contain the more popular web pages... which are the ones you're more likely to want. So, that can help you further economize on your bandwidth usage. >Question 2. If we do not intend to host our own web pages on our computer >do we need to use a web server such as Apache ? If not, what is the >mechanism for accessing the web through a single computer ? Well, if you use a Linux box, there are three ways. Mitch mentioned two of them. 1) A proxy server. Basically, everyone would configure their browser to connect to the local linux box and ask for it to retrieve the file. Most proxy servers also do caching. Look into "Squid", like Mitch said. I've used it... it's great. The problem with just using Squid or something is that it only lets you browse. Sending/retriving e-mail, reading newsgroups, running ICQ, Yahoo chat, etc.. are all things that you'd need to solve individually... usually by running the software for each on the linux box. 2) IP Masquerading. This lets all of your machines in your house connect to any other machines on the net. Web, mail, newsgroups... they'll all work. However, IP masquerading doesn't really handle UDP packets, so you still can't use ICQ without setting up something like a socks5 proxy or something... and you can pretty much forget about running networked games like zone.com's Tanarus, Fighter Ace, etc... and things like Diablo... and probably the Quake series, too. Also note that masquerading is a fairly secure way of putting all of your machines on the net, since all of your machines can establish connections to machines in the outside world, but those outside machines can't establish a connection to yours (so you can't run web servers or FTP servers on the machines that aren't the dial-up machine). 3) IP Tunnelling. This is serious voodoo. I'm currently trying to implement this at my house. For IP tunneling, you need to find an ISP (not necessarily the one you use to connect to the net through) or any other net-connected entity with it's own set of IP addresses to allocate a set of IP addresses to you. Then, they set up some routing so that, when packets come into their facility addressed to one of the IP's they gave you, they forward the packets to your Linux box, which then delivers the packets to the appropriate machine in your house. The cool thing is that it works for TCP and UDP so you'll be able to run all of those cool multi-player deathmatch-type games through battle.net and zone.com or whatever. Be warned, though. People will be able to connect to your machines. Make sure that your machines are suitably guarded against intrusion. Also, with the Linux box, you can set up a dial-on-demand system, that will hang up the line when nobody's using it. The cool thing is that you can set different timeouts for different protocols. For example, you can have it stay on for 10 minutes after the most recent http request, 4 minutes after the last mail transfer, 2 minutes after the last domain-name lookup, etc. If you don't want to use a Linux box, you can use a program called WinGate that does a lot of caching-proxy stuff... it's a lot easier to configure, but doesn't have as many tricks up its sleeve. But, if all you want to do is surf the web, it might be just what you want. >Question 3. If we use Apache (or other server software), how does it work >??? If the document wasn't already cached, Apache or Squid would download the document (oh behalf of one of the other machines) at the maximum speed of the dial-up link... say, 128K for an ISDN connection. Then, it gets transferred to the requesting machine at (what I'm assuming to be) ethernet speeds, or 10Mbps... virtually instantaneously. So, for the end user, it looks like a 128K connection. However, if the document *is* already cached, then the proxy can just serve it up without having to download it over the ISDN link again... so, retriving a cached document would seem *much* faster than 128K. - Joe