background image

 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 1 z 9 

 
 

Laboratorium 11.5.6: Końcowe studium przypadku - Analiza datagramu w 
programie Wireshark. 

 

Cele nauczania 

 

Po zakończeniu tego ćwiczenia będziesz potrafił: 

 
•     

Wyjaśnić, jak zbudowany jest segment TCP i wyjaśnić znaczenie jego pól. 

•     

Wyjaśnić, jak zbudowany jest pakiet IP i wyjaśnić znaczenie jego pól. 

•     

Wyjaśnić, jak zbudowana jest ramka Ethernet II i wyjaśnić znaczenie jej pól. 

•     

Wyjaśnić, jak zbudowany jest pakiet zapytania i odpowiedzi ARP." 

Wprowadzenie 

 
Laboratorium wymaga dwóch plików z przechwyconymi pakietami i analizatora ruchu sieciowego Wireshark. 

Pobierz poniższe pliki z serwera Eagle, zainstaluj program Wireshark na swoim komputerze (najpierw 

sprawdź, czy już nie jest zainstalowany). 

•  eagle1_web_client.pcap (omawiany) 

•  eagle1_web

_server.pcap (tylko odwołanie) 

•  wireshark.exe  

 

Scenariusz 

 

Ćwiczenie opisuje sekwencję tworzenia i wysyłania datagramów przez sieć pomiędzy klientem www, 

PC_Client i serwerem www, eagle1.example.com. Zrozumienie tego procesu, polegającego na 
sekwencyjnej w

ymianie pakietów poprzez sieć, ułatwi studentom logiczne rozwiązywanie problemów z 

komunikacją w sieci w przypadku wystąpienia awarii. W celu zapewnienia przejrzystości i zwięzłości, 

usunięto dodatkowe, niezwiązane z omawianą komunikacją pakiety, które również pojawiły się w sieci w 

trakcie procesu przechwytywania. Jeśli sieć, z której korzystasz, należy do innych osób, przed 

uruchomieniem analizatora ruchu sieciowego uzyskaj pozwolenie (najlepiej na piśmie) na analizowanie 
ruchu w sieci. 
 
Rysunek 1 przedst

awia topologię sieci wykorzystywanej w tym laboratorium.  

 

 

Rysunek 1. Topologia sieci 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 2 z 9 

 

Używając programów uruchamianych z linii poleceń, wyświetlono konfigurację komputera związaną z 

adresacją IP oraz zawartość pamięci podręcznej ARP. Spójrz na Rysunek 2. 
 

C: > ipconfig / all 
Konfiguracja IP systemu Windows 

Karta Ethernet Połączenie lokalne: 
     

Sufiks DNS konkretnego połączenia. :  

     Opis . . . . . . . . . . . . . . . . . . : Intel(R) 
PRO/1000 MT  

Połączenie sieciowe 

     Adres fizyczny. . . . . . . . . : 00:02:3f:7e:37:da 
     

Dhcp włączone. . . . . . . . . . . : Nie 

     Adres IP. . . . . . . . . . . . : 10.1.1.1 
     Maska podsieci . . . . . . . . . . . : 255.255.255.0 
     

Brama domyślna . . . . . . . : 10.1.1.254 

     Serwery DNS . . . . . . . . . . . : 10.1.1.250 
C: > arp –a 
Nie znaleziono wpisów ARP 
C: > 
 

Rysunek 2. Konfiguracja początkowa komputera PC Client 

 

Jak przedstawiono na Rysunku 3, uruchomiona została przeglądarka internetowa i wpisany został 
URL eagle1.example.com. Rozpoczyna to proc

es komunikacji z serwerem www i jest jednocześnie 

momentem rozpoczęcia przechwytywania pakietów.  
 

 

Rysunek 3. Przeglądarka internetowa uruchomiona na PC Client 

 

Zadanie 1: Przygotuj się do wykonania laboratorium 

 

Krok 1: Uruchom na swoim komputerze program Wireshark  
 

Spójrz na Rysunek 4 w celu wykonania zmian w domyślnej konfiguracji programu Wireshark. Odznacz Main 
toolbar

, Filter toolbar, i Packet Bytes

. Upewnij się, że Packet List i Packet Details są 

zaznaczone. Aby wyłączyć automatyczne tłumaczenie w adresach MAC odznacz Name Resolution. 
MACMAC layer  

i Transport Layer w menu  

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 3 z 9 

 

