Assignment correction

1
Assignment 1
Question 1
1. Dial-up modem over telephone line: home; 2. DSL over telephone
line: home or small office; 3. Cable to HFC: home; 4. 100 Mbps
switched Ethernet: enterprise; 5. Wifi (802.11): home and enterprise: 6.
3G and 4G: wide-area wireless.
Question 2
If the two ISPs do not peer with each other, then when they send traffic
to each other they have to send the traffic through a provider ISP
(intermediary), to which they have to pay for carrying the traffic. By
peering with each other directly, the two ISPs can reduce their
payments to their provider ISPs. An Internet Exchange Points (IXP)
(typically in a standalone building with its own switches) is a meeting
point where multiple ISPs can connect and/or peer together. An ISP
earns its money by charging each of the the ISPs that connect to the
IXP a relatively small fee, which may depend on the amount of traffic
sent to or received from the IXP.
Question 2
If the two ISPs do not peer with each other, then when they send traffic
to each other they have to send the traffic through a provider ISP
(intermediary), to which they have to pay for carrying the traffic. By
peering with each other directly, the two ISPs can reduce their
payments to their provider ISPs. An Internet Exchange Points (IXP)
(typically in a standalone building with its own switches) is a meeting
point where multiple ISPs can connect and/or peer together. An ISP
earns its money by charging each of the the ISPs that connect to the
IXP a relatively small fee, which may depend on the amount of traffic
sent to or received from the IXP.
Question 3
a)
Persistent connections are discussed in section 8 of RFC 2616 (the
real goal of this question was to get you to retrieve and read an RFC).
Sections 8.1.2 and 8.1.2.1 of the RFC indicate that either the client or the
server can indicate to the other that it is going to close the persistent
connection. It does so by including the connection-token "close" in the
Connection-header field of the http request/reply.
b)
HTTP does not provide any encryption services.
c)
(From RFC 2616) “Clients that use persistent connections should limit
the number of simultaneous connections that they maintain to a given server.
A single-user client SHOULD NOT maintain more than 2 connections with any
server or proxy.”
d)
Yes. (From RFC 2616) “A client might have started to send a new
request at the same time that the server has decided to close the "idle"
connection. From the server's point of view, the connection is being closed
while it was idle, but from the client's point of view, a request is in progress.”
Question 4
The sender side of protocol rdt3.0 differs from the sender side of
protocol 2.2 in that timeouts have been added. We have seen that
the introduction of timeouts adds the possibility of duplicate packets
into the sender-to-receiver data stream. However, the receiver in
protocol rdt.2.2 can already handle duplicate packets. (Receiverside duplicates in rdt 2.2 would arise if the receiver sent an ACK
that was lost, and the sender then retransmitted the old data).
Hence the receiver in protocol rdt2.2 will also work as the receiver in
protocol rdt 3.0.
.
rdt2.2: a NAK-free protocol
same functionality as rdt2.1, using ACKs only
instead of NAK, receiver sends ACK for last pkt
received OK
 receiver must explicitly include seq # of pkt being
ACKed
duplicate ACK at sender results in same action
as NAK: retransmit current pkt
Transport Layer
3-7
rdt2.2: sender, receiver fragments
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Wait for
Wait for
isACK(rcvpkt,1) )
ACK
call 0 from
0
udt_send(sndpkt)
above
sender FSM
fragment
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
Wait for
0 from
below
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
receiver FSM
fragment
L
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
Transport Layer
3-8
Question 5
rdt_send(data)
packet=make_pkt(data)
udt_send(packet)
Wait: send
to B
A
Wait: receive
from B
rdt_send(data)
.
Rdt_unable_to_send(data)
rdt_receive(packet)
rdt_send(data)
rdt_unable_to_send(data)
extract(packet,data)
deliver_data(data)
rdt_send(data)
packet=make_pkt(data)
udt_send(packet)
Wait: send
to A
B
Wait: receive
from A
rdt_send(data)
Rdt_unable_to_send(data)
rdt_receive(packet)
extract(packet,data)
deliver_data(data)
rdt_send(data)
rdt_unable_to_send(data)