Initial commit.
|
@ -0,0 +1,96 @@
|
||||||
|
## Core latex/pdflatex auxiliary files:
|
||||||
|
*.aux
|
||||||
|
*.lof
|
||||||
|
*.log
|
||||||
|
*.lot
|
||||||
|
*.fls
|
||||||
|
*.out
|
||||||
|
*.toc
|
||||||
|
|
||||||
|
## Intermediate documents:
|
||||||
|
*.dvi
|
||||||
|
/*.ps
|
||||||
|
/*.eps
|
||||||
|
/*.pdf
|
||||||
|
|
||||||
|
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||||
|
*.bbl
|
||||||
|
*.bcf
|
||||||
|
*.blg
|
||||||
|
*-blx.aux
|
||||||
|
*-blx.bib
|
||||||
|
*.run.xml
|
||||||
|
|
||||||
|
## Build tool auxiliary files:
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.synctex.gz
|
||||||
|
*.synctex.gz(busy)
|
||||||
|
*.pdfsync
|
||||||
|
|
||||||
|
## Auxiliary and intermediate files from other packages:
|
||||||
|
|
||||||
|
# algorithms
|
||||||
|
*.alg
|
||||||
|
*.loa
|
||||||
|
|
||||||
|
# amsthm
|
||||||
|
*.thm
|
||||||
|
|
||||||
|
# beamer
|
||||||
|
*.nav
|
||||||
|
*.snm
|
||||||
|
*.vrb
|
||||||
|
|
||||||
|
# glossaries
|
||||||
|
*.acn
|
||||||
|
*.acr
|
||||||
|
*.glg
|
||||||
|
*.glo
|
||||||
|
*.gls
|
||||||
|
|
||||||
|
# hyperref
|
||||||
|
*.brf
|
||||||
|
|
||||||
|
# listings
|
||||||
|
*.lol
|
||||||
|
|
||||||
|
# makeidx
|
||||||
|
*.idx
|
||||||
|
*.ilg
|
||||||
|
*.ind
|
||||||
|
*.ist
|
||||||
|
|
||||||
|
# minitoc
|
||||||
|
*.maf
|
||||||
|
*.mtc
|
||||||
|
*.mtc0
|
||||||
|
|
||||||
|
# minted
|
||||||
|
*.pyg
|
||||||
|
|
||||||
|
# nomencl
|
||||||
|
*.nlo
|
||||||
|
|
||||||
|
# sagetex
|
||||||
|
*.sagetex.sage
|
||||||
|
*.sagetex.py
|
||||||
|
*.sagetex.scmd
|
||||||
|
|
||||||
|
# sympy
|
||||||
|
*.sout
|
||||||
|
*.sympy
|
||||||
|
sympy-plots-for-*.tex/
|
||||||
|
|
||||||
|
# todonotes
|
||||||
|
*.tdo
|
||||||
|
|
||||||
|
# xindy
|
||||||
|
*.xdy
|
||||||
|
|
||||||
|
# Pandoc output
|
||||||
|
/*.tex
|
||||||
|
/*.odt
|
||||||
|
/*.docx
|
||||||
|
|
||||||
|
# Aufgabenblatt
|
||||||
|
!AA_*.pdf
|
|
@ -0,0 +1,187 @@
|
||||||
|
---
|
||||||
|
author: Carl Kittelberger
|
||||||
|
title: "ITS: \\ IP und ICMP"
|
||||||
|
date: 2018-03-01
|
||||||
|
|
||||||
|
papersize: a4
|
||||||
|
documentclass: report
|
||||||
|
classoption: oneside
|
||||||
|
#classoption: draft
|
||||||
|
mainfont: Arial
|
||||||
|
sansfont: Arial
|
||||||
|
fontsize: 12pt
|
||||||
|
|
||||||
|
toc: true
|
||||||
|
|
||||||
|
header-includes:
|
||||||
|
|
||||||
|
# For \textcolor
|
||||||
|
- \usepackage{xcolor}
|
||||||
|
|
||||||
|
# Long tables (used by pandoc latex template itself)
|
||||||
|
- \usepackage{longtable}
|
||||||
|
|
||||||
|
# Localization to German for all package injections
|
||||||
|
- \usepackage[ngerman]{babel}
|
||||||
|
|
||||||
|
|
||||||
|
# Fancy header!
|
||||||
|
- \usepackage{fancyhdr}
|
||||||
|
- \usepackage{graphicx}
|
||||||
|
- \pagestyle{fancy}
|
||||||
|
- \fancyhf{}
|
||||||
|
- \fancyhead[L]{\large{\textit{\textbf{ITS} \\ IP und ICMP}}}
|
||||||
|
- \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
|
||||||
|
- \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
|
||||||
|
- \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage}}}
|
||||||
|
- \renewcommand{\headrulewidth}{0.4pt}
|
||||||
|
- \renewcommand{\footrulewidth}{0.4pt}
|
||||||
|
- \setlength\headheight{36pt}
|
||||||
|
- \fancypagestyle{plain}{}
|
||||||
|
|
||||||
|
# monospace
|
||||||
|
- \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true}
|
||||||
|
- \lstset{framextopmargin=50pt}
|
||||||
|
---
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
# Analyse eines Pings
|
||||||
|
|
||||||
|
Im Folgenden wurde die IP-Adresse `8.8.8.8` als Ziel für die Pinganfragen verwendet,
|
||||||
|
die untersucht werden. Die Pinganfragen wurden von einer VM mit Netzwerkbrücke
|
||||||
|
auf einem Ethernetadapter durchgeführt und Wireshark wurde zur Aufzeichnung
|
||||||
|
innerhalb der VM verwendet.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Im ersten Screenshot lässt sich ablesen, dass die *IP-Adresse des Computers* von
|
||||||
|
dem die Pinganfrage verschickt wurde **`192.168.188.52`** lautet.
|
||||||
|
|
||||||
|
Der *Typ* des IP-Pakets ist als Wert **`1` (`ICMP`)** angegeben.
|
||||||
|
|
||||||
|
Im IP-Paket sind insgesamt laut Wireshark **84 Bytes** enthalten, davon belegt der
|
||||||
|
*IP-Header* **20 Bytes**, die restlichen **64 Bytes** sind die tatsächliche
|
||||||
|
*Nutzlast* des IP-Pakets, die aus der ICMP-Nachricht besteht.
|
||||||
|
|
||||||
|
Die *Roundtrip Time (RTT)* ist der Zeitabstand zwischen Versand des Anfragepakets
|
||||||
|
und Erhalten des Antwortpakets. Im Screenshot sieht man als Interval für die
|
||||||
|
erste Anfrage (Pakete 1 und 2) **etwa 15,05 Millisekunden**.
|
||||||
|
|
||||||
|
Die *Identifikationsnummern* lauten laut Wireshark für das IP-Paket selbst
|
||||||
|
`0x7566 (30054)` und das ICMP-Paket selbst hat die Identifikationsnummern
|
||||||
|
im *Big-Endian-Format (BE)* `3533` oder `0x0dcd` bzw. im *Little-Endian-Format (LE)*
|
||||||
|
`52493` oder `0xcd0d`. Im zweiten Screenshot sieht man, dass die Identifikationsnummern
|
||||||
|
für das Antwortpaket genau gleich sind. Wären diese Nummern verschieden, könnte
|
||||||
|
die Antwort der Anfrage nicht mehr zugeordnet werden.
|
||||||
|
|
||||||
|
Das IP-Paket der Anfrage wurde nicht fragmentiert. Fragmentiert ist ein Paket erst dann,
|
||||||
|
wenn es beim Versenden in mehrere Teile aufgespalten wurde und der entsprechende
|
||||||
|
Flag für die Fragmentierung im IP-Header gesetzt wurde, was hier nicht der Fall ist
|
||||||
|
(der Flag ist `0x4000` was Wireshark entsprechend als `Don't fragment` anzeigt).
|
||||||
|
|
||||||
|
## Analyse eines fragmentierten Pings
|
||||||
|
|
||||||
|
### Ping mit 2000 Bytes Inhalt
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Die *IP-Adressen* haben sich nicht geändert.
|
||||||
|
|
||||||
|
Der IP-Header enthält als *Typ* ebenso noch den gleichen Wert.
|
||||||
|
|
||||||
|
Die Headergröße hat sich ebenfalls nicht verändert, aber die Größe der *Nutzlast*
|
||||||
|
ist jetzt auf **1500 Bytes** angewachsen. Die restlichen **500 Bytes** finden
|
||||||
|
sich in einem Folgepaket das aufgrund der Fragmentierung mitgeschickt wurde.
|
||||||
|
|
||||||
|
Die *Roundtrip Time* beträgt jetzt **16,93 Millisekunden** (Unterschied Paket 1 zu 3).
|
||||||
|
|
||||||
|
### Ping mit 3500 Bytes Inhalt
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Die Änderungen sind ähnlich wie oben, außer dass die *Nutzlast* des ersten Pakets
|
||||||
|
sich nicht mehr ändert und **1500 Bytes** beträgt. Dafür ist ein weiteres Teilpaket
|
||||||
|
dazugekommen, bei dem der zusätzliche Inhalt angehängt wurde.
|
||||||
|
|
||||||
|
Die *Roundtrip Time* beträgt jetzt **15,80 Millisekunden** (Unterschied Paket 1 zu 4).
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Analyse der Fragmentierung
|
||||||
|
|
||||||
|
In dieser Analyse scheinen Daten über 1500 Bytes fragmentiert zu werden. Beide
|
||||||
|
Pakete (2000 Bytes und 3500 Bytes) wurden in max. 1500 Bytes große Datenteile
|
||||||
|
aufgespalten und dann nacheinander verschickt.
|
||||||
|
|
||||||
|
Die wichtige Identifikationsnummer für fragmentierte Pakete ist die `Identification`
|
||||||
|
im IP-Header, nicht die `Identifier`-Felder im ICMP-Paket, denn dieses wurde
|
||||||
|
in mehrere Teile zerspaltet und um das Paket zusammensetzen zu können muss stattdessen
|
||||||
|
die Quelle mehrere Pakete mit dem gleichen Identifizierer verschicken. Entsprechend sehen wir im obigen Screenshot, dass die IP-ID der Folgepakete in der Übersicht die gleiche ID haben wir der IP-Header des ersten Pakets.
|
||||||
|
|
||||||
|
Während der Analyse konnten wir kaum wertvolle Informationen zur Änderung der
|
||||||
|
*Roundtrip Time* abhängig von der Fragmentierung gewinnen. In der Theorie braucht
|
||||||
|
es länger, größere Datenmengen zu verschicken, vor allem wenn diese vorher in mehrere
|
||||||
|
Teile aufgespalten wurden und für jeden Teil ein weiterer Header mitverschickt wird.
|
||||||
|
Die Übertragung läuft jedoch hier in der Praxis so schnell ab, dass andere Abweichungen
|
||||||
|
in der Übertragung sich stärker in der RTT abbilden.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Analyse einer Routenverfolgung
|
||||||
|
|
||||||
|
Im Folgenden wurde `reutlingen.de` explizit über IPv4 als Ziel für die Routenverfolgung
|
||||||
|
verwendet. Das Tool das eingesetzt wurde ist `tracepath` (mit entsprechendem `-4` Flag).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Wireshark registriert eine Sequenz von Paketen vom Typ DNS, UDP und meistens ICMP als Antwort.
|
||||||
|
Die Pakete der eigentlichen Anfragen zur Routenverfolgung werden über **UDP** versendet.
|
||||||
|
Dabei fällt auf, dass die UDP-Pakete von oben nach unten beginnend von einer *Time-To-Live (TTL)*
|
||||||
|
**von `1` inkrementierend größere Werte** (`2`, dann `3`, usw.) zugewiesen bekommen.
|
||||||
|
|
||||||
|
Die *Antwort* auf alle Pakete ist immer ein **ICMP**-Paket. Alle Antworten bis auf
|
||||||
|
das letzte Paket sind ein **ICMP-Paket mit der Nachricht "Time-to-live exceeded"**.
|
||||||
|
Diese Antwort wird von dem jeweiligen routenden Knotenserver selbst verschickt
|
||||||
|
und daran misst `tracepath` die Zeit und die Reaktionsfähigkeit des jeweiligen
|
||||||
|
Knotens.
|
||||||
|
|
||||||
|
Die *ersten beiden Knotenpunkte* in diesem Fall sind:
|
||||||
|
|
||||||
|
- `192.168.188.1` (`fritz.box`) - der Router im lokalen Netzwerk.
|
||||||
|
- `62.214.63.94` (`i59F4DCE4.versanet.de`) - der erste externe Router aus dem ISP-Netzwerk.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# ICMP
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Ein ICMP-Paket ist wie folgt aufgebaut:
|
||||||
|
|
||||||
|
- **`Type`** - ein Wert der die Art der ICMP-Nachricht angibt, z. B. `8` für eine Echo-Anfrage oder `11` für *Time-to-live exceeded*. **Weitere Typen** wären:
|
||||||
|
- `0` - Echo Reply
|
||||||
|
- `3` - Destination Unreachable
|
||||||
|
- `5` - Redirect (IP-Umleitung)
|
||||||
|
- `9` - Router Advertisement (wird benutzt um einem Rechner den Router bekannt zu machen zur IP-Vergabe). Gegenstück dazu: `10` (Router Solicitation)
|
||||||
|
- `12` - Parameter Problem (bei ungültigen Inhalten in einer ICMP-Anfrage)
|
||||||
|
- `13` - Timestamp. Gegenstück: `14` (Timestamp Reply)
|
||||||
|
- **`Code`** - ein separater Code zur Angabe einer Fehlerursache oder eines anderen Details
|
||||||
|
- **`Checksum`** - ein Hash des Pakets zum Sicherstellen einer korrekten Übertragung
|
||||||
|
- **Informationen zu ursprünglichen Anfragepaketen**, meisten IP-Paket und dessen Inhalt. Aufgrund der Informationen die hier enthalten sind (wie der Identifizierer) weiß der Empfänger der Nachricht **basiend auf diesen Informationen auf welche ursprünglich gesendeten Pakete sich diese ICMP-Meldung bezieht.**
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Quellenangaben
|
||||||
|
|
||||||
|
- https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-types
|
|
@ -0,0 +1,73 @@
|
||||||
|
PANDOC = pandoc
|
||||||
|
LATEX = lualatex
|
||||||
|
LATEX_FLAGS = \
|
||||||
|
-file-line-error \
|
||||||
|
-recorder \
|
||||||
|
-interaction=nonstopmode \
|
||||||
|
-halt-on-error \
|
||||||
|
--shell-escape
|
||||||
|
PANDOC_FLAGS = --top-level-division=section
|
||||||
|
PANDOC_DOCX_FLAGS = --reference-doc=pandoc/reference.docx
|
||||||
|
PANDOC_ODT_FLAGS = --reference-doc=pandoc/reference.odt
|
||||||
|
SOFFICE = soffice
|
||||||
|
SOFFICE_FLAGS = --headless
|
||||||
|
|
||||||
|
MARKDOWN_INPUTS = $(wildcard *.md)
|
||||||
|
|
||||||
|
.PHONY: all build clean clean-pdf clean-tex clean-odt clean-docx default
|
||||||
|
|
||||||
|
TEXINPUTS := .:./pkg/:$(TEXINPUTS)
|
||||||
|
export TEXINPUTS
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
all: all-docx all-odt all-pdf all-tex
|
||||||
|
|
||||||
|
all-tex: $(addsuffix .tex,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
all-docx: $(addsuffix .docx,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
all-odt: $(addsuffix .odt,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
all-pdf: $(addsuffix .pdf,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
clean: clean-docx clean-odt clean-pdf clean-tex
|
||||||
|
|
||||||
|
clean-docx:
|
||||||
|
rm -f $(addsuffix .docx,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
clean-tex:
|
||||||
|
rm -f $(addsuffix .tex,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
clean-pdf:
|
||||||
|
rm -f \
|
||||||
|
$(addsuffix .aux,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .pdf,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .out,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .fls,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .log,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .toc,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
missfont.log
|
||||||
|
|
||||||
|
clean-odt:
|
||||||
|
rm -f $(addsuffix .odt,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
%.docx: %.odt
|
||||||
|
$(SOFFICE) $(SOFFICE_FLAGS) --convert-to docx $<
|
||||||
|
|
||||||
|
%.odt: %.md
|
||||||
|
@echo $< "->" $@
|
||||||
|
tmpname=$(shell mktemp ~.tmp_XXXXXX.odtpandoc) &&\
|
||||||
|
$(PANDOC) $(PANDOC_FLAGS) $(PANDOC_ODT_FLAGS) $< -o "$$tmpname" &&\
|
||||||
|
$(SOFFICE) $(SOFFICE_FLAGS) --convert-to odt "$$tmpname" &&\
|
||||||
|
rm -f "$$tmpname" &&\
|
||||||
|
mv "$$(basename "$$tmpname" .odtpandoc).odt" $@
|
||||||
|
|
||||||
|
%.pdf: %.tex
|
||||||
|
@echo $< "->" $@
|
||||||
|
$(LATEX) $(LATEX_FLAGS) $(LATEX_PDF_FLAGS) $< 1>/dev/null
|
||||||
|
$(LATEX) $(LATEX_FLAGS) $(LATEX_PDF_FLAGS) $< 1>/dev/null
|
||||||
|
|
||||||
|
%.tex: %.md
|
||||||
|
@echo $< "->" $@
|
||||||
|
$(PANDOC) $(PANDOC_FLAGS) $(PANDOC_TEX_FLAGS) --listings -s $< -o $@
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 354 KiB |
After Width: | Height: | Size: 356 KiB |