The best answer is that IT depends. It depends on many, many factors.
On the host side – how fast are your diskdrives, how busy is your CPU, how big is your bus, what kind of NIC do you have?
Then it hits the wire/fiber – What kind of cable do you have, how good are the terminations, is there any electrical interference on the wire?
Then it hits the network devices – what kind of device is it (hub, switch, router), how busy is it, what kind of packet switching does it use (if it’s a switch), does it traverse a firewall, what size links does it traverse, how busy are the links, is there Quality of Service (QoS) holding it back.
Then it reverses back to the client …
Not to mention what kind of protocol are you using. Some protocols require a lot of overhead – for instance, TCP does a synchronize, synchronize & acknowledge, acknowledge, finish BEFORE it even starts sending data. This is how it establishes a connection and keeps up with what its doing. UDP on the other hand is typically faster, because it DOESN’T use all the overhead to monitor its connection, it just sends and leaves the monitoring to the application. This is why FTP is more reliable than TFTP but TFTP is faster.
Then there’s wireless – a common misperception is that if you buy an 802.11b router, you’re going to get 11Mb throughput and same for an .11g router you’ll get 54Mb (or more) throughput. This is a MAX THEORETICAL speed which you will NEVER achieve. What the marketing folks don’t tell you is that a LARGE percentage of wireless communication is devoted to wireless protocol overhead. So, with an 11Mb connection, you should figure you might get 7 or 8Mb if you’re right in front of the WAP with a 100% connection. As you add distance and other devices, speed drops. Also all that bandwidth is SHARED. Also the WAP will negotiate the speed and will drop the speed of EVERYONE on it down to the WORST connection device. So, if you’re right in front of it, and there’s another user who is 100′ away with a poor connection, guess what your shared speed is to the WAP – 1Mb.
Another VERY COMMON PROBLEM is duplex mismatch. When a user is complaining about speed on my network, I will get their IP address and use ARP and Forwarding tables to figure out which switch and which port they’re on and then examine the Ethernet statistics. I will usually see Frame Check Sequence (FCS) and Alignment errors incrementing. Or I may see Giants and Late Collisions. All of these errors are indicative of a duplex mismatch. This happens when one side of the connection is set to a speed and duplex and the other side is set to Autonegotiate. Depending on the set side, different errors will result. Usually, one side is 100Mbps Full Duplex and the other side is Autonegotiate. The 100Mb side will TURN OFF AUTONEGOTIATION since it doesn’t need it. The Auto side will be UNABLE TO NEGOTIATE since the other side isn’t listening and will assume an older, hub based connection, and WILL SET ITSELF TO BE HALF DUPLEX. So, now you have one side that is just talking full bore and the other side that’s trying to talk and can’t because of the 100 side. When the 100 side is finished, the auto side sends but before the packet crosses the wire, the 100 side starts up again and there’s a collision. But the 100 side has turned off collision detection, so doesn’t realize the collision and the frame comes in scrambled – hence the FCS and alignment errors. The auto side saw the collision but it was late, hence the late collisions. But it’s so nice that Microsoft doesn’t provide us with these error statistics – so the client side only perceives slowness. It’s slow because of the massive errors on the cable and the need for retransmissions which also might cause more errors which cause more retransmissions which cause more …
The moral of the story – if you have an unmanaged switch that you CAN’T set duplex and speed, then the other side needs to be Autonegotiation or set to HALF duplex. If you have a switch set to 100 Full Duplex, the host should be 100 Full Duplex as well – not Auto. Where this causes problems is if the user has a laptop and they take it home to plug into a home network then they will have the “slowness” problem at home. So, there’s a little education for the user as to what the issue is and how to change their NIC – or get some software like netswitcher that will take care of it for you.