Skip to content
Snippets Groups Projects
Commit 7e94aed6 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 3.5.2024

parent 07372d3e
Branches
No related tags found
No related merge requests found
File added
% es-20240503.pdf - Lecture Slides on Embedded Systems
% Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: TCP/IP
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{tikz}
\newcommand{\underconstruction}{%
\begin{picture}(0,0)
\put(9,0.9){\makebox(0,0)[b]{\includegraphics[width=1.5cm]{Zeichen_123.pdf}}}
\put(9,0.6){\makebox(0,0)[t]{\shortstack{Änderungen\\vorbehalten}}}
\end{picture}}
\title{Eingebettete Systeme}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{3.\ Mai 2024}
\begin{document}
\maketitleframe
\setcounter{section}{2}
\section{Einführung in Unix}
\setcounter{subsection}{2}
\subsection{Dateisysteme}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\newterm{ausführbare\/} Dateien
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡cat test¿
ls -l systech-20131008.*
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡chmod +x test¿
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡ls -l test¿
-rwxr-xr-x 1 peter peter 25 Okt 6 16:45 test
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡./test¿
-rw-r--r-- 1 peter peter 4120 Okt 6 16:44 systech-20131008.aux
...
\end{lstlisting}
\endgroup
% \pause
\begin{itemize}
\item
ausführbare Textdateien: \newterm{Skripte}
% \pause
\smallskip
hier: ausführbare Textdatei mit Shell-Befehlen\\
(ohne spezielle Kennung): Shell-Skript
\pause
\smallskip
Kennung: 1.\ Zeile enthält \lstinline[style=terminal]{#!} und den Interpreter,\\
z.\,B.\ \lstinline[style=terminal]{#!/bin/bash}\\
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\newterm{Symbolische Verknüpfungen -- symbolic links}
\smallskip
Verweis auf die eigentliche Datei\\
\textarrow\ Wenn man die Datei löscht, zeigt der Link ins Leere.
\smallskip
Verknüpfung anlegen: \lstinline[style=cmd]{ln -s datei link}\\
(Richtung: wie bei \lstinline[style=cmd]{cp})
\smallskip
Beispiel: \lstinline[style=cmd]{ln -s opengel-magic-double.c opengl-magic.c}
\medskip
\item
\newterm{Harte Verknüpfungen -- hard links}
\smallskip
Dieselben Daten auf dem Datenträger\\
sind unter mehreren Namen verfügbar.\\
\textarrow\ Wenn man einen löscht, sind die Daten noch da.
\smallskip
Anwendungsbeispiel: Snapshot-Backup
\smallskip
Bei Verzeichnissen: \newterm{hard links\/} halten die Verzeichnisstruktur zusammen
\begin{itemize}
\item eigentlicher Name
\item \lstinline{.} von sich selbst aus
\item \lstinline{..} von Unterverzeichnissen aus
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{find}: Dateien anhand ihrer Eigenschaften suchen
\end{itemize}
\small
\begin{lstlisting}[style=terminal,xleftmargin=-7pt]
$ ¡find . -name "*orbit-x*"¿
./20131031.0/orbit-x.c
./20131031.0/orbit-x1.c
./20131031.0/orbit-x
./20131107.0/orbit-x.c
./20131107.0/orbit-x1.c
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x¿
./20131031.0/orbit-x
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x -exec ls -l {} \;¿
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131031.0/orbit-x
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131107.0/orbit-x
\end{lstlisting}
\end{frame}
\subsection{Ein- und Ausgabeströme}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Standard-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist ein Test." > test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
\end{lstlisting}
\pause
\smallskip
\begin{itemize}
\item
Standard-Ausgabe an Datei anhängen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist noch ein Test." >> test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
Dies ist noch ein Test.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Fehler-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡cat gibtsnicht.txt > fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
$ ¡cat fehler.txt¿
$ ¡cat gibtsnicht.txt 2> fehler.txt¿
$ ¡cat fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
Standard-Eingabe aus Datei lesen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡bc¿
bc 1.06.95
Copyright [...] 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
¡2 + 2¿
4
$ ¡echo "2 + 2" > test.bc¿
$ ¡bc < test.bc¿
4
\end{lstlisting}
\end{frame}
\subsection{Pipes}
\begin{frame}[fragile]
\showsubsection
Standard-Ausgabe von Programm A\\
wird zu Standard-Eingabe von Programm B
\smallskip
\begin{lstlisting}[style=terminal]
$ ¡echo "2 + 2" | bc¿
4
\end{lstlisting}
\smallskip
\textarrow\ sehr mächtiger "`Baukasten"'
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{sed}: \emph{stream editor}\\
Suchen und Ersetzen (und noch viel mehr)
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Schlimmer geht nimmer." | sed -e 's/nim/im/g'¿
Schlimmer geht immer.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{grep}: Standard-Eingabe durchsuchen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡ls | grep slides¿
pgslides.sty
$ ¡ls *.pdf | grep -v fig¿
logo-hochschule-bochum-cvh-text.pdf
logo-hochschule-bochum.pdf
NPN_transistor_basic_operation.pdf
rtech-20131002.pdf
$ ¡ls -l $(ls *.pdf | grep -v fig)¿
-rw-r--r-- 1 peter peter 14488 Sep 2 21:02 logo-hochschule-bochum-cvh-text.pdf
-rw-r--r-- 1 peter peter 31581 Dez 26 2011 logo-hochschule-bochum.pdf
-rw-r--r-- 1 peter peter 8538 Okt 2 2012 NPN_transistor_basic_operation.pdf
-rw-r--r-- 1 peter peter 6753149 Okt 1 22:59 rtech-20131002.pdf
\end{lstlisting}
\end{frame}
\subsection{Verzweigungen und Schleifen}
\begin{frame}[fragile]
\showsubsection
\begin{lstlisting}[style=terminal]
$ ¡if grep Pipes test.txt; then echo "gefunden"; \
else echo "nicht gefunden"; fi¿
nicht gefunden
$ ¡for x in foo bar baz; do echo $x; done¿
foo
bar
baz
\end{lstlisting}
\end{frame}
\section{TCP/IP in der Praxis}
\iffalse
\setcounter{subsection}{-1}
\subsection{Vorbereitungen\quad {\color{red}(Nicht auf allen Rechnern ausführen!)}}
\begin{frame}[fragile]
\showsection
{\large\textbf{Literatur:}}\\[\smallskipamount]
\url{http://www.peter.gerwinski.de/download/net-2013ss.tar.gz}
\bigskip\bigskip
\showsubsection
\begin{itemize}
\item
Verkabelung: Twisted-Pair-Kabel, Switches
\item
Automatismen abschalten
\end{itemize}
\medskip
\begin{lstlisting}[style=terminal]
# service network-manager stop
\end{lstlisting}
\end{frame}
\fi
\subsection{IP-Adressen}
\begin{frame}[fragile]
\showsection
\showsubsection
\begin{itemize}
\item \lstinline[style=cmd]{ip addr} (Linux)\\
\lstinline[style=cmd]{ifconfig} (Unix allgemein)\\
\lstinline[style=cmd]{ipconfig} (MS Windows)
\item \lstinline[style=cmd]{ip addr add <Netz>}
% \\
% Beispiel:
% \lstinline[style=cmd]{ip addr add 192.168.2.197/24}\\
% \includegraphics[width=7cm]{../20171026/photo-20171026-142620.jpg}
\item \lstinline[style=cmd]{ip link}
\item \lstinline[style=cmd]{ping <IP-Adresse>}
\end{itemize}
\medskip
\begin{lstlisting}[style=terminal]
# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host> [...]
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.42.101 netmask 255.255.255.0
broadcast 192.168.42.255
ether be:3f:ca:aa:7e:51 txqueuelen 1000 (Ethernet)
[...]
\end{lstlisting}
\end{frame}
\begin{frame}
\showsubsection
IPv4-Adressen:
\begin{itemize}
\item
32 Bit
\item
dezimal, 4 Gruppen zu je 8 Bit (0--255), durch Punkte getrennt
\end{itemize}
\medskip
IPv6-Adressen:
\begin{itemize}
\item
128 Bit
\item
hexadezimal, 8 Gruppen zu je 4 Hex-Ziffern, durch Doppelpunkte getrennt
\item
Führende Nullen dürfen weggelassen werden.
\item
Zwei Dopppelpunkte bedeuten: Mit Nullen auffüllen.
\item
Literatur und Beispiel: \url{https://de.wikipedia.org/wiki/IPv6}
\end{itemize}
\end{frame}
\subsection{MAC-Adressen}
\begin{frame}
\showsubsection
MAC = Media Access Control
\smallskip
MAC-Adresse = Hardware-Adresse = Ethernet-Adresse
\begin{itemize}
\item \lstinline[style=cmd]{ip neig}\\
\lstinline[style=cmd]{arp}
\end{itemize}
\end{frame}
\subsection{TCP- und UDP-Ports}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{nc <IP> <Port>}\\
Verbindung zu Programm $\langle$Port$\rangle$
auf Rechner $\langle$IP$\rangle$ aufnehmen
\item
\lstinline[style=cmd]{nc -l <Port>}
oder
\lstinline[style=cmd]{nc -p <Port> -l}\\
auf eingehende Verbindungen warten ("`lauschen"')
\medskip
\item
TCP-Ports: Verbindungskonzept, Netzwerk prüft
\item
UDP-Ports: einzelne Pakete, Anwendung muß selbst prüfen
\item
ICMP: keine Ports, nur Rechner:\\
Erreichbarkeit, Eigenschaften der Übertragung
\end{itemize}
\medskip
\begin{center}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{|l|}\hline
Anwendung: HTTP, SMTP, \dots \\\hline
Transport: TCP-/UDP-Ports, ICMP \\\hline
Internet: IP-Adresse \\\hline
Netzwerkzugang: Hardware-/MAC-Adresse \\\hline
\end{tabular}
\end{center}
\end{frame}
\subsection{TCP-Protokolle}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\textbf{HTTP}\\
\lstinline[style=cmd]{GET / HTTP/1.1}\\
\lstinline[style=cmd]{Host: www.hs-bochum.de}\\
(Leerzeile)
% \begin{onlyenv}<2>
% \par\medskip
% URL: Schema://Benutzer:Passwort@Rechner:port/Pfad?Query\#Fragment
% \end{onlyenv}
\begin{onlyenv}<2->
\medskip
\item
\textbf{SMTP}\\
\lstinline[style=cmd]{HELO cassini}\\
\lstinline[style=cmd]{MAIL FROM: <example@example.com>}\\
\lstinline[style=cmd]{RCPT TO: <beispiel@example.de>}\\
(E-Mail-Header -- Teil der Nutzdaten)\\
\lstinline[style=cmd]{From: Eddie Example <example@example.com>}\\
\lstinline[style=cmd]{To: Bert Beispiel <beispiel@example.de>}\\
\lstinline[style=cmd]{Subject: Hello, world!}\\
(Leerzeile)\\
\lstinline[style=cmd]{Hi, there!}\\
\lstinline[style=cmd]{.}
\medskip
\item
Protokolle "`mal eben"' selbst schreiben:
\lstinline[style=cmd]{nc -c} oder \file{inetd}
\end{onlyenv}
\end{itemize}
\end{frame}
\subsection{Routing}
\begin{frame}[fragile]
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{ip route} (Linux)\\
\lstinline[style=cmd]{route} (MS-Windows, Unix)\\
\lstinline[style=cmd]{netstat -nr} (MacOS)
% \\[\medskipamount]
% \includegraphics[width=11cm]{../20171026/photo-20171026-162455.jpg}
\end{itemize}
\medskip
\begin{lstlisting}[style=terminal]
# route -n
Kernel-IP-Routentabelle
Ziel Router Genmask [...] Iface
0.0.0.0 192.168.42.1 0.0.0.0 [...] wlan0
169.254.0.0 0.0.0.0 255.255.0.0 [...] wlan0
192.168.42.0 0.0.0.0 255.255.255.0 [...] wlan0
\end{lstlisting}
\bigskip
Netzmaske:\\
Wenn nach Und-Verknüpfung mit IP-Adresse gleich,
\textarrow\ im gleichen Netz
\medskip
\lstinline[style=terminal]{255.255.240.0} ist dasselbe wie
\lstinline[style=terminal]{/20}\\
(20 Bit sind 1; die restlichen 12 Bit sind 0)
\end{frame}
\subsection{Netzwerkanalyse}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{tcpdump}
\item
\lstinline[style=cmd]{wireshark}
\item
\lstinline[style=cmd]{ettercap}
\end{itemize}
\end{frame}
\subsection{SSH}
\begin{frame}
\showsubsection
\begin{itemize}
\item
\lstinline[style=cmd]{SSH <Rechner>}
\item
\lstinline[style=cmd]{-C}: Komprimierung
\item
\lstinline[style=cmd]{-L}: lokalen Port auf Remote-Port umleiten
\item
\lstinline[style=cmd]{-R}: Remote-Port auf lokalen Port umleiten
\end{itemize}
\end{frame}
\subsection{X11}
\begin{frame}
\showsubsection
\begin{itemize}
\item
Grafik-Bildschirm und Eingabegeräte über's Netz
\item
\lstinline[style=cmd]{DISPLAY}-Variable: X-Server: Rechner und Bildschirm
\item
\lstinline[style=cmd]{ssh -X}: X11-Forwarding
\end{itemize}
\end{frame}
\end{document}
../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment