We studied the Computer Networks course adapted from CMU 15-441 this semester, and I have learned a lot. In this post, I will give an overview of the network architecture from my understanding.
Computers are connected using wires (Here we ignore wireless networks). If two computers speak at the same time, their signals will corrupt. Therefore a protocol is to handle this condition. As a result, wire-connected computers composes a network (we learned the Ethernet protocol, but there are others).
If there are too many computers, the protocol may lose efficiency. The philosophy of computer science comes to help us. We add some kind of layering. By this kind of layering, we can avoid signal corruption. The equipment we use is called Router. The routers connect together, and each router has two interfaces, one is to connect other routers, and the other is to connect the lower layer computers.
Since there are more and more routers, if one computer wants to speak to another, the router must know exactly where to forward this signal. The routing algorithm is used to deal with this task.
However, the memory of the router is limited. For the sake of scalability, more layers should be used. BGP is used to add this layer. CIDR is used to cut IP spaces in order to alleviate the memory pressure of routers.
The topology of our network is established, and this course visited some concept and mechanisms used in data-link layer and transport layer. Encoding, checksum, TCP protocol and so on are introduced.
This post is behind schedule because my rake is broken for some unknown reasons. I reinstalled something to make it work. Next, I will write a post telling the story about some online package manager, such as apt-get, yum, brew, port, npm.
And I had to fix the rsa key problem before I can deploy. Things change quickly, and think some other new features corrupt this part. It is necessary to make things stable throughout time.
By the way, Microsoft bing dictionary is really powerful! It deserves a try!