Showing posts with label CST 311 Intro to Computer Networking. Show all posts
Showing posts with label CST 311 Intro to Computer Networking. Show all posts

Tuesday, June 14, 2016

CST 311 Week 8

Week 8

The material for this week is much smaller because it is due the same night that week 7 is supposed to complete. Because of this, it's also been a very rough final week with regard to assignments. The material assigned for this week covered the link layer and switches. This seems like a pretty straightforward topic after covering routers in the previous week(s). The routers send data (datagrams) based on IP addresses and the switched send data (frames) based on MAC addresses. Switches are intended to be used within a network.

I'm really glad this course is coming to an end. I've enjoyed it in the sense that it has been challenging and I feel I've learned a lot, but I'm exhausted and it's been very difficult to maintain my study discipline. There are three days until the final exam. I have spent the past seven weeks studying consistently in my free time. I'll likely relax a little and do some light review each night leading up to it. Because this is not a subject I'm already familiar with, I'm less focused on my grade for this course and have been more focused on actually understanding the material. I know it'll be useful in my career (it already has been a bit!).

Wednesday, June 8, 2016

CST 311 Week 7

Week 7

This week has been very difficult because it's a full week of material and we also have to do slightly more than half of week of material ("week 8") during the same week. Both weeks opened at the same time and close at the same time. I wasn't too worried about it until I got to homework #10, which was to come up with the routing table for a particular node in a network using the distance vector algorithm. I wanted to make sure I completely understood it (it took a lot of videos and reviewing the textbook). The textbook wasn't very helpful for the distance vector algorithm. It does a good job of explaining what's happening in the network, but doesn't use accurate mathematical syntax and has a some very confusing pseudocode to explain the algorithm. The videos were helpful, but weren't very precise on the steps needed to complete the second iteration of the algorithm. The topic Dijkstra's algorithm was much easier to follow (and was assigned in homework #9). This was the first half of the week that covered the rest of the Network layer.

The second half of the week began covering the link layer. There were a couple of longer videos on this topic. They covered parity errors and MAC protocols. The one on MAC protocols was long because there were a lot of protocols to cover. They're divided into separate kinds, which are channel partitioning, random access, and "taking turns" protocols.

The lab was focused on ICMP and traceroute, which I can't even remember if we have had this topic presented to us. These concepts are all completely new to me and trying to remember all of the details (and acronyms!) is very hard. It definitely worries me about the exam because the exam is worth 1/4 of our grade, I'm not a great test taker, and it's closed book. One more week of material left and I should have adequate time to relax a bit and review all of the topics covered for the final.


Tuesday, May 31, 2016

CST 311 Week 6

Week 6

There were a lot of videos to watch this week and a there was plenty of information covered. I struggle to remember everything after doing the lab and homework assignments, which focused on performing traceroute commands to obtain router information, implementing the longest prefix matching forwarding tables, and reassigning IP addresses using DCHP (analyzed with Wireshark).

I'm hoping the upcoming weeks are short again so that I can get through that material and get enough time to review the material from the past two weeks. There's been a lot of information and I've been doing my best to keep up with it all and take it all in, but it's very difficult.

Tuesday, May 24, 2016

CST 311 Week 5

Week 5

This week was pretty intense content-wise. This has been the most challenging course for me in this program, but I am happy about it. I feel like I'm walking away each week with a new understanding of how the internet is working. It definitely helps me feel more in-tune with my surroundings at work, too. This week at work we have been having some frustrating issues with the VPN client, Pulse (Juniper Networks). It drops a lot of packets when a particular packet size is sent. If I recall correctly, it's hitting the congestion window size. I didn't understand all of the specifics of it, but I could at least somewhat follow the conversation around it and I thank this course for that.

This week we covered TCP's sequence numbers and acknowledgements, reliable data transfer, connection management, and TCP's congestion control algorithm. However, I heavily focused on TCP's congestion control algorithm. There was a quiz this week that was pretty difficult for me after reading the textbook and re-watching videos on the topic, but I think I figured it out okay. I felt like some of the concepts were just taking a really long time to click. One of the professors sent out some videos as additional resources and one of those ended up helping me, but it's also possible I was just more awake when I was working on the problems.

Monday, May 16, 2016

CST 311 Week 4

Week 4

This week caught me off guard because I didn't look at the due dates well enough to recognize that both week 3 and week 4 were due the time that week 3 was due (meaning week 3 and week 4 were combined into week 3). Week 4 is actually a week off to study for the midterm on the Saturday of the actual week 4. There were lighter work loads for both week 3 and week 4, but they were presented as being lighter to give the students more time to study for the midterm and I didn't read it as two weeks condensed into one. It would probably have been more ideal to just tell us all that all of the material was for week 3 and there isn't material for week 4 to give us time to study for the midterm. So, I found this frustrating. I always do my assignments as quickly as possible at the beginning of the week so that I don't have to waste my energy on stress surrounding deadlines.

