Posts

CST 334 - Module 5

 Week 5 This week, we delved into the network layer of the internet. The network layer is what transports segments from sending to the receiving host. The sender encapsulates the transport layer segments into datagrams, which routers can use to deliver it to the receiver. Two important functions of the network layer are forwarding and routing, where routing determines the route taken by packets form source to destination, and forwarding is where each router moves a packet from the input to the appropriate output.  You can consider there are two planes in the network layer. The data plane, which is where the per-router functions occur, such as forwarding, and the control plane, which is network wide, such as routing. A lot of what happens in the network plane is handled by routers, which is where the forwarding takes place, and uses forwarding tables to do so. However, this cannot be possible without the Internet Protocol. There are two formats, IPv4 which uses a 32-bit identifier using

CST 334 - Module 4

 Week 4 This week's material was focused on network security! There are many ways people can try to intercept and replay data packets being sent to and from network edges. This is not something that can cause damage in the real world and be very costly as well. Some topics included cryptography, more specifically symmetric key and public key encryption. Symmetric key means that both clients (or client and server) use the same key to encrypt and decrypt data being sent to each other. Public key encryption is quite different as it uses a public key known to all who can see the packets. However, to decrypt, the receiver must use their private key known only to them in combination with the public key. However, if data can be replayed or in other words clients can impersonate each other, then how does any of the encryption/decryption method benefit us. Well, there are a couple of key aspects to this. One being digital signatures, where the sender uses their own private key to encrypt a

CST 311 - Module 3

 Week 3 This week's material was very more focused on the transport layer. One topic was multiplexing and demultiplexing. To sum the topic up, this is how data is handled from multiple sockets using a transport header. The multiplexing occurs at the sender, using the transport header containing the source and destination port number, then demultiplexing occurs at the receiver, which allows the receiver to deliver the received segments to the correct socket. There are also two variants of these, connectionless demux and connection-oriented demux.  More on the topic of connection and connectionless transport, connectionless refers to the UDP protocol and is considered bare bones, there is no handshaking and each UDP segment is handled independently. What makes it bare bones is the fact that there is no effort in flow control, delivering data in order, reliable data transfer. However, it can be implemented at the application layer. On the other hand, with connection transport (using T

CST 334 - Module 2

 Week 2 This week's material covered more information about the application layer of protocols such as HTTP, SMTP, and DNS. The reason for these different application layer protocols is to define certain rules, syntax, and what messages are exchanged. This can correlate to how certain applications communicate with servers and clients, for example, email uses the application layer protocol SMTP, the web uses HTTP, and file transferring uses FTP. Additionally, one must consider what transport protocol service you need when sending data to and from clients or servers. For instance, can the app tolerate small amounts of data loss (audio) or timing (video games). Using TCP allows for reliable transport, flow control, congestion control, but does not offer security. UDP is unreliable and does not provide many of what is offered in TCP. Other aspects of the networks that we learned about involve persistent and non-persistent HTTP connections, which essentially determines if a single TCP c

CST 311 - Module 1

 Week 1, We begin yet another course, only this time the topic is about computer networks. I am generally excited about to learn more about computer networks and the internet. Everything is connected to the internet these days and now I get to learn how to utilize and understand it. Like what is stated above, this is the first week, so the material is aimed at getting us students to become familiar with the software being used in the course, such as using multiple virtual machines, Python, and Wireshark to "sniff packets" being sent to and from the selected VM or host computer. Besides the software, we were also given textbook material to read ("Computer Networking" by James F. Kurose; Keith Ross) which introduced us to the basics of how the internet functions. Some notable takeaways from chapter one is that the network edge consists of hosts (basically clients and servers), access networks such as DSL, FTTH, etc., and the network core which is a mesh of interconnec

CST 334 - Module 8

 Week 8, This final week served as a recap for all the things we learned in the second half of the course. With both concurrency and persistence. However, I would like to continue to talk about persistence as it was a very dense topic. Last week, I had briefly talked about some of the things that were covered in the material, but not why they were important. As everyone knows, hard drives or solid-state drives are important. They hold data for our applications, photos, videos, etc. It is common for people to view it simply as storage, which it is to be fair, but really it should be viewed as a way for the computer to remember things after it is shut down, or a process finishes a task. We want data to persist. When the computer shuts down, it forgets a lot of data, including the OS. When the computer turns on again, it grabs the OS from the hard drive and loads it in the main memory. The hard drive's control block contains information about how data is stored on it, which allows the

CST 334 - Module 7

 Week 7, This week's topic covers persistence, more specifically, persistent storage. First we read about I/O devices and how they work. This includes the DMI, eSATA/SATA and USB, and how they can connect to an I/O chip to communicate to the CPU. This is important especially considering this is how we connect storage devices like hard drives. After learning more about how the hard drive works by spinning the disk and reading and writing to it using the disk arm and head as well as the important things stored in it such as the superblock, inodes, bitmap, and data region. To put everything briefly, there is a lot that goes on under the hood when it comes to reading and writing to the hard drive, with a large amount of effort being used to decide how to read/write to better optimize for performance, capacity, or persistence. After figuring that out, we also talked about file systems, which allows the OS to manage data on a hard drive or other I/O devices. There are different ways to d