Laboratorium podstaw sieci komputerowych Zadanie 5
Transkrypt
Laboratorium podstaw sieci komputerowych Zadanie 5
150875 numer indeksu Grzegorz Graczyk imie i nazwisko Data Kierunek Rok akademicki Semestr Grupa dziekańska Grupa laboratoryjna 2010-05-05 Informatyka 2009/10 4 2 15 Laboratorium podstaw sieci komputerowych Zadanie 5 Wstęp FTP (ang. File Transfer Protocol – Protokół Transferu Plików) – protokół typu klient-serwer, który umożliwia przesyłanie plików z serwera i na serwer poprzez sieć TCP/IP. Protokół ten jest zdefiniowany przez IETF w RFC 959. Protokół ten działa w oparciu o dwa połączenia. Pierwsze połączenie - utrzymywane przez cały czas jest połączeniem dla poleceń i wykorzystuje protokół telnet. Drugie połączenie jest wykorzystywane do przesyłania danych i jest inicjowane wtedy, gdy jest potrzebne. Ponieważ dane są przesyłane za pomocą osobnego strumienia nie jest potrzebny specjalny protokół - są one przesyłane bajt po bajcie za pomocą strumienia TCP. FTP oferuje dwa tryby inicjowania połączenia danych: aktywny - w którym serwer inicjuje połączenie oraz pasywny - w którym robi to klient. Serwer FTP działa zazwyczaj na porcie 21 oraz w przypadku trybu aktywnego wykorzystuje port 20. W przypadku trybu pasywnego porty dobierane są losowo spośród wartości wyższych niż 1024. W czasie analizy zostaną przedstawione oba tryby pracy: pobranie listy plików w trybie aktywnym oraz wysłanie pliku w trybie pasywnym. Sama komunikacja w celu ograniczenia liczby nieinteresujących pakietów została przeprowadzona z użyciem programów telnet i nc. Aby w analizie uniknąć powtórzeń część ramek będzie pozostawiona bez komentarza, zaś część zostanie pominięta. Pominięte zostaną ramki zawierające wyłącznie potwierdzenia. Szczegółowy komentarz pominiemy w przypadku poszczególnych faz nawiązywania połączeń dla strumienia danych. Analiza W czasie analizy zostało wykrytych 61 pakietów: No . Time Source Destination Protocol Info Broadcast ARP Who has 1 0.000000 IntelCor 9c : f5 :8d 192.168.0.1? Tell 192.168.0.4 2 0.001263 N e t g e a r 0 2 : 0 7 : ba IntelCor 9c : f5 :8d ARP 192.168.0.1 is a t 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba 3 0.001279 192.168.0.4 192.168.0.1 DNS Standard query A stud . i c s . p . lodz . pl 4 0.024780 192.168.0.1 192.168.0.4 DNS Standard query response A 212.51.220.231 Questions : 1 5 0.025322 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ SYN ] Seq=0 Win=5840 Len=0 MSS=1460 TSV=5382533 TSER=0 WS=6 6 0.048203 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ SYN , ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=148866435 TSER=5382533 WS=7 7 0.048263 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=1 Ack=1 Win=5888 Len=0 TSV=5382538 TSER=148866435 8 0.074563 212.51.220.231 192.168.0.4 FTP Response : 220 : : f f f f : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 FTP s e r v e r r e a d y 9 0.074619 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=1 Ack=45 Win=5888 Len=0 TSV=5382545 TSER=148866443 10 5 . 3 7 8 9 5 1 192.168.0.4 212.51.220.231 FTP Request : u s e r grzesiu 11 5 . 4 0 2 6 9 2 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=45 Ack=15 Win=5888 Len=0 TSV=148868040 TSER=5383871 12 5 . 4 1 0 0 1 0 212.51.220.231 192.168.0.4 FTP Response : 331 Password r e q u i r e d f o r g r z e s i u 13 5 . 4 1 0 0 6 0 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=15 Ack=80 Win=5888 Len=0 TSV=5383879 TSER=148868044 14 9 . 4 3 2 0 6 2 192.168.0.4 212.51.220.231 FTP Request : p a s s ∗∗∗∗∗∗∗∗∗∗ 15 9 . 4 9 2 5 4 7 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=80 Ack=32 Win=5888 Len=0 TSV=148869269 TSER=5384885 PSK: Grzegorz Graczyk 2 / 16 No . Time Source Destination Protocol Info 16 1 2 . 8 1 2 5 0 0 212.51.220.231 192.168.0.4 FTP Response : 230 User g r z e s i u l o g g e d i n 17 1 2 . 8 1 2 5 5 7 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=32 Ack=108 Win=5888 Len=0 TSV=5385730 TSER=148870265 18 2 0 . 2 9 6 0 9 5 192.168.0.4 212.51.220.231 FTP Request : p o r t 83 ,10 ,157 ,172 ,10 ,0 19 2 0 . 3 1 9 2 7 1 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=108 Ack=57 Win=5888 Len=0 TSV=148872515 TSER=5387601 20 2 0 . 3 1 9 6 1 0 212.51.220.231 192.168.0.4 FTP Response : 200 PORT command s u c c e s s f u l 21 2 0 . 3 1 9 6 4 0 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=57 Ack=137 Win=5888 Len=0 TSV=5387606 TSER=148872515 22 2 4 . 7 4 3 0 1 4 192.168.0.4 212.51.220.231 FTP Request : l i s t 23 2 4 . 7 6 7 0 7 6 212.51.220.231 192.168.0.4 TCP f t p −data > l a b r a t [ SYN ] Seq=0 Win=5840 Len=0 MSS=1460 TSV=148873851 TSER=0 WS=7 24 2 4 . 7 6 7 1 2 4 192.168.0.4 212.51.220.231 TCP labrat > ftp− data [ SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=5388718 TSER=148873851 WS=6 25 2 4 . 7 8 9 5 7 7 212.51.220.231 192.168.0.4 TCP f t p −data > l a b r a t [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=148873858 TSER=5388718 26 2 4 . 7 9 0 9 4 9 212.51.220.231 192.168.0.4 FTP Response : 150 Opening ASCII mode data c o n n e c t i o n f o r f i l e l i s t 27 2 4 . 7 9 0 9 9 4 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=63 Ack=191 Win=5888 Len=0 TSV=5388724 TSER=148873858 28 2 5 . 0 0 3 0 7 7 212.51.220.231 192.168.0.4 FTP−DATA FTP Data : 1033 bytes 29 2 5 . 0 0 3 1 3 6 192.168.0.4 212.51.220.231 TCP labrat > ftp− data [ACK] Seq=1 Ack=1034 Win=7872 Len=0 TSV=5388777 TSER=148873921 30 2 5 . 0 0 8 2 0 7 212.51.220.231 192.168.0.4 FTP−DATA FTP Data : 1054 bytes No . Time Source Destination Protocol Info 31 2 5 . 0 0 8 2 5 2 192.168.0.4 212.51.220.231 TCP labrat > ftp− data [ACK] Seq=1 Ack=2089 Win=9984 Len=0 TSV=5388779 TSER=148873921 32 2 5 . 0 0 8 3 7 8 192.168.0.4 212.51.220.231 TCP labrat > ftp− data [ FIN , ACK] Seq=1 Ack=2089 Win=9984 Len=0 TSV=5388779 TSER=148873921 33 2 5 . 0 3 2 8 8 6 212.51.220.231 192.168.0.4 TCP f t p −data > l a b r a t [ACK] Seq =2089 Ack=2 Win=5888 Len=0 TSV=148873931 TSER=5388779 34 2 5 . 0 3 3 8 5 8 212.51.220.231 192.168.0.4 FTP Response : 226 Transfer complete 35 2 5 . 0 3 3 8 9 4 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=63 Ack=214 Win=5888 Len=0 TSV=5388785 TSER=148873931 36 3 1 . 1 6 0 6 7 3 192.168.0.4 212.51.220.231 FTP Request : pasv 37 3 1 . 1 8 5 8 9 7 212.51.220.231 192.168.0.4 FTP Response : 227 E n t e r i n g P a s s i v e Mode ( 2 1 2 , 5 1 , 2 2 0 , 2 3 1 , 2 1 5 , 1 4 6 ) . 38 3 1 . 1 8 5 9 4 0 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=69 Ack=267 Win=5888 Len=0 TSV=5390323 TSER=148875776 39 3 8 . 9 6 3 0 7 0 192.168.0.4 212.51.220.231 FTP Request : s t o r f i l e . txt 40 3 9 . 0 2 3 9 4 7 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=267 Ack=84 Win=5888 Len=0 TSV=148878129 TSER=5392267 41 4 4 . 0 2 0 1 1 2 N e t g e a r 0 2 : 0 7 : ba IntelCor 9c : f5 :8d ARP Who has 192.168.0.4? Tell 192.168.0.1 42 4 4 . 0 2 0 1 4 7 IntelCor 9c : f5 :8d N e t g e a r 0 2 : 0 7 : ba ARP 192.168.0.4 is at 00:1 f : 3 b : 9 c : f5 : 8 d 43 6 6 . 7 0 6 6 6 1 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ SYN ] Seq=0 Win=5840 Len=0 MSS=1460 TSV=5399203 TSER=0 WS=6 44 6 6 . 7 2 9 8 4 7 212.51.220.231 192.168.0.4 TCP 55186 > 33139 [ SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=148886440 TSER=5399203 WS=7 45 6 6 . 7 2 9 9 0 8 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=5399209 TSER=148886440 PSK: Grzegorz Graczyk 3 / 16 No . Time Source Destination Protocol Info 46 6 6 . 7 5 3 7 5 0 212.51.220.231 192.168.0.4 FTP Response : 150 Opening ASCII mode data c o n n e c t i o n f o r f i l e . t x t 47 6 6 . 7 5 3 7 9 8 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=84 Ack=320 Win=5888 Len=0 TSV=5399215 TSER=148886448 48 7 1 . 2 0 9 1 3 7 192.168.0.4 212.51.220.231 FTP−DATA FTP Data : 13 bytes 49 7 1 . 2 3 2 4 4 9 212.51.220.231 192.168.0.4 TCP 55186 > 33139 [ ACK] Seq=1 Ack=14 Win=5888 Len=0 TSV=148887792 TSER=5400329 50 7 5 . 2 7 6 5 7 6 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ FIN , ACK] Seq=14 Ack=1 Win=5888 Len=0 TSV=5401346 TSER=148887792 51 7 5 . 3 0 0 2 8 9 212.51.220.231 192.168.0.4 TCP 55186 > 33139 [ FIN , ACK] Seq=1 Ack=15 Win=5888 Len=0 TSV=148889012 TSER=5401346 52 7 5 . 3 0 0 3 4 3 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ ACK] Seq=15 Ack=2 Win=5888 Len=0 TSV=5401352 TSER=148889012 53 7 5 . 6 5 2 9 3 3 212.51.220.231 192.168.0.4 FTP Response : 226 Transfer complete 54 7 5 . 6 5 2 9 7 5 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=84 Ack=343 Win=5888 Len=0 TSV=5401440 TSER=148889116 55 7 8 . 7 6 5 4 2 3 192.168.0.4 212.51.220.231 FTP Request : q u i t 56 7 8 . 7 8 9 3 1 8 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=343 Ack=90 Win=5888 Len=0 TSV=148890058 TSER=5402218 57 7 8 . 7 8 9 7 4 5 212.51.220.231 192.168.0.4 FTP Response : 221 Goodbye . 58 7 8 . 7 8 9 7 7 7 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ACK ] Seq=90 Ack=357 Win=5888 Len=0 TSV=5402224 TSER=148890058 59 7 8 . 8 0 8 5 0 0 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ FIN , ACK] Seq=357 Ack=90 Win=5888 Len=0 TSV=148890064 TSER=5402218 60 7 8 . 8 0 8 6 5 8 192.168.0.4 212.51.220.231 TCP 52502 > f t p [ FIN , ACK] Seq=90 Ack=358 Win=5888 Len=0 TSV=5402229 TSER=148890064 61 7 8 . 8 3 0 8 6 1 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=358 Ack=91 Win=5888 Len=0 TSV=148890070 TSER=5402229 Zapytanie ARP Ramka 1 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : B r o a d c a s t ( f f : f f : f f : f f : f f : ff ) Destination : Broadcast ( f f : f f : f f : f f : f f : f f ) Source : I n t e l C o r 9 c : f5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d) Type : ARP ( 0 x0806 ) Address R e s o l u t i o n P r o t o c o l ( r e q u e s t ) Hardware t y p e : E t h e r n e t ( 0 x0001 ) P r o t o c o l t y p e : IP ( 0 x0800 ) Hardware s i z e : 6 Protocol s i z e : 4 Opcode : r e q u e s t ( 0 x0001 ) Se nd er MAC a d d r e s s : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) Se nd er IP a d d r e s s : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) Ta rge t MAC a d d r e s s : 0 0 : 0 0 : 0 0 0 0 : 0 0 : 0 0 ( 0 0 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0 ) Ta rge t IP a d d r e s s : 1 9 2 . 1 6 8 . 0 . 1 ( 1 9 2 . 1 6 8 . 0 . 1 ) Przed wykonaniem ćwiczenia zostało wyczyszczone cache arp. Dzięki temu system operacyjny przed skorzystaniem z serwera DNS oraz bramy domyślnej (które się pokrywają) musi na podstawie adresu IP 192.168.0.1 ustalić adres MAC. Ponieważ zapytanie jest wysyłane na adres rozgłoszeniowy wszystkie komputery w domenie rozgłoszeniowej poznają nasz adres MAC (choć jest on im już znany, gdyż wyczyszczone zostało jedynie cache arp na maszynie lokalnej). PSK: Grzegorz Graczyk 4 / 16 Ramka 2 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) Destination : IntelCor 9c : f5 :8d (00:1 f :3b:9 c : f5 :8d) S o u r c e : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) Type : ARP ( 0 x0806 ) Address R e s o l u t i o n P r o t o c o l ( r e p l y ) Hardware t y p e : E t h e r n e t ( 0 x0001 ) P r o t o c o l t y p e : IP ( 0 x0800 ) Hardware s i z e : 6 Protocol s i z e : 4 Opcode : r e p l y ( 0 x0002 ) Se nd er MAC a d d r e s s : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) Se nd er IP a d d r e s s : 1 9 2 . 1 6 8 . 0 . 1 ( 1 9 2 . 1 6 8 . 0 . 1 ) Ta rge t MAC a d d r e s s : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) Ta rge t IP a d d r e s s : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) Host o szukanym adresie IP odpowiada nam dzięki czemu uzyskujemy jego adres MAC. W pakiecie z odpowiedzią adresy MAC się powtarzają - występują zarówno w nagłówku ethernetowym jak i w pakiecie ARP. Zapytanie DNS Ramka 3 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 1 9 2 . 1 6 8 . 0 . 1 ( 1 9 2 . 1 6 8 . 0 . 1 ) User Datagram P r o t o c o l , S r c Port : 45509 ( 4 5 5 0 9 ) , Dst Port : domain ( 5 3 ) Domain Name System ( query ) T r a n s a c t i o n ID : 0 xd20e F l a g s : 0 x0100 ( Standard query ) Questions : 1 Answer RRs : 0 A u t h o r i t y RRs : 0 A d d i t i o n a l RRs : 0 Queries s t u d . i c s . p . l o d z . p l : t y p e A, c l a s s IN Wysyłane jest zapytanie DNS o host docelowy. Jest ono skierowane pod adres bramy domyślnej - routera na którym znajduje się między innymi serwer DNS. Jedyne czego potrzebujemy to adres IP naszego hosta dlatego jedynym zapytaniem jest zapytanie typu A. Ramka 4 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 1 ( 1 9 2 . 1 6 8 . 0 . 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) User Datagram P r o t o c o l , S r c Port : domain ( 5 3 ) , Dst Port : 45509 ( 4 5 5 0 9 ) Domain Name System ( r e s p o n s e ) T r a n s a c t i o n ID : 0 xd20e F l a g s : 0 x8180 ( Standard query r e s p o n s e , No e r r o r ) Questions : 1 Answer RRs : 1 A u t h o r i t y RRs : 0 A d d i t i o n a l RRs : 0 Queries s t u d . i c s . p . l o d z . p l : t y p e A, c l a s s IN Answers s t u d . i c s . p . l o d z . p l : t y p e A, c l a s s IN , addr 2 1 2 . 5 1 . 2 2 0 . 2 3 1 Time t o l i v e : 18 hours , 33 minutes , 16 s e c o n d s Odpowiedź na zapytanie DNS z poprzedniej ramki. Zawiera najważniejszą informację - adres IP. Ponadto posiada istotne z punktu widzenia architektury DNS. Pole TTL określa jak długo PSK: Grzegorz Graczyk 5 / 16 wynik zapytania może być cachowany. Po upływie określonego czasu należy powtórzyć zapytanie DNS. Nawiązanie połączenia dla poleceń Ramka 5 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 0 , Len : 0 S o u r c e p o r t : 52502 ( 5 2 5 0 2 ) Destination port : ftp (21) Sequence number : 0 ( r e l a t i v e s e q u e n c e number ) Header l e n g t h : 40 b y t e s F l a g s : 0 x02 (SYN) Window s i z e : 5840 Checksum : 0 x6500 [ c o r r e c t ] O pt i on s : ( 2 0 b y t e s ) Połączenie FTP jest nawiązywane za pomocą protokołu TCP. Pierwszym krokiem nawiązania połączenia jest wysłanie pakietu TCP z ustawioną flagą SYN oraz wybranym losowo numerem sekwencyjnym. Program wireshark wylicza względne odległości między tymi numerami ułatwiając śledzenie połączenia - możemy jednak bez trudu odczytać jego prawdziwą wartość z heksadecymalnego zrzutu pakietu. Wartością tą okazuje się być 0xca7e22ab. Ramka 6 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 0 , Ack : 1 , Len : 0 Source port : f t p (21) D e s t i n a t i o n p o r t : 52502 ( 5 2 5 0 2 ) Sequence number : 0 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 40 b y t e s F l a g s : 0 x12 (SYN, ACK) Window s i z e : 5792 Checksum : 0 x3280 [ c o r r e c t ] O pt i on s : ( 2 0 b y t e s ) Serwer przyjmuje połączenie odpowiadając pakietem z ustawionymi flagami SYN oraz ACK. Numer potwierdzenia w rzeczywistości oznacza numer bajtu na który serwer od tej pory oczekuje. Numery potwierdzeń podobnie jak numery sekwencyjne są wyliczone przez program wireshark. Ramka 7 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 1 , Ack : 1 , Len : 0 S o u r c e p o r t : 52502 ( 5 2 5 0 2 ) Destination port : ftp (21) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x778a [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) PSK: Grzegorz Graczyk 6 / 16 Klient potwierdza gotowość do odbierania pakietów odsyłając pakiet z flagą ACK oraz numerem potwierdzenia ustawionym na 1 - oznaczającym dokładnie to samo co w wypadku poprzedniej ramki. Powitanie serwera oraz potwierdzenie TCP Ramka 8 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 1 , Ack : 1 , Len : 44 Source port : f t p (21) D e s t i n a t i o n p o r t : 52502 ( 5 2 5 0 2 ) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) [ Next s e q u e n c e number : 45 ( r e l a t i v e s e q u e n c e number ) ] Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x18 (PSH, ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x4568 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) [ SEQ/ACK a n a l y s i s ] F i l e T r a n s f e r P r o t o c o l (FTP) 220 : : f f f f : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 FTP s e r v e r r e a d y \ r \n Wiadomość powitalna serwera. Zawiera kod oczekiwania na logowanie 220 oraz wiadomość tekstową do tego komunikatu. Podobnie jak większość wysłanych pakietów TCP pakiet ten jest opatrzony flagą PSH, która wymusza odesłanie bufora do warstwy aplikacji nawet jeśli nie został on jeszcze wypełniony. Warto zwrócić uwagę na ciąg \r \n (13,10). Jest to windowsowe zakończenie linii, które pod samym windowsem oznaczane jest jedynie jako \r \n co prowadzi często do problemów ze zgodnością. Z tego powodu protokół telnet na którym opiera się linia poleceń protokołu ftp wymusza użycie ciągu \n jako znaku nowej linii. Ramka 9 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 1 , Ack : 4 5 , Len : 0 S o u r c e p o r t : 52502 ( 5 2 5 0 2 ) Destination port : ftp (21) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 45 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x182a [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Klient wysyła potwierdzenie odbioru 44 bajtów wysyłając flagę ACK i ustawiając numer potwierdzenia na 45. PSK: Grzegorz Graczyk 7 / 16 Autoryzacja FTP Ramka 10 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 1 , Ack : 4 5 , Len : 14 F i l e T r a n s f e r P r o t o c o l (FTP) u s e r g r z e s i u \ r \n Logowanie rozpoczyna się od podania loginu w postaci jawnej za pomocą polecenia USER. Ramka 11 No . Time Source Destination Protocol Info 11 5 . 4 0 2 6 9 2 212.51.220.231 192.168.0.4 TCP f t p > 52502 [ACK ] Seq=45 Ack=15 Win=5888 Len=0 TSV=148868040 TSER=5383871 Serwer wysyła potwierdzenie odbioru. Pakiety zawierające jedynie potwierdzenia będziemy pomijać w późniejszej analizie komunikacji (ich zestawienie jest widoczne w liście wszystkich pakietów). Ramka 12 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 4 5 , Ack : 1 5 , Len : 35 F i l e T r a n s f e r P r o t o c o l (FTP) 331 Password r e q u i r e d f o r g r z e s i u \ r \n Odpowiedzią serwera jest kod 331 - jak możemy przeczytać w komunikacie tekstowym oznacza on, iż logowanie wymaga podania hasła. Ramka 14 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 1 5 , Ack : 8 0 , Len : 17 F i l e T r a n s f e r P r o t o c o l (FTP) p a s s ∗∗∗∗∗∗∗∗∗∗\ r \n Zgodnie z zaleceniem serwera wysyłamy hasło za pomocą komendy PASS. Ramka 16 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 8 0 , Ack : 3 2 , Len : 28 F i l e T r a n s f e r P r o t o c o l (FTP) 230 User g r z e s i u l o g g e d i n \ r \n Odpowiedzią jest tym razem kod 230 oznaczający iż udało nam się zalogować. PSK: Grzegorz Graczyk 8 / 16 Informacja o otwartym porcie Ramka 18 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 3 2 , Ack : 1 0 8 , Len : 25 F i l e T r a n s f e r P r o t o c o l (FTP) p o r t 8 3 , 1 0 , 1 5 7 , 1 7 2 , 1 0 , 0 \ r \n Ponieważ pracujemy domyślnie w trybie aktywnym musimy poinformować serwer o adresie oraz porcie z jakim ma być nawiązane połączenie przesyłające dane. Wykonujemy to za pomocą komendy PORT. Pierwsze 4 argumenty odpowiadają adresowi IP, pozostałe dwa numerowi portu (pierwszy oktet jest bardziej znaczący). Ramka 20 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 1 0 8 , Ack : 5 7 , Len : 29 F i l e T r a n s f e r P r o t o c o l (FTP) 200 PORT command s u c c e s s f u l \ r \n Serwer informuje nas o pozytywnym wyniku operacji. W wypadku serwera studenckiego stud do niepowodzenia może doprowadzić między innymi podanie adresu ip innego niż nasz aktualny adres. Rządanie listy plików Ramka 22 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 5 7 , Ack : 1 3 7 , Len : 6 F i l e T r a n s f e r P r o t o c o l (FTP) l i s t \ r \n Komenda LIST powoduje wysłanie listy plików w aktualnym katalogu. Ponieważ lista może być obszerna jest wysyłana ona kanałem danych. Ramka 26 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 1 3 7 , Ack : 6 3 , Len : 54 F i l e T r a n s f e r P r o t o c o l (FTP) 150 Opening ASCII mode data c o n n e c t i o n f o r f i l e l i s t \ r \n Odpowiedź na komendę LIST przychodzi dopiero po otrzymaniu przez serwer potwierdzenia (SYN,ACK) nawiązania połączenia dla danych. Aby zachować spójny ciąg pytanie-odpowiedź został przedstawiony wcześniej. PSK: Grzegorz Graczyk 9 / 16 Nawiązanie połączenia dla danych Nawiązanie połączenia przebiega identycznie jak w wypadku każdego połączenia - choć w przeciwieństwie do ramek 5-7 w tej sytuacji to serwer nawiązuje połączenie z nami. Z punktu widzenia klienta jest to sytuacja dość rzadka, choć jak widać możliwa i występująca. Jednak ze względu na jej rzadkość i potencjalne zagrożenie jakie może ze sobą nieść jest blokowana przez firewalle co często uniemożliwia stosowanie trybu aktywnego. Warto wspomnieć jeszcze o przypadkowym wybraniu portu 2560, który jest przypisany do protokołu labrat. Wireshark automatycznie zamienia numery portów na nazwy protokołów stąd wystąpienie tej niespodziewanej nazwy. Ramka 23 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p −data ( 2 0 ) , Dst Port : l a b r a t ( 2 5 6 0 ) , Seq : 0 , Len : 0 S o u r c e p o r t : f t p −data ( 2 0 ) Destination port : labrat (2560) Sequence number : 0 ( r e l a t i v e s e q u e n c e number ) Header l e n g t h : 40 b y t e s F l a g s : 0 x02 (SYN) Window s i z e : 5840 Checksum : 0 xad6b [ c o r r e c t ] Ramka 24 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : l a b r a t ( 2 5 6 0 ) , Dst Port : f t p −data ( 2 0 ) , Seq : 0 , Ack : 1 , Len : 0 Source port : l a b r a t (2560) D e s t i n a t i o n p o r t : f t p −data ( 2 0 ) Sequence number : 0 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 40 b y t e s F l a g s : 0 x12 (SYN, ACK) Window s i z e : 5792 Checksum : 0 x1e65 [ c o r r e c t ] O pt i on s : ( 2 0 b y t e s ) Ramka 25 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p −data ( 2 0 ) , Dst Port : l a b r a t ( 2 5 6 0 ) , Seq : 1 , Ack : 1 , Len : 0 S o u r c e p o r t : f t p −data ( 2 0 ) Destination port : labrat (2560) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x639b [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) PSK: Grzegorz Graczyk 10 / 16 Dane Ramka 28 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p −data ( 2 0 ) , Dst Port : l a b r a t ( 2 5 6 0 ) , Seq : 1 , Ack : 1 , Len : 1033 S o u r c e p o r t : f t p −data ( 2 0 ) Destination port : labrat (2560) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) [ Next s e q u e n c e number : 1034 ( r e l a t i v e s e q u e n c e number ) ] Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x18 (PSH, ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x f 3 5 6 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) FTP Data Dane ze względu na rozmiar są przesyłane w dwóch porcjach. Istotny jest natomiast fakt, iż nie jest wykorzystana fragmentacja TCP. Bloki danych należą do osobnych pakietów TCP. Fragmentacja została przeniesiona do warstwy aplikacji - choć tak na prawde została całkowicie wyeliminowana, gdyż warstwa aplikacji użytego protokołu nie posługuje się pakietami, ale strumieniami. Ramka 30 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p −data ( 2 0 ) , Dst Port : l a b r a t ( 2 5 6 0 ) , Seq : 1 0 3 4 , Ack : 1 , Len : 1054 S o u r c e p o r t : f t p −data ( 2 0 ) Destination port : labrat (2560) Sequence number : 1034 ( r e l a t i v e s e q u e n c e number ) [ Next s e q u e n c e number : 2088 ( r e l a t i v e s e q u e n c e number ) ] Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x19 ( FIN , PSH, ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x6a95 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) FTP Data Drugi pakiet zawiera odrazu ustawioną flagę FIN, co oznacza, że po otrzymaniu tego pakietu klient będzie kontynuował procedurę zamykania połączenia. Ramka 31 No . Time Source Destination Protocol Info 31 2 5 . 0 0 8 2 5 2 192.168.0.4 212.51.220.231 TCP labrat > ftp− data [ACK] Seq=1 Ack=2089 Win=9984 Len=0 TSV=5388779 TSER=148873921 Przed zamknięciem połączenia wyśle jednak standardowe potwierdzenie. PSK: Grzegorz Graczyk 11 / 16 Zakończenie przesyłania danych danych Ramka 32 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : l a b r a t ( 2 5 6 0 ) , Dst Port : f t p −data ( 2 0 ) , Seq : 1 , Ack : 2 0 8 9 , Len : 0 Source port : l a b r a t (2560) D e s t i n a t i o n p o r t : f t p −data ( 2 0 ) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 2089 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x11 ( FIN , ACK) Window s i z e : 9984 ( s c a l e d ) Checksum : 0 x5a88 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Ramka 33 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p −data ( 2 0 ) , Dst Port : l a b r a t ( 2 5 6 0 ) , Seq : 2 0 8 9 , Ack : 2 , Len : 0 S o u r c e p o r t : f t p −data ( 2 0 ) Destination port : labrat (2560) Sequence number : 2089 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 2 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x 5 a e c [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Powyższe pakiety to kontynuacja procedury zamknięcia połączenia. Ramka 34 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 1 9 1 , Ack : 6 3 , Len : 23 F i l e T r a n s f e r P r o t o c o l (FTP) 226 T r a n s f e r c o m p l e t e \ r \n Po zakończeniu przysyłu pliku jesteśmy informowani o jego powodzeniu. Jesteśmy gotowi na wykonanie kolejnej operacji. Włączenie trybu pasywnego Ramka 36 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 6 3 , Ack : 2 1 4 , Len : 6 F i l e T r a n s f e r P r o t o c o l (FTP) pasv \ r \n Za pomocą komendy PASV przełączamy się do trybu pasywnego. Nie wymaga ona żadnych argumentów, gdyż serwer nie będzie potrzebował o nas żadnych informacji w celu nawiązania połączenia. PSK: Grzegorz Graczyk 12 / 16 Ramka 37 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 2 1 4 , Ack : 6 9 , Len : 53 F i l e T r a n s f e r P r o t o c o l (FTP) 227 E n t e r i n g P a s s i v e Mode ( 2 1 2 , 5 1 , 2 2 0 , 2 3 1 , 2 1 5 , 1 4 6 ) . \ r \n W odpowiedzi dostajemy parametry połączenia w identycznej postaci jakiej używaliśmy w poleceniu PORT. Dzięki losowo wybranemu portowi serwer nawet obsługując kilka połączeń FTP jednocześnie rozpozna nasze połączenie i powiąże strumień TCP z odpowiednim plikiem. Rządanie uploadu pliku Ramka 39 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 6 9 , Ack : 2 6 7 , Len : 15 F i l e T r a n s f e r P r o t o c o l (FTP) s t o r f i l e . t x t \ r \n Tym razem spróbujemy wgrać plik na serwer używając komendy STOR. Argumentem jest oczywiście nazwa pliku docelowego. Ramka 46 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 2 6 7 , Ack : 8 4 , Len : 53 F i l e T r a n s f e r P r o t o c o l (FTP) 150 Opening ASCII mode data c o n n e c t i o n f o r f i l e . t x t \ r \n Podobnie jak w poprzednim wypadku sygnalizowane jest pomyślne nawiązanie połączenia. Nawiązanie połączenia dla danych Połączenie przebiega identycznie jak przy nawiązaniu połączenia komend - ta sama strona inicjuje połącznie. Jedyną różnicą na tym etapie są porty. Ramka 43 No . Time Source Destination Protocol Info 43 6 6 . 7 0 6 6 6 1 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ SYN ] Seq=0 Win=5840 Len=0 MSS=1460 TSV=5399203 TSER=0 WS=6 Ramka 44 No . Time Source Destination Protocol Info 44 6 6 . 7 2 9 8 4 7 212.51.220.231 192.168.0.4 TCP 55186 > 33139 [ SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=148886440 Ramka 45 No . Time Source Destination Protocol Info 45 6 6 . 7 2 9 9 0 8 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=5399209 TSER=148886440 PSK: Grzegorz Graczyk 13 / 16 Dane Ramka 48 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 33139 ( 3 3 1 3 9 ) , Dst Port : 55186 ( 5 5 1 8 6 ) , Seq : 1 , Ack : 1 , Len : 13 S o u r c e p o r t : 33139 ( 3 3 1 3 9 ) D e s t i n a t i o n p o r t : 55186 ( 5 5 1 8 6 ) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) [ Next s e q u e n c e number : 14 ( r e l a t i v e s e q u e n c e number ) ] Acknowledgement number : 1 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x18 (PSH, ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 xe36b [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) FTP Data FTP Data : H e l l o world . \ n W wypadku tego połączenia dysponujemy ilością danych znacznie mniejszą niż w poprzednim przypadku. Pozwala to zaobserwować iż dane przesyłane są bezpośrednio w protokole TCP. Ramka 49 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 55186 ( 5 5 1 8 6 ) , Dst Port : 33139 ( 3 3 1 3 9 ) , Seq : 1 , Ack : 1 4 , Len : 0 S o u r c e p o r t : 55186 ( 5 5 1 8 6 ) D e s t i n a t i o n p o r t : 33139 ( 3 3 1 3 9 ) Sequence number : 1 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 14 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x5a56 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Zakończenie przesyłania danych danych O ile strona inicjująca połączenie jest wybierana ze względu na używany tryb to stroną inicjującą zakończenie jest zawsze strona wysyłająca dane. W przypadku pobierania zawartości pliku bądź listy plików jak w 1 połączeniu będzie to serwer; w przypadku wgrywania zawartości pliku jak w tym wypadku będzie to klient. Ramka 50 No . Time Source Destination Protocol Info 50 7 5 . 2 7 6 5 7 6 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ FIN , ACK] Seq=14 Ack=1 Win=5888 Len=0 TSV=5401346 TSER=148887792 Ramka 51 No . Time Source Destination Protocol Info 51 7 5 . 3 0 0 2 8 9 212.51.220.231 192.168.0.4 TCP 55186 > 33139 [ FIN , ACK] Seq=1 Ack=15 Win=5888 Len=0 TSV=148889012 TSER=5401346 PSK: Grzegorz Graczyk 14 / 16 Ramka 52 No . Time Source Destination Protocol Info 52 7 5 . 3 0 0 3 4 3 192.168.0.4 212.51.220.231 TCP 33139 > 55186 [ ACK] Seq=15 Ack=2 Win=5888 Len=0 TSV=5401352 TSER=148889012 Dodatkowe połączenie zostało zamknięte. Ramka 53 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 3 2 0 , Ack : 8 4 , Len : 23 F i l e T r a n s f e r P r o t o c o l (FTP) 226 T r a n s f e r c o m p l e t e \ r \n Ponownie zamknięcie strumienia danych - a zatem pomyślne przesłanie pliku jest sygnalizowane w protokole komend. Zakończenie połączenia FTP Ramka 55 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 8 4 , Ack : 3 4 3 , Len : 6 F i l e T r a n s f e r P r o t o c o l (FTP) q u i t \ r \n Aby zakończyć połączenie FTP używamy komendy QUIT. Jeśli zakończy się ona powodzeniem serwer zainicjuje zamknięcie połączenia. Ramka 57 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 3 4 3 , Ack : 9 0 , Len : 14 F i l e T r a n s f e r P r o t o c o l (FTP) 221 Goodbye . \ r \n Serwer wysyła własne pożegnanie dając nam znać, że za chwile połączenie zostanie przerwane. Ramka 59 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 3 5 7 , Ack : 9 0 , Len : 0 Source port : f t p (21) D e s t i n a t i o n p o r t : 52502 ( 5 2 5 0 2 ) Sequence number : 357 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 90 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x11 ( FIN , ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x6da7 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) [ SEQ/ACK a n a l y s i s ] PSK: Grzegorz Graczyk 15 / 16 Serwer wysyła flagę FIN sygnalizującą zamknięcie połączenia. Utrzymuje jednak połączenie na wypadek, gdyby klient zdążył wysłać jeszcze jakieś pakiety nim otrzyma ten pakiet. Ramka 60 E t h e r n e t I I , S r c : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b : 9 c : f 5 : 8 d ) , Dst : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) I n t e r n e t P r o t o c o l , S r c : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) , Dst : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : 52502 ( 5 2 5 0 2 ) , Dst Port : f t p ( 2 1 ) , Seq : 9 0 , Ack : 3 5 8 , Len : 0 S o u r c e p o r t : 52502 ( 5 2 5 0 2 ) Destination port : ftp (21) Sequence number : 90 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 358 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x11 ( FIN , ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x6d6d [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Klient otrzymawszy poprzedni pakiet również zamyka połączenie. Ramka 61 E t h e r n e t I I , S r c : N e t g e a r 0 2 : 0 7 : ba ( 0 0 : 1 f : 3 3 : 0 2 : 0 7 : ba ) , Dst : I n t e l C o r 9 c : f 5 : 8 d ( 0 0 : 1 f : 3 b :9 c : f5 :8d) I n t e r n e t P r o t o c o l , S r c : 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ( 2 1 2 . 5 1 . 2 2 0 . 2 3 1 ) , Dst : 1 9 2 . 1 6 8 . 0 . 4 ( 1 9 2 . 1 6 8 . 0 . 4 ) T r a n s m i s s i o n C o n t r o l P r o t o c o l , S r c Port : f t p ( 2 1 ) , Dst Port : 52502 ( 5 2 5 0 2 ) , Seq : 3 5 8 , Ack : 9 1 , Len : 0 Source port : f t p (21) D e s t i n a t i o n p o r t : 52502 ( 5 2 5 0 2 ) Sequence number : 358 ( r e l a t i v e s e q u e n c e number ) Acknowledgement number : 91 ( r e l a t i v e ack number ) Header l e n g t h : 32 b y t e s F l a g s : 0 x10 (ACK) Window s i z e : 5888 ( s c a l e d ) Checksum : 0 x6d95 [ c o r r e c t ] O pt i on s : ( 1 2 b y t e s ) Ostatnim krokiem zamknięcia połączenia jest wysłanie pakietu z ustawioną jedynie flagą ACK. Dla serwera od chwili wysłania pakietu połączenie jest uznawane za w pełni zamknięte. Bibliografia 1. Karol Krysiak, Sieci komputerowe. Kompendium., Wydanie II, Helion 2005. 2. Peter Norton, W sercu PC, Helion 2003. 3. Różne hasła z angielskiej oraz polskiej Wikipedii. PSK: Grzegorz Graczyk 16 / 16