As for the material, we covered the transport layer in more detail, multiplexing, demultiplexing, and UDP. The point of the transport layer is to provide communication between the host's processes. Multiplexing is done at the sending host and adds a transport header. Demultiplexing is done on the other side (receiving host) and breaks apart the header to send the data to the correct socket. UDP is an unreliable, unordered delivery protocol. Our Wireshark lab was focused on UDP this week.

We went into a surprising amount of detail this week with regards to calculating the checksums on UDP headers. The checksums are used to quickly check if a UDP segment has an error or not. While they're not a reliable way of checking for errors, they can help signal that something may have gone wrong. To do the assignment we had to understand binary addition. I'm glad I'm also enrolled in an Operating Systems course that taught me how to add binary numbers this semester because this course didn't provide any assistance there and it was necessary to complete the homework assignment. Calculating a checksum is done by doing this:
  1. Add two binary numbers (we added bytes, UDP uses 16-bit integers).
  2. A "wraparound" will be at the beginning of the sum (0 or 1) at the number of bits you're adding plus 1 decimal place.
  3. Remove the "wraparound" from the beginning of the sum and add it to the rest of the binary integer.
  4. Flip all the bits to be the opposite (0101 -> 1010).
  5. That is the checksum!

Sunday, May 15, 2016

CST 311 Week 3

Week 3

I got behind a bit this week due to the lab taking me a long time. Many of the prompts that we were supposed to perform didn't work because the DNS servers were no longer public or no longer existed. I made the best of it and used alternate ones and also relied on the results that the author of the Wireshark labs had received. I also work on OSX, so I've had to find the equivalent commands of those that are provided in the lab (Windows commands).

The content covered this week was SMTP (Simple Mail Transfer Protocol), DNS (Domain Name Service) and how various applications utilize these. These are all very relevant to what I've been doing at work. Coworkers have explained parts of these to me, but I just didn't completely understand some of the tools I was using. I've enjoyed becoming more familiar with the tools that have been presented this week. I've used ifconfig (ipconfig equivalent) at work to find my IP address at work pretty frequently.

We watched a video, called "A Day in the Life of an Application", that explains how some services work. I really enjoyed learning how a voice call works over Skype and how peer-to-peer sharing work. I'd heard of (and used) peer-to-peer sharing systems in the past and never really understood what was going on under the hood. I love the idea of being able to obtain data from several people that are also downloading the same content. Now I understand why you'd want to have many people downloading the same thing. All I used to understand was that it was faster and more likely to complete when there were more users.



Sunday, May 8, 2016

CST 311 Week 2

Week 2

This week has been very informative and took be a bit longer to complete in comparison to last week. That may be because I took more detailed notes when I watched the video to help me complete the quiz for the end of the week's content. I think it was beneficial to take the notes. Even when I didn't capture the information that I needed there, I was able to go back and reference the correct video to get the information I needed.

This week we've been focused on HTTP and FTP. Getting to know the different protocols has been very interesting. I had a general idea of HTTP, but no knowledge of FTP. It's really interesting that FTP opens an additional port to transfer data and then closes it immediately after the data is sent, but keeps one open regardless of the data being sent.

A simple socket programming exercise was sent out this week. I've been working on it in Java (there's a handful of languages to pick from). So far I haven't had much luck, but I am going to continue chipping away at it. I think it's a really good exercise and I personally benefit from hands-on experience, so I'm really happy about this extra credit assignment. Really, I wouldn't be too upset if it were a regular homework assignment.


Saturday, April 30, 2016

CST 311 Week 1

Week 1

This week has been great. I've learned a ton of new information already. I'm nervous I won't be able to retain it all for the exams. I didn't make notes while watching the lectures this week, but in the following weeks I'm going to start putting together quick reference sheets. When I took this week's quiz, I found that I had to go back to find information and I had no idea where it was.

This week we learned how the internet is all connected and had a quick overview on how it operates by sendings packets between hosts. We also dove into understanding throughput in a connection and what the delays in sending a packet are.

Delay times for a packet on a network seem to be the most notable information for this week:

dend-to-end = dproc + dqueue + dtrans + dprop

dproc : This is where the packet is processed. Here, the bits are checked for errors and the output link is determined.
dqueue : Time a packet spends waiting in the output link queue to be put on the output link. This time depends on how busy the router is.
dtrans : L/R, where L is the packet length and R is the link bandwidth. This is the time spent placing the packet onto the output link.
dprop : d/s, where d is the length of the physical length and s is the propagation speed. This is the time spent on the link itself.