Tuesday, October 1, 2024

CST 311 - Week 5

 This week we took a dive into the network layer, which is widely considered to be the most complex layer of the protocol stack. The main role of the network layer is to move packets from a sender to a receiver. Because of this, two functions in particular are very important -- forwarding and routing. Forwarding refers to the router-local action of transferring a packet from an input link interface to the appropriate output link interface. Routing on the other hand refers to the network-wide process that determines end-to-end paths that packets take from source to destination. We also looked over different types of packet scheduling -- FIFO, Priority Queuing, Round Robin, and Weighted Fair Queuing. Next we took some time to learn about IP address and how to convert between binary and dotted-decimal notation. We also covered DHCP, or the Dynamic Host Configuration Protocol, which is a client-server protocol that allows a host to obtain an IP address automatically.

 Overall this week contained a wealth of information and I'm not sure I've wrapped my head around it. I'm about halfway through the optional worksheets and I intend to finish going over those in order to get a better grasp on the concepts before the final exam next week.

Tuesday, September 24, 2024

CST 311 - Week 4

 Most of my week 4 was spent studying for the midterm. I knew I was struggling with computing the transmission times, so I focused on that. Luckily it paid off and I did better than anticipated on the exam. Unfortunately, two of the questions I missed were errors concerning JEDEC standard vs SI. I thought that I had considered that in my calculations, but I will be sure to double check for the next exam.

We also began work on the network security section of our text. I'm excited to start this section as I was obsessed with code-breaking as a kid so I'm hoping that interest will translate to understanding. So far, the different encryption algorithms are a little over my head, but I know they play an important role in modern-day security, so I am hoping as this section continues I will develop a better comprehension of them.

Monday, September 16, 2024

CST 311 - Week 3

 This week's reading concerned the transport layer, the services it offers (multiplexing, demultiplexing, reliable data transfer, and flow/congestion control), and the protocols involved (UDP, TCP). In comparison to the network layer, which is the logical communication between hosts, the transport layer works as the logical communication between processes and relies on the network layer. The two transport layer protocols are TCP and UDP. UDP is a connectionless protocol that is unreliable and unordered, whereas TCP  is connection-oriented, reliable, and offers flow and congestion control. While it seems unlikely that anyone would choose to utilize UDP over TCP, we learned of a few circumstances where UDP is the better option. We looked at the idea of multiplexing/demultiplexing, which involves funneling and distributing data. The metaphor of entering/exiting a freeway really helped me to understand this concept. Next, we learned about the principles of reliable data transfer and the strategies TCP uses to guarantee this. 

 Outside of lecture, we completed the team programming assignment which had us creating our own version of a UDP Ping service and a UDP Heartbeat. There were also two individual labs to complete which dealt with traffic and congestion control. These were more of a struggle to me as I'm still trying to wrap my head around calculating delays and such. In addition, the Mininet graphical interface wasn't cooperating as well as I'd hoped, but I got it sorted out in the end.

Wednesday, September 11, 2024

CST 311 - Week 2

Chapter 2 covered the application layer and HTTP, which is the application layer protocol. This chapter helped us to get a better understanding of how data is transferred over the web and the key differences between non-persistent and persistent HTTP. The chapter also covered SMTP, the protocol concerning e-mail and DNS, or the web's domain name system. This was especially interesting to me to see how a computer handles web site information needing to be both computer and human-readable.

We also dove more into Wireshark and how to expand the query and response messages in order to get information. Worksheet 4 helped us to identify IP addresses, version number, headers and values and the URL in question. Worksheet 5 helped us practice calculating response time and determining the differences between PSP and Client-Server architecture. In general, these worksheets have been very helpful for me to practice the concepts explained in the text.


Tuesday, September 3, 2024

CST 311 - Week 1

 This week we read over Chapter 1: Computer Networks and the Internet. This chapter covered what makes up the internet from two perspectives: nuts-and-bolts and  as a service. The nuts-and-bolts description of the internet considers the actual hardware and software that makes up the internet, where the alternative considers the internet as a network infrastructure that provides services to applications. We took a brief look at protocols, which define the order and format of messages exchanged between two communicating entities. Between the reading and the problem set, we looked at delays and throughputs and how to calculate them. The equations are simple enough, but remembering how things are related is something I need to look over again. For the lab, we got our virtual machine environment set up and began learning how to set up a simple "network" of our own. We also were introduced to Wireshark, which is a network protocol analyzer that lets you look at traffic in real-time. This was especially interesting to me as you don't really think about how much is going on on your computer at any given time.

Friday, August 9, 2024

CST 334 - Week 8

 In computer science, persistence is necessary for most programs. Persistence is when data is maintained even in the case that the process crashes or exits. For example, in the last class, we created an application that stored user data. Even after killing the application, we would be able to log in with those credentials when re-opening the app due to persistent data. When a user writes a letter in Microsoft Word and wants to save it for later, they save the file to a certain folder and the software does the rest. In this module we learned the basics of how a hard drive works and how files and directories make up the interface for how our system stores data.

As a computer science student, we are challenged every day to expand our thinking and wrap our head around complex concepts. We must continue on in the face of these challenges in order to grow and improve our skills. For me, this class was an especially good opportunity for me to be persistent. Computer architecture has always been my weak spot, but I know that if I keep pushing myself it will all be worth it in the end.

Tuesday, August 6, 2024

CST 334 - Week 7

 For this section we first learned about I/O devices and how they interact with an operating system. One thing that stuck out to me in this section was how components that require high performance, like a graphics card, are located near the CPU and lower performance components are located further away. Slow devices would be connected to a peripheral bus, while those high-performance devices would be connected via PCI, or Peripheral Component Interconnect. We next covered hard disks in more detail, reading about basic disk operations and scheduling I/O requests. Following this, we covered RAID, or the Redundant Array of Inexpensive Disks, which is a technique use to build a faster and more reliable disk system. This works similarly to a computer system whose responsibility is managing a group of disks. Finally we learned about file systems and how they work to promote persistent storage.