“Do you even know what TCP/IP is?!” was the question from a friend who had recently taken a Networking Class at an online vocational school. The discussion was fairly heated due to me being Apple-enthusiast and him being a Windows-lover. Although I tried to explain that for my current needs as a webdeveloper – MAC provides me with the graphic interface and simple user friendly OS that makes my job a whole lot easier. For him I said, Windows is perhaps better. Although – I might have said it in a smug voice. Why TCP/IP had anything to do with it – is still a mystery.
Anyway. The point is that I started thinking – do I REALLY know what TCP/IP is? Yes, its about protocols, internet traffic bla bla magic happens – but do I really know? Seeing that Network Principles has always been (at least in my head) my achilles heel, due to never really working professionally with network setup – I could not say for sure if there was more to understand. But like usually in IT – there is ALWAYS something more to know. That is why I were glad the Networking Principles course was coming up this semester.
There are a number of technologies that use TCP as a transport protocol. Three of those I have used the most (and others too), is HTTP, FTP and SMTP. HTTP is of course the internet protocol we use to read websites, FTP is the protocol used whenever I want to transfer files – and SMTP is the protocol used for sending/receiving emails. Three really big and important parts in making the internet useful.
Now, TCP is a connection-oriented protocol that uses a three-way handshake to communicate. This means that the transfer is more secure and all the information arrives like it should – and that makes it more stable. The other type of protocol is UDP, which is a connectionless protocol. The main idea here is that is focuses less on stability, and more on just getting the data sent without knowing if the receiver actually is getting it all. This makes it much faster – but less stable.
To explain one instance, take FTP. What I did a whole lot of in my days as webdeveloper – was uploading entire custom-built Joomla-sites to our server. Now, this was in the days before we had skel-directories that duplicated our pre-defined packages in a matter of seconds – so I had to upload the sites manually via an FTP connection. The one thing I noticed was that we spent hours and hours just doing these transfers. An entire Joomla-directory consisted of thousands of files, and it took forever – although the data in itself was not more than a mere 2-300 MB. Later I tried something new, uploading the entire Joomla-site packed in a ZIP-file – and unpacking once uploaded to the server. This was way faster than before, and this is probably due to how TCP works. For every one of those small files that made up the entire Joomla-site – TCP did a three-way handshake. And only once when uploading the ZIP. Its like your birthday on Facebook – having to say “Thank you” 1000 times to all the congratulations you receive, insted of just writing one “Thank you” as a status update. Well, almost the same. You get the picture.
Without me ever trying to upload to the server via FTP using UDP/IP – I would think that sending the Joomla-site packed would not make it go faster – since the three-way handshake is gone and the data is just thrown in there.