Rysunek 4. Zmiany w domyślnym sposobie wyświetlania w programie Wireshark 

 

Krok 2: Załaduj plik eagle1_web_client.pcap zawierający dane przechwycone w trakcie komunikacji 
prze

glądarki internetowej  

 

Zostanie wyświetlone okno podobne do przedstawionego na Rysunku 5. Program pozwala na dostęp do 

różnych rozwijalnych menu i podmenu. Okno programu zawiera dwa oddzielne panele. W górnym panelu 

znajduje się lista wszystkich przechwyconych pakietów. Dolny panel zawiera szczegółowe dane dotyczące 

pakietów. Każda linia w dolnym panelu zawiera znak plusa  informujący o istnieniu dodatkowych 
informacji. 

 

 

Rysunek 5. Wireshark z załadowanym plikiem eagle1_web_client.pcap 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 4 z 9 

 

Zadanie 2: Prześledź proces przepływu danych przez sieć 

 

Krok 1: Prześledź sposób działania warstwy transportowej 
 

Kiedy PC_Client tworzy datagram w celu przesłania go do eagle1.example.com, przesyłany on jest w dół 

przez wszystkie warstwy. Każda warstwa dodaje nagłówek zawierający istotne dla niej informacje. 

Ponieważ dane, które analizujemy, pochodzą od przeglądarki internetowej, protokołem transportowym jest 

TCP. Przyjrzyj się segmentowi TCP pokazanemu na Rysunku 6. PC_Client generuje źródłowy numer portu 
TCP, w tym prz

ypadku 1085, oraz używa dobrze znanego numer portu 80, którym posługują się serwery 

www. Automatycznie tworzy również numer sekwencyjny. Dane, które mają być umieszczone w segmencie 

TCP, zostały otrzymane z warstwy aplikacji. PC_Client nie zna jeszcze wszystkich informacji potrzebnych 

do wysłania pakietu, więc muszą one zostać uzyskane przy użyciu innych protokołów sieciowych.  
 

Brakuje numeru potwierdzenia. Zanim omawiany segment może zostać przekazany do warstwy sieci, TCP 

musi wykonać proces uzgadniania trójfazowego.  

 

 

Rysunek 6. Pola segmentu TCP 

 
 

Krok 2: Prześledź sposób działania warstwy sieci 

 

Kilka pól w PAKIECIE IPv4 (IP), tworzonym na poziomie warstwy sieci, może być od razu uzupełnione 

właściwymi informacjami. Zostało to pokazane na Rysunku 7. Na przykład znana jest wersja (IPv4) pakietu 

jak i adres źródłowy IP.   
 

Pakiet ma zostać dostarczony do urządzenia o nazwie eagle1.example.com. Adres IP odpowiadający tej 

nazwie musi zostać poznany przy użyciu usługi DNS (System Usług Domenowych). Pola związane z 

protokołem warstwy wyższej pozostają nieuzupełnione do momentu otrzymania datagramu z tej warstwy. 

 

 

Rysunek 7. Pola pakietu IP 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 5 z 9 

 
 
 

Krok 3: Prześledź sposób działania warstwy łącza danych 

 

Zanim datagram zostanie umieszczony w nośniku fizycznym, musi być enkapsulowany w ramkę. Zostało to 

pokazane na Rysunku 8. PC_Client zna źródłowy (swój) adres MAC, natomiast adres docelowy MAC musi 

zostać przez niego poznany.   
 

Adres docelowy MAC musi zostać znaleziony. 

 

 

Rysunek 8. Pola ramki Ethernet II 

 

Zadanie 3: Przeanalizuj przechwycone pakiety 

 

Krok 1: Prześledź sekwencję przepływu informacji 
 

W celu prześledzenia sekwencji wymienianych pakietów pomocne będzie podsumowanie brakujących 
informacji: 
 

a. 

Nie można utworzyć segmentu TCP, ponieważ brak jest informacji potrzebnych do uzupełnienia 

pola z numerem potwierdzenia. Wymagane jest uprzednie zakończenie uzgadniania trójetapowego 
wykonywanego w protokole TCP. 

 
b. 

Uzgadnianie trójetapowe wykonywane w protokole TCP nie może zostać zrealizowane dopóki 
PC_Client nie 

będzie znał adresu IP serwera eagle1.example.com. Aby uzyskać taką informację, 

PC_Client musi wysłać zapytanie DNS do serwera DNS. 

 

