# CS4514 Practice Mid-Term Exam

1. What is the role of the transport layer? In project 2, what transport layer protocol did you use? What are some of the services it provides?

2. What is the difference between 'bit rate' and 'baud rate'? When are the bit rate and the bit rate the same?

3. Given a noiseless 2 MHz channel sampled every 500 microseconds for 4 signal levels. Is it being sampled enough to make use of the full bandwidth? If we doubled the sample rate, how much would the data rate increase? If we doubled the signal levels, how much would the data rate increase?

4. Consider adding 10 dB of noise on the same 2 MHz channel, sampled every 500 microseconds for 4 signal levels signal levels. Now what is the data rate? If we doubled the signal levels, how much would the data rate increase?

5. Given 20 data bits to send and a frame delimiter of 011110. What is the most number of bits that will need to be stuffed in order to correctly recognize the end of the frame?

6. Suppose you want to transmit the message 11001001 and protect it from errors using the CRC polynomial x3 + 1.

1. Use polynomial long division to determine the message that should be transmitted.
2. Suppose the left-most bit of the message is inverted. What is the result of the calculation? How does the receiver know that an error has occurred?

7. Consider an 8-bit set of data sent by the network layer where all combinations of 0's and 1's are possible. How many bits would be needed to minimally to detect and correct all 1-bit errors in the above scheme?

8. In the sliding-window protocols, why doesn't it make sense for the receiver's window to be larger than the sender's window? When might you want the sender's window to be larger than the receiver's window?

9. Consider the delay of pure ALOHA versus slotted ALOHA at low load. Which one is less? Explain your answer.

10. Consider a system with a large population of workstations transmitting 0.5 frames/sec (new frames plus retransmission) in an ALOHA network. What is the throughput per frame time? How might we adjust the load so as to improve throughput?

11. Consider your distributed shell and distributed shell server from Project 2. Assume the client is already connected to the server and we have the following pseudo-code:

```	SERVER

if (______) {

______

if (ok) {

______

______

______

} else {

fprintf(stderr, "pword error")

}

exit(1)

}

CLIENT

______

while ( ______ > 0) {

puts(output)

}

exit(0)
```

Fill in the gaps with the following commands:

```	recv()
dup2()
exec()
fork()
send()
```

Commands may be used more than once.