Tuesday, May 30, 2023

Computer Networking: Journal 5

In my computer networking class this week, we delved into the intricacies of forwarding, routing, and the inner workings of routers. We gained a deeper understanding of how network devices handle packet forwarding and make routing decisions based on destination addresses. Alongside that, we explored the structure and format of IP addresses, including both IPv4 and IPv6. The depletion of available IPv4 addresses became apparent, emphasizing the need for the adoption of IPv6. We also learned about subnetting techniques and the key differences between IPv4 and IPv6.

Moreover, we covered important topics like the Dynamic Host Configuration Protocol (DHCP) for automatic IP address allocation, as well as intriguing concepts like Software-defined Networking (SDN). SDN involves routers with local flow tables that are computed and updated by a remote controller, allowing precise actions to be taken when a packet matches an entry. Overall, this week's computer networking class provided valuable insights into forwarding, routing, router operations, IP addressing, and the evolving landscape of networking technologies.

Tuesday, May 23, 2023

Computer Networking: Journal 4

For this week in my computer network class, we mainly focussed on network security as-well as a little bit of cryptology. We emphasized the importance of secure communication, ensuring confidentiality for message content and verifying the identities of senders and receivers through end-point authentication. We learned about private and public keys and how they are used as key pairs to safeguard data like messages. In relation to this, we also looked at symmetric cryptology and how it relies on a shared secret key, however, this type of cryptology is more vulnerable to attacks.

Tuesday, May 16, 2023

Computer Networking: Journal 3

For this week in my computer networking course, we explored the transport layer and its protocols, UDP and TCP. UDP operates without establishing a connection, allowing independent handling of its segments. It lacks reliability, as lost or out-of-order segments are not resent or acknowledged. On the other hand, TCP ensures reliable data transfer through sequences and acknowledgments. It also incorporates congestion control mechanisms to manage network congestion. We discussed various concepts, such as multiplexing, demultiplexing, and the implications of pipelining on reliable data transfer protocols. Additionally, we also we delved into calculations like EstimateRTT, DeviationRTT, and Timeout-interval, applying them in assignments, labs, and problem sets.

Tuesday, May 9, 2023

Computer Networking: Journal 2

In my computer networking course this week, we delved into the application layer and protocols that include HTTP, SMTP, and DNS and how these allow network applications to communicate and transfer data efficiently. We also got a look at the different architectural decisions used today. These being: client and server and peer to peer (commonly known as P2P). We learned about the differences between them. For example, client-server architectures relies on a server that is always accessible, on the other hand, P2P lets users have a direct communication between each other.

We also looked briefly at other P2P protocols like BitTorrent and their benefits for scalability, efficiency, and faster data transfer speeds. Lastly, I learned about DNS and its role in translating hostnames to IP addresses, as well as the different classes of DNS servers and the benefits of DNS caching.

Overall, this week's lessons provided a comprehensive understanding of the various components that make up the application layer of computer networks and how they work together effectively. 

Tuesday, May 2, 2023

Computer Networking: Journal 1

This being the first week of my computer network class, and we mostly discussed the fundamentals that make up the internet. I learned about different protocols that make up the internet, including UDP, TCP, and HTTP. Additionally, we used a powerful yet simple tool called Wireshark to examine our own computer's traffic after navigating to a website using a web browser. With Wireshark, we were able to determine how long it takes for an HTTP request to reach our computer.

One of the most fascinating things to me was the use of Mininet. Mininet is a small virtual machine installed on our computers, which allows us to create multiple switches and hosts to experiment with. It was fascinating setting up the virtual machine in VirtualBox and then SSHing into it from my computer's terminal. I also learned some very useful CLI tools like SCP to move files around.

Finally, as a team, we had the opportunity to put our newfound skills into practice by debugging and building a server-client relationship using Python, and using both the TCP and UDP protocols. It was a challenging yet rewarding experience, and I am excited to continue exploring the world of networking in the weeks to come.