c. 

Nie można odpytać serwera DNS, ponieważ nie jest znany jego adres MAC. Aby poznać adres 

MAC serwera DNS należy w sieci lokalnej rozgłosić Zapytanie ARP.  

 

d. 

Adres MAC serwera eagle1.example.com jest nieznany. Aby poznać adres MAC serwera 

eagle1.example.com należy w sieci lokalnej rozgłosić zapytanie ARP. 

 

Krok 2: Przeanalizuj zawartość pakietu zapytania ARP  
 

Przyjrzyj się pakietowi nr 1w panelu zawierającym listę pakietów w programie Wireshark. Przechwycony 

pakiet to zapytanie ARP (Address Resolution Protocol). Klikając w znak plusa znajdujący się w drugiej linii w 

oknie zawierającym szczegółowe informacje na temat pakietu można zobaczyć zawartość ramki Ethernet II. 

Klikając w linię ARP request można zobaczyć zawartość pakietu zapytania ARP. 

 

1. 

Jaki jest źródłowy adres MAC w pakiecie zapytania ARP? _____________________ 

 

2.  Jaki jest docelowy adres MAC w pakiecie odpowiedzi ARP? _____________________ 

 

3. 

Jaką wartość ma nieznany adres IP w pakiecie zapytania ARP? ______________________ 

 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 6 z 9 

4. 

Jaką wartość ma pole Typ w ramce Ethernet II? _____________________ 
 

Krok 3: Przeanalizuj zawartość pakietu odpowiedzi ARP 

 

Przyjrzyj się pakietowi nr 2 w panelu zawierającym listę pakietów w programie Wireshark. Serwer DNS 

odsyła odpowiedź ARP.  

 

1. 

Jaki jest źródłowy adres MAC w pakiecie odpowiedzi ARP? _____________________ 
 

2.  Jaki jest docelowy adres MAC w pakiecie odpowiedzi ARP? _____________________ 

 

3. 

Jaką wartość ma pole Typ w ramce Ethernet II? _____________________ 

 

4. 

Jaką wartość ma docelowy adres IP w pakiecie odpowiedzi ARP? _____________________ 

 

5. 

Bazując na zaobserwowanym działaniu protokołu ARP, jakie można wyciągnąć wnioski dotyczące 
adresów docelowych w pakietach zapytania i odpowiedzi ARP? 
_____________________________________________________________________ 
_____________________________________________________________________ 
_____________________________________________________________________ 

 

6.  Dl

aczego serwer DNS nie musi wysyłać pakietu zapytania ARP aby uzyskać adres MAC komputera 

PC_Client? _____________________________________________________________ 
_____________________________________________________________________ 
 

 
Krok 4: Przeanalizuj z

awartość pakietu zapytania DNS 

 

Przyjrzyj się pakietowi nr 3 w panelu zawierającym listę pakietów w programie Wireshark. PC_Client wysyła 

zapytanie DNS do serwera DNS. Korzystając z panelu zawierającego szczegółowe informacje na temat 

pakietu udziel odpowiedzi na następujące pytania: 

 

1.  Ja

ką wartość ma pole Typ w ramce Ethernet II? _____________________ 

 
2. 

Jaki protokół warstwy transportowej jest używany oraz jaki jest numer portu docelowego? 
_____________________ 

 

Krok 5: Przeanalizuj zawartość pakietu odpowiedzi DNS 
 

Przyjrzyj się pakietowi nr 4 w panelu zawierającym listę pakietów w programie Wireshark. Serwer DNS 

odsyła pakiet odpowiedzi DNS do komputera PC_Client. Korzystając z panelu zawierającego szczegółowe 

informacje na temat pakietu udziel odpowiedzi na następujące pytania: 

 

1. 

Jaką wartość ma pole Typ w ramce Ethernet II? _____________________ 
 

2. 

Jaki protokół warstwy transportowej jest używany oraz jaki jest numer portu docelowego? 
_____________________ 

 
3.  Jaki adres IP ma serwer eagle1.example.com? _____________________ 

 

4.  Kolega, administr

ator firewalla, spytał czy są jakiekolwiek powody, dla których nie można byłoby 

zabronić wszystkim pakietom UDP wchodzić do sieci wewnętrznej.  Jakiej odpowiedzi można mu 

udzielić? _____________________ 
_____________________________________________________________________ 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 7 z 9 

