Assumes you've gone through the topics to study for TCP/IP networking.
You can use GNS3 to emulate TCP/IP networks inside a single host.
- Assume you've got two machines with working ethernet ports and an ethernet crossover cable. You connect the two. Your objective is to send a message from one machine to the other. How will you do that? What networking protocols are required to achieve this and why?
- Assume you've got more than two machines, an ethernet hub and straight through ethernet cables for each machine. You connect all of these machines to the hub. Your objective is to send a message from one machine to any of the other machines. How will you do that? What networking protocols are required to achieve this and why?
- If you replace the hub in the previous question with a switch, what advantages do you get?
- You have three machines, an ethernet hub/switch and required cables. As does your neighbour. You want to connect your network with your neighbour's. How will you do that? Can you achieve this by connecting the two hubs or switches together?
- After a while your friend suggests using a router to connect the two networks instead of connecting the switches directly. Why might they suggest that?
- Explain how you will configure the router to forward packets from one network to another.
- How do ARP packet flows change compared to connecting switches directly together?
- What impact does this have on layer 2 broadcasts?
- What are class A, class B and class C IP addresses?
- What are private IP address ranges?
- How does ping work?
- How does traceroute work?
- How do you list the IP routing table on your machine?
- What is IPv4 address exhaustion and how does a NAT help alleviate it?
- What is a port number in TCP/UDP and why is it required?
- What is the relation between MTU and MSS?
- Why is IP fragmentation so bad for TCP connections? How is the path MTU discovered?
- Let's say you want to establish a TCP connection to another host. What is the minimum amount of time that it will take before your host can start sending the higher level application data to the other host?
- What is a listening socket? How do you create one? How is binding a listening socket to 0.0.0.0 different from binding it to 127.0.0.1?