Posts

  Week 1 – CST370 – Design and Analysis of Algorithms This week was a combination of week 0 and week 1. We were required to set up a GitHub account, if we did not have one already, to complete our homework assignments with GitHub Classroom. Homework 0 required us to write a program that reads two integer numbers from a user and displays the sum and difference of the two numbers. We also needed to make sure that the difference between the two numbers is always 0 or positive. The purpose of Homework 0 was to get familiar with GitHub Classroom, set up our IDE environment, and submitting to Canvas. The topics covered this week included Euclid’s Algorithm for GCD calculation, important problem types, fundamental data structures, and algorithm analysis framework. Euclid’s Algorithm for GCD calculation is an algorithm that takes two numbers and finds the greatest common divisor by repeating the equality gcd(m, n) = gcd(n, m mod n) until m mod n is equal to zero. The last value of m wi...
  Week 8 – CST– 311 Intro to Computer Networks Module 8 – Security in Computer Networks In this short week 8, we continued with security in computer networks, specifically, firewalls and intrusion detection systems. Firewalls are a combination of hardware and software which separate an organization’s network from the rest of the internet. A system administrator implements a firewall to accomplish three goals. The first goal is that all traffic from outside to inside and vice versa must pass through the firewall. This can be accomplished by placing the firewall at the boundary between the organization’s network and the rest of the internet. It is also easier to manage access when locating a firewall at a single access point to the network. The second goal allows access only to authorized traffic. If all traffic is coming and going through the firewall, it can restrict access to unauthorized traffic. Lastly, the third goal is for a firewall to be immune to penetration. For this...
Week 7– CST– 311 Intro to Computer Networks Module 7 – The Link Layer and LANs This week we covered the link layer and LANs. In section 6.2 we studied the many simple error-detection and error-correction techniques that are used in practice in the link layer. Some of these techniques include parity checking, internet checksum, and cyclic redundancy check. With parity checking, the sender includes a parity bid with the data sent. In an even parity scheme, the total number of 1s in the d + 1 bits is even. With odd parity schemes, the parity bit makes an odd number of 1s. If the receiver finds an odd number of 1-valued bits with an even parity scheme, then they know that at least 1 bit error has occurred. There is also a two-dimensional parity error technique that can help identify and correct the corrupted bit. The internet checksum can be implemented by summing 16-bit integers. Then the 1s complement of the sum is used as the internet checksum and send in the header segment. The r...
  Week 6– CST– 311 Intro to Computer Networks Module 6 – The Network Layer- Control Plane This week we learned about the second part of the Network Layer, the control plane. The control plane is where routing takes place. There are two ways of structuring the control plane, pre-router control and logically centralized control. With pre-router control, each router has its own routing algorithm, and they interact with each other to create forwarding tables. In logically centralized control, a controller interacts with local agents and computes the forwarding tables for the routers. In section 5.2 we covered routing algorithms. There are centralized routing algorithms, which compute the least-cost path from source to destination using full knowledge of the network. These algorithms are called link-state or LS algorithms because the algorithms are aware of the cost of each link in the network. Dijkstra’s algorithm is an algorithm that computes the least-cost path from one node to...
  Week 5– CST– 311 Intro to Computer Networks Module 5 – The Network Layer - Data Plane This week we studied the Network Layer. We learned about routing and forwarding. Forwarding is when the router moves the packets it receives from its input link to the appropriate output links. Routing is the route determined by routing algorithms which the packet must travel to get to its destination. I like the analogy that the power point slides use to describe forward and routing. If you are traveling through the United States by car from Boston to San Francisco, the routing would be the cities and roads you plan to take to get to San Francisco. Forwarding would be the process of entering and leaving each city because you will enter through a certain road (input port) and must choose which road you need to take to leave the city. We also studied some of the scheduling algorithms which we have become familiar with throughout the program. Because packet loss occurs when packets arrive at...
  Week 4 – CST– 311 Intro to Computer Networks Module 4 –Security in Computer Networks This week we covered Network Security. With secure communication, the goal is to achieve confidentiality, message integrity, end-point authentication, and operational security. Confidentiality means that only the sender and the intended receiver should be able to understand the contents of the transmitted message. Message integrity ensures that the content of the messages is not altered on purpose or by accident during transit. End-point authentication allows the sender and receiver to confirm the identity of the party with which they are communicating. Finally, operational security is how users or corporations can counter attacks like depositing worms into the network, obtaining private documents, and launching DoS attacks. The bulk of this week was focused on cryptography. Cryptography allows the sender to mask the information to prevent intruders from gaining access to the actual informa...
  Week 3 – CST– 311 Intro to Computer Networks Module 3 –Transport Layer This week we studied the transport layer in more detail. While the Network Layer offers logical communication between hosts, the Transport Layer offers logical communication between processes. The two options made available to the application layer for transport-layer protocols are the User Datagram Protocol (UDP) or the Transmission Control Protocol (TCP). The UDP is an unreliable connectionless transport that does not guarantee data delivery or, if delivered, it does not guarantee that the data will be in order. TCP on the other hand, provides reliable in order delivery as well as congestion control, flow control and connection setup. This chapter also covered multiplexing and demultiplexing. Delivering the data in a transport layer segment to the correct socket is called demultiplexing. Multiplexing is the gathering of data chunks at the source host from different sockets and encapsulating each data c...