Note that SMTP is a stateless protocol as the mail server does not maintain any connection with the client, it does not store any information about the client. If an email is asked to be sent twice, the server will resend it without saying that the email has been sent. POP3 is also a stateless protocol. IMAP is a state protocol, because the IMAP server must maintain a folder hierarchy for each of its users, this state information persists across a particular user's successive accesses to the IMAP server.
DNS
SMTP
HTTP
FTP
Transport Layer Service
UDP TCP TCP TCP
Stateless/State
Stateless Stateless Stateless State
Pull/Push
Pull Push Pull Push/Pull
Persistent/Non-persistent
Non Non Non (for HTTP1.0), Persistent (for HTTP1.1) Persistent
Port No.
53 25 80 20 and 21
For web servers with some heavy traffic, multiple IP addresses are usually associated with the same hostname. When the DNS server receives a request to resolve a certain hostname, it returns an IP address in a round-robin fashion. This way, different IP addresses get to distribute the load equally.
SMTP is the mail transfer protocol used in the Internet. e.g., sendmail
Possible mail access protocols used between the receiver's mail server and the user agent are POP3 (e.g., yahoo mail), HTTP (e.g., hotmail), and IMAP (e.g., Mozilla thunderbird).
The protocols used between the sender's mail server and the sender include HTTP (e.g., hotmail) and SMTP (e.g., Mozilla thunderbird).
A pull protocol obtains information from a server; while a push protocol inserts or pushes information to the server.
A persistent protocol maintains a connection until the originator of the connection closes it; while a non-persistent protocol closes the connection after every request is fulfilled.
2RTT_0 + RTT_1 + ... + RTT_n
as RTT_0 is spent on connection request, and the other RTT_0 on requesting the
URL webpage.
Suppose the HTML file indexes three very small objects on the same server. Neglecting transmission times, how much time elapses with (1) nonpersistent HTTP with no parallel TCP connections, (2) nonpersistent HTTP with parallel connections, (3) persistent HTTP with pipelining?
(1) 8RTT_0 + RTT_1 + ... + RTT_n as 2RTT_0 for receiving the html file and 2RTT_0 for
each of the three objects
(2) 4RTT_0 + RTT_1 + ... + RTT_n as 2RTT_0 for receiving the html file and then three parallel
TCP connections are established for each of the three objects. The parallel connections take another 2RTT_0
(3) 3RTT_0 + RTT_1 + ... + RTT_n as 2RTT_0 for receiving the html file and RTT_0 for the three objects.
See slides 29, 30 in lecture16.
Sample code: rsaserver.c, rsaclient.c