FTP HL Seq
FTP HL Seq
This sequence diagram was generated with EventStudio System Designer (http://www.EventHelix.com/EventStudio).
Here we explore the sequence of interactions in a typical FTP (File Transfer Protocol) session.
The example here illustrates the use of multiple TCP connections by FTP. We will cover how FTP
establishes a telnet TCP connection (TCP Port 21) to control the overall flow of the FTP transfer.
Then we examine the use of TCP Port 20 for establishing TCP connections for
directory transfer and file retrieval.
The complete sequence diagram can be divided into the following steps:
- DNS Query to obtain the IP address for the FTP Server
- FTP Telnet connection setup and login. (USER and PASS commands)
- Obtaining a directory listing (PORT and LIST command)
- Changing directory (CWD command)
- Downloading a file using FTP get (PORT and RETR command)
DNS Response
recdesired = 1, answers = 1, IP Address
FTP Telnet connection setup and login. (USER and PASS commands).
TCP SYN+ACK
srcport = 21, dstport = 1175, syn = 1, ack = 1
TCP ACK
srcport = 1175, dstport = 21, ack = 1
Logging in
FTP 331
code = 331, arg = Anonymous access allowed, send identity (e-mail name) as
password.
Password information
PASS [email protected]
TCP ACK
srcport = 21, dstport = 1175, ack = 1
FTP 230
code = 230, arg = Welcome to ftp.any-domain.com
FTP 230
code = 230, arg = Anonymous user logged in.
FTP 200
code = 200, arg = PORT command successful.
LIST
seq-251
srcport = 21, dstport = 1175, ack = 1
FTP 150
ftp.response.code = 150, ftp.response.arg = Opening ASCII mode data
connection for /bin/ls.
TCP SYN+ACK
srcport = 5001, dstport = 20, syn = 1, ack = 1
TCP ACK
srcport = 20, dstport = 5001, ack = 1
TCP ACK
srcport = 20, dstport = 5001, ack = 1
Release the data port TCP connection on completion of the directory listing
TCP FIN+ACK
tcp.srcport = 20, tcp.dstport = 5001, tcp.flags.ack = 1, tcp.flags.fin = 1
TCP ACK
tcp.srcport = 5001, tcp.dstport = 20, tcp.flags.ack = 1
TCP FIN+ACK
tcp.srcport = 5001, tcp.dstport = 20, tcp.flags.ack = 1, tcp.flags.fin = 1
TCP ACK
tcp.srcport = 20, tcp.dstport = 5001, tcp.flags.ack = 1
TCP ACK
tcp.srcport = 1175, tcp.dstport = 21, ack = 1
FTP 150
code = 150, arg = Opening ASCII mode data connection for readme.txt(1715
bytes).
TCP SYN+ACK
tcp.srcport = 5002, tcp.dstport = 20, syn = 1, ack = 1
TCP ACK
tcp.srcport = 20, tcp.dstport = 5002, ack = 1
FTP DATA
tcp.srcport = 20, tcp.dstport = 5002, ack = 1
TCP ACK
tcp.srcport = 5002, tcp.dstport = 20, ack = 1
FTP DATA
tcp.srcport = 20, tcp.dstport = 5002, ack = 1
FTP DATA
tcp.srcport = 20, tcp.dstport = 5002, ack = 1
TCP ACK
tcp.srcport = 5002, tcp.dstport = 20, ack = 1
TCP ACK
tcp.srcport = 5002, tcp.dstport = 20, ack = 1
TCP FIN+ACK
tcp.srcport = 5002, tcp.dstport = 20, ack = 1, fin = 1
TCP ACK
tcp.srcport = 20, tcp.dstport = 5002, ack = 1
FTP 226
code = 226, arg = Transfer complete.
Logging out
DNS FTP Server FTP Client Console
Quitting the FTP client
Exit FTP client using bye command
QUIT
ftp.request.command = QUIT
TCP ACK
tcp.srcport = 21, tcp.dstport = 1175, ack = 1
FTP 221
code = 221, arg = Thank you for visiting ftp.any-domain.com.
TCP ACK
tcp.srcport = 1175, tcp.dstport = 21, ack = 1
TCP ACK
tcp.srcport = 1175, tcp.dstport = 21, ack = 1, fin = 1
TCP FIN
tcp.srcport = 1175, tcp.dstport = 21, ack = 1, fin = 1
TCP ACK
tcp.srcport = 21, tcp.dstport = 1175, ack = 1, fin = 1
This sequence diagram was generated with EventStudio System Designer (http://www.EventHelix.com/EventStudio).