_____________________________________________________________________ 
_____________________________________________________________________ 

 
 

Krok 6: Przeanalizuj zawartość pakietu zapytania ARP 
 

Przyjrzyj się pakietom nr 5 i 6 w panelu zawierającym listę pakietów w programie Wireshark. PC_Client 

wysyła zapytanie ARP do urządzenia o adresie IP 10.1.1.254.  
 
1.  Czy jest to adres IP serwera eagle1.example.com? 

Wyjaśnij dlaczego? 

____________________________________________________________________ 
____________________________________________________________________ 

 
Krok 7: Przeanalizuj proces uzgadniania trójetapowego w protokole TCP 
 

Przyjrzyj się pakietom nr 7, 8 i w panelu zawierającym listę pakietów w programie Wireshark. Przechwycone 
pakiety 

zawierają informacje wysyłane w trakcie realizacji uzgadniania trójetapowego pomiędzy 

komputerem PC_Client i serwerem eagle1.example.com. Początkowo, w datagramie wysyłanym z 

PC_Client ustawiona jest tylko flaga SYN, a numer sekwencyjny ma wartość 0. eagle1.example.com 

odpowiada pakietem z ustawionymi flagami ACK i SYN, a numery potwierdzenia i sekwencyjne mają 

wartości odpowiednio 1 i 0. W panelu zawierającym szczegółową informację dotyczącą pakietu zawarta jest 

również nieomawiana do tej pory wartość - MSS=1460.  Skrót MSS rozwijamy jako Maximum Segment 

Size. Jeśli segment TCP ma być przesłany przez sieć działającą w oparciu o protokół IPv4, to MSS 

przyjmuje wartość równą maksymalny rozmiar datagramu IPv4 minus 40. Wartość ta jest przesyłana w 
trakcie faz

y nawiązywania połączenia. Jest to również moment negocjacji okna przesuwnego TCP. 

 

1. 

Jeśli wartość początkowa numeru sekwencyjnego TCP wysłanego przez PC_Client wynosi 0, to 

dlaczego eagle1.example ustawia wartość numeru potwierdzenia na 1? 
____________________________________________________________________ 
____________________________________________________________________ 

 

2. 

Co oznacza wartość 0x04 pola Flags w pakiecie nr 8 wysłanym przez serwer eagle1.example.com? 
____________________________________________________________________ 

 

3. 

W pakiecie nr 9 PC_Client wysyła segment TCP kończący fazę uzgadniania trójetapowego. Jaki 
jest stan flag w tym segmencie? 
____________________________________________________________________ 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zadanie 4: Uzupełnij rozważania końcowe 

 
Krok 1: Dopasuj dane wyświetlone w programie Wireshark do odpowiednich procesów 
 

Uzyskanie informacji wystarczających do wysłania żądania przez przeglądarkę internetową wymagało 

przesłania dziewięciu datagramów pomiędzy PC_Client, serwerem DNS, bramą domyślną i serwerem 

eagle1.example.com. To żądanie (HTTP GET) wysłane przez PC_Client zostało pokazane w pakiecie nr 10. 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 8 z 9 

 

1. 

Wpisz właściwe numery pakietów z panelu listy pakietów w programie Wireshark spełniające 
wymogi na

stępujących opisów: 

 

a. 

Nie można zbudować segmentu TCP, ponieważ brak jest wartości, którą można wpisać w pole 

potwierdzenia. Najpierw należy wykonać proces uzgadniania trójetapowego z serwerem 
eagle1.example.com. ________ 
 

b.  Proces uzgadniania trójetapowego n

ie może zostać przeprowadzony, ponieważ PC_Client nie 

zna adresu IP serwera eagle1.example.com. Problem jest rozwiązany poprzez wysłanie przez 
PC_Client Zapytania DNS do serwera DNS. ________ 

 

c. 

Nie można wysłać Zapytania DNS do serwera DNS, ponieważ nie jest znany adres MAC 

serwera DNS. Aby uzyskać adres MAC serwera DNS rozgłaszane jest w sieci lokalnej 
Zapytanie ARP. ________ 

 

d. 

Nieznany jest adres MAC bramy mogącej przesłać dane do serwera eagle1.example.com. Aby 

poznać adres MAC bramy rozgłaszane jest w sieci lokalnej Zapytanie ARP. ________ 

 

2. 

Pakiet numer 11 zawiera potwierdzenie, wysłane przez eagle1.example.com, otrzymania żądania 

