The second and final test will take place in class on Wednesday, November 19. It will cover course material through Friday, November 14. From the textbook, this includes parts of Chapters 3, 4, and 5, starting from Section 3.4. We have generally concentrated more on Internet protocols than on general principles, and we have covered less detail as we proceeded deeper into the protocol stack. The main readings included Chapter 3, Sections 3.4, 3.5, and 3.7; Chapter 4, Sections 4.1.1, 4.2, 4.4, 4,5 and 4.6; and Chapter 5, Sections 3, 4, and 7. You are responsible for earlier material to the extent that the new material builds on it.
The test will include mainly longer and shorter essay-type questions. The last question on the test will be a long, summary essay dealing with everything that we have covered from the beginning of the course. You will not be asked to write any Java code. However, there might be some questions about the Java API for UDP programming (Lab 5). There might be some questions about other labs, in particular Lab 7, which covered things that are not in the book. I do not expect you to memorize the format of TCP, IP, or Ethernet headers, but you should be familiar with the important fields in those headers.
Here are some of the terms and ideas that you should know for the test:
sliding window protocol sequence numbers ACK numbers cumulative ACKs TCP connection setup and tear down three-way handshake: SYN, SYNACK, ACK FIN packets for closing the connection TCP header fields source and destination port numbers sequence and acknowledgement numbers flags (SYN, ACK, FIN, RST) receive window size MTU (Maximum Transmission Unit), maximum packet size MSS (Maximum Segment Size), maximum length of application data TCP services reliable two-way connection flow control congestion control reliable communication all packets delivered to upper level protocol, in order uses sequence numbers and ACK numbers uses retransmission duplicate ACKs and fast retransmit RTT (Round Trip Time) retransmission timeout: EstimatedRTT = (1/8)*EstimatedRTT + (7/8)*SampleRTT DevRTT = (1/4)*DevRTT + (3/4)*abs(EstimatedRTT - SampleRTT) TimeoutInterval = EstimatedRTT + 4*DevRTT flow control avoid sending more data than receiver can handle uses receive window size, rwnd, from TCP header congestion control in TCP avoid overloading routers by backing off transmission rate when packet loss occurs no explicit feedback from routers uses congestion window, cwnd; number of un-ACKed bytes <= max(rwnd,cwnd) slow start: start with cwnd = 1 MSS, double cwnd for every RTT slow start ends upon packet loss or when cwnd > ssthresh congestion avoidance: increase cwind linearly until packet loss; upon retransmission, set ssthresh = 0.5*cwnd and go back to slow start; upon fast retransmit, cwnd = cwnd/2, return to congestion avoidance after next non-dupp ACK The Network Layer: transmission of datagram across a network possibly through routers two basic network types: datagram networks and virtual circuit networks forwarding vs. routing a router has interfaces on multiple networks and forwards packets between networks forwarding tables (also called routing tables) gateway router for a network NAT (Network Address Translation) and how it helped extend the life of IPv4 IPv4: 32-bit IP addresses, divided into network ID and host ID network numbers such as 10.0.0.0/8 and 192.168.1.0/24 netmasks such as 255.0.0.0 and 255.255.255.0 IPv4 header fields: version number fields having to do with datagram fragmentation TTL (Time-to-live), used to avoid infinite looping upper level protocol source and destination IP addresses ICMP (Internet Control Message Protocol), used for example by ping and traceroute Some of the many changes in IPv6: 128-bit IP numbers no fragmentation no options in header why IPv6 is necessary routing algorithms; find paths from source routers to destination routers Bellman-Ford Equation: d_x(y) = min( c(x,v) + d_v(y) ), min taken over neighboring nodes v link state algorithms: every node has full knowledge and computes shortest paths requires broadcast from every node about state of links to neighbors distance vector algorithms: distance vector at a node holds current best estimate of distance (cost) to other nodes only requires direct communication (exchange of distance vectors) between neighboring nodes nodes update their distance vectors based on information from neighbors' distance vectors autonomous systems (AS) differences between intra-AS and inter-AS routing BGP (border gateway protocol) The Link layer two kinds of link: point-to-point and broadcast broadcast implied shared media and the Media Access Problem types of multiple access used for broadcast media: channel partitioning protocols: TDM: Time Division Multiplexing FDM: Frequency Division Multiplexing CDMA: Code Division Multiple Access (used in some cellular data networks) taking turns protocol: Token Ring, extinct (?) competitor to Ethernet polling by a master node (Bluetooth for example) random access protocols implies possibility of collisions, with random delay before retransmission CSMA: Carrier Sense Multiple Access CSMA/CD: Carrier Sense Multiple Access with Collision Detection (traditional Ethernet) CSMA/CA: Carrier Sense Multiple Access with Collision Avoidance (WiFi) Ethernet a link-layer protocol with many physical protocols (thinwire, 10-BASE-T, 100-BASE-SX, etc.) MAC address (Media Access Control) 48-bit unique MAC address, built into Ethernet interface the address FF:FF:FF:FF:FF:FF (all 1's) is used for broadcast current LAN technology is switched Ethernet Ethernet switches: eliminate collisions switches do NOT have Ethernet addresses use point-to-point full duplex connection to each host; provide packet switching, based on ethernet addresses plug-and-play; require no configuration; they are self-learning learns by inspecting source Ethernet addresses in arriving packets forward broadcast packet to all links, except the one it arrived on forward non-broadcast packet just to appropriate link, IF KNOWN; otherwise, forward it to all links Ethernet frame format: preamble (seven 10101010's followed by one 10101011), for synchronizing clocks destination and source Ethernet address type of data CRC (Cyclic Redundancy Check), for error detection ARP (Address Resolution Protocol) finds the Ethernet address associated with a given IP address host broadcasts an ARP query with the IP address; the Ethernet adapter for that IP responds directly to the host host stores the information in an ARP table datagrams going out of the local network are addressed to the router's Ethernet router strips off Ethernet header of incoming packet and add a new one to outgoing packet UDP programming API in Java differences from TCP programming (no connections, possible packet loss, etc.) messages are just byte arrays class DatagramSocket, with methods send(datagram) and receive(datagram) the method datagramSocket.setSOTimeout(milliseconds) and why it exists class DatagramPacket constructor new DatagramPacket(data,length,address,port) for packets to be sent; methods getData(), getLength(), getAddress(), and getPort() for received packets Topics from Lab 7 that you should be familiar with: NFS (Network File System) DHCP (Dynamic Host Configuration Protocol) iptables NAT and port forwarding