Highlights

Highlights


Ramblings


Ramblings


Quick guide

This is a picture of my son when he was young.


RDRAM uses fast DRAM accesses for clock speeds at 266MHz, 30MHz, 356MHz, and 400MHz. This allows for transfers of up to 1.6 GB/s (twice the transfer rate of 100MHz SDRAM).

The AGP 2.0 interface and faster memory (Direct Rambus) allows the graphics controllers to access main memory at over 1 GB/s (more than twice the speed of AGP 1.0). This provides for photorealistic 3D graphics. New streaming SIMD extensions also enhance 3D graphics performance.

Best file compression around:
 DEL *.* {DOS}
or rm Ėr *.* {UNIX}
gives 100% compression

 

Isn't that interesting?

 

Home - Fun - TCP

Rambling on TCP

<< Back

So what really makes the Internet  work? Why does the WWW  work so well? How can we run so many applications over the Internet at the same time? How do we know that our data  has been received? How does the data actually know how to get to a certain destination? Well, itís to do with TCP , IP  and routing protocol s . These three parts make the whole of the Internet work, and work reliably. The IP part is responsible for getting the data packets from the source  to the destination (using the IP address ), the TCP part is then responsible for sending the data to the required application program (using TCP sockets and sequence number s), and the routing protocols are responsible for passing on information  about how to get to destinations (using protocols such as RIP ). Isnít it wonderful how a user can run a few WWW browsers, a TELNET  session, an FTP  session, a video  conferencing  session, and it all works, seamlessly, even if there are multiple destinations. Well itís really Mr IP whoís sending the data to the right place, and deciding if the data on the network is for them, and Dr TCP who either tags all the outgoing data and clearly identifies the virtual connection, or reorders and passes the received data to the required application. But, Dr TCP is no egg-head who lives in the realms of academia, he makes sure that all the data is properly received, and makes sure that anything that he sends, he gets a signed receipt for. If he doesnít get a receipt, heíll resend his data. But, what if the place that heís sending the data has blown-up, or thereís a postal strike. Well Dr TCP has that side covered also, he sends the data again, and then waits for a time-out period. If no data is received, he gives up.

TCP  and IP  unite the world and allow everyone in the world to communicate, no matter which computer they use, which operating system  they are running, which language they speak, or which network they use. It fits onto virtually every type of networking technology. Itíll work with Ethernet , ATM  (although with some difficulty), FDDI , ISDN , Modems , RS-232 , blah, blah, blah. So, whom should we thank for giving us these two great protocols. Of course DARPA  should be congratulated for conceiving it, but the main award must go to the shy, but dependable workhorse of the computing  industry: UNIX . Through UNIX, TCP, UDP  and IP have been allowed to blossom, and show their full potential.

      UDP  transmission can be likened to sending electronic mail . In most electronic mail packages the user can request that a receipt is sent back to the originator when the electronic mail has been opened. This is equivalent to TCP , where data  is acknowledged after a certain amount of data has been sent. If the user does not receive a receipt for its electronic mail then it will send another one, until it is receipted or until there is a reply. UDP is equivalent to a user sending an electronic mail without asking for a receipt, thus the originator has no idea if the data has been received, or not.

      TCP /IP  is an excellent method for networked communications, as IP  provides the routing of the data , and TCP allows acknowledgements for the data. Thus, the data can always be guaranteed to be correct. Unfortunately there is an overhead in the connection of the TCP socket, where the two communicating stations must exchange parameters before the connection is made, then they must maintain and acknowledge received TCP packets. UDP  has the advantage that it is connectionless. So there is no need for a connection to be made, and data is simply thrown in the network, without the requirement for acknowledgements. Thus UDP packets are much less reliable in their operation, and a sending station cannot guarantee that the data is going to be received. UDP is thus useful for remote data acquisition where data can be simply transmitted without it being requested or without a TCP/IP connection being made.

      The concept of ports and sockets is important in TCP /IP . Servers wait and listen on a given port number . They only read packets which have the correct port number. For example, a WWW  server  listens for data  on port 80, and an FTP  server listens for port 21. Thus a properly set up communication network requires a knowledge of the ports which are accessed. An excellent method for virus writers and hackers  to get into a network is to install a program which responds to a given port which the hacker uses to connect to. Once into the system they can do a great deal of damage. Programming languages such as Java  have built-in security to reduce this problem.

      So why does TCP  have a PhD, and IP  doesnít. Well TCP operates at a higher layer and allows the whole system to operate reliably. It does an excellent job, whereas IP is a child that has grown up too quickly for its own use. Itís excellent the way that IP has created a world-wide addressing  structure, but itís limited. Why is it that my IP address  is 146.176.151.130, while the address of a computer in the same street, that uses the same Internet  connection has the address of 138.154.33.100. Well itís because the IP address gives no indication about the location of a node. Thus, we need complex routing protocol s , in which routers  use to pass information  about the best way to get to a node. Some of these routing protocols, like IP, have grown up too quickly, and have outgrown their usage. The worst offender is RIP , which basically defines the number of hops (the number of routers in the path to the destination) that it takes to get to a destination. Unfortunately the maximum number of hops is defined at 15, thus if a destination is more that 16, the destination is not reachable. The other problem with RIP is that itís a bit lazy, and basically doesnít try too hard. It doesnít want to know about the bandwidth  of a connection, or reliability, or its cost. Hop count  is hardly very taxing on computing  the best way to get to a destination. Just imagine if you were a car driver, and when you looked at a map you choose the route which has the minimum number of junctions. This could take you around country roads, or through congested roads. Normally we would pick the route that allows the highest average speed (the highest bandwidth), rather than the one with the minimum number of junctions.  

      So the Internet  we have is the Internet we have. TCP , IP  and RIP  are there, and theyíre not going to be moved for a long time. But the great thing about the Internet is that itís not going to go away either. It also allows for migration . The key to this is found in IP which can exist on its own with any other transport protocol above it, and it allows for different version , which will allow the Internet to migrate away from the current setup towards a more sensible structure (such as one based on area codes). IP addresses are also very static . If you move your computer from one network to another you must change your IP address. This normally requires skilled operators  to make it work. Why can the network do it for you? In the next chapter, letís have a bit of fun, and look at how the Internet could look in the future.

      In this chapter, and Appendix C, I have presented the two opposite ends of code development for TCP /IP  communications. The C ++  code is complex, but very powerful, and allows for a great deal of flexibility. On the other hand, the Visual Basic  code is simple to implement but is difficult to implement for non-typical applications. Thus, the code used tends to reflect the type of application. In many cases Visual Basic gives an easy-to-implement package, with the required functionality. Iíve seen many a student wilt at the prospect of implementing a Microsoft  Windows  program in C++. ĎWhere do I startí, is always the first comment, and then ĎHow do I do text inputí, and so on. Visual Basic, on the other hand, has matured into an excellent development system which hides much of the complexity of Microsoft Windows away from the developer. So, donít worry about computer language snobbery. Pick the best language to implement the specification.

© W. Buchanan, 2000