HTTP GET wysłanego przez PC_Client. Żądanie jest zawarte w pakiecie numer 10.  

 

3.  Pakiety o numerach 12, 13 i 15 to segmenty TCP 

wysłane przez eagle1.example.com. Pakiety o 

numerach 14 i 16 zostały wysłane przez PC_Client i są segmentami zawierającymi potwierdzenia.  

 

4. 

Aby sprawdzić, które segmenty są potwierdzane przez segmenty zawierające potwierdzenia, z 

panelu zawierającego listę pakietów w programie Wireshark wybierz pakiet numer 14. Następnie 

przewiń w dół zawartość panelu zawierającego szczegółowe informacje na temat pakietów i znajdź i 

rozwiń sekcję [SEQ/ACK analysis]. Który segment, wysłany przez eagle1.example.com, jest 
potwierdzany przez segment numer 14? _______________ 

 

5. 

Pakiet numer 17 został wysłany przez PC_Client do eagle1.example.com. Przyjrzyj się informacjom 
zawartym w sekcji [SEQ/ACK analysis]. 

Jaki jest cel wysłania tego segmentu? ________ 

 

6. 

Kiedy PC_Client zakończył komunikację z serwerem, przesłał do niego (pakiet numer 18) segment 

z ustawionymi flagami FIN i ACK. Serwer eagle1.example.com odpowiedział segmentem 

potwierdzającym otrzymanie żądania zakończenia połączenia i w ten sposób sesja TCP została 

zamknięta. 

 
K

rok 2: Użyj funkcji "Follow TCP stream" programu Wireshark 

 

Analiza zawartości pakietów może być zajęciem czasochłonnym, podatnym na błędy i przez to 

zniechęcającym. Program Wireshark posiada opcję pozwalającą na pokazanie całego strumienia TCP w 
oddzielny

m oknie. Aby skorzystać z tej funkcji należy najpierw zaznaczyć segment TCP w panelu 

zawierającym listę przechwyconych pakietów. Następnie, przy użyciu menu Analyze, należy wybrać opcję 
Follow TCP Stream. 

Zostanie wyświetlone okno podobne do przedstawionego na Rysunku 9. 

 

background image

Kurs CCNA Exploration 
Podstawy sieci komputerowych 
Konfiguracja i testowanie sieci 

       Laboratorium 11.5.6:  

Końcowe studium przypadku - Analiza datagramu w programie Wireshark. 

 
 

Cała zawartość niniejszych materiałów jest własnością Cisco Systems, Inc. ©1992-2007 Wszelkie prawa zastrzeżone. Ten dokument zawiera publicznie 

dostępne informacje firmy Cisco. 

Strona 9 z 9 

 

Rysunek 9. Zawartość strumienia TCP 

Zadanie 5: Wnioski 

 

Użycie analizatora ruchu sieciowego może pełnić istotną rolę w procesie dydaktycznym pozwalając na 

zrozumienie kluczowych elementów procesu komunikacyjnego. Jeśli administrator zaznajomi się z 

protokołami komunikacyjnymi, ten sam analizator ruchu sieciowego może stać się dla niego również 

nieocenionym narzędziem wspomagającym rozwiązywanie problemów w trakcie awarii sieci. Jeśli na 

przykład przeglądarka internetowa nie może połączyć się z serwerem, to przyczyn tego problemu może być 

wiele. Analizator ruchu sieciowego może wtedy pokazać, że problem jest związany z zapytaniami ARP, 

zapytaniami DNS lub brakiem potwierdzeń pakietów. 

 

Zadanie 6: Podsumowanie 

 

Ćwiczenie pomogło studentowi zrozumieć sposób, w jaki komunikują się między sobą klient i serwer WWW. 

Protokoły wspomagające, takie jak DNS i ARP używane są w celu uzyskania brakujących wartości 

potrzebnych do uzupełnienia pakietów IP (DNS) i ramek Ethernet (ARP). Zanim rozpocznie się sesja TCP, 

musi zostać przeprowadzona faza uzgadniania trójetapowego pozwalająca na stworzenie niezawodnej 

ścieżki pomiędzy komunikującymi się stronami i pozwalająca im na uzyskanie początkowych informacji 

wymaganych do zbudowania nagłówka TCP. Na końcu, klient zamyka sesję TCP poprzez wysłanie 

komunikatu zawierającego ustawioną flagę FIN. 


Document Outline