\item\code{403}$\Rightarrow$ Forbidden $\Rightarrow$ Der Webserver hat \zB keinen Zugriff (auf ein Verzeichnis). Oder man greift auf ein Verzeichnis zu, ohne eine Datei anzugeben (und es gibt keine \pfad{index.html} und das Verzeichnislisting ist deaktiviert). \newline
\enquote{Wenn ich eine solche Meldung erhalte, erhält sie jeder!}
\item\code{404}$\Rightarrow$ Not Found: Der Pfad wurde nicht gefunden
\item\code{500}$\Rightarrow$ Internal Server Error
\item\code{505}$\Rightarrow$ HTTP Version Not Supported $\Rightarrow$ Der Server wird mit einer Version angesprochen, die er nicht unterstützt. Heute eher selten.
\end{itemize}
\end{itemize}
\subsection{HTTP Header}
Die Statuszeile wird gefolgt von einer oder mehreren \acs{HTTP}-Header-Zeilen im Format: \newline
\code{<HTTP-Headername>: <Wert>}, \zB
\begin{description}[noitemsep]
\item[\code{Content-Type: text/html}] Der Wert ist ein \acf{MIME-Type}
\item\textbf{Achtung}: Alle \acsp{MIME-Type} sind standardisierte Werte! Diese werden standardisiert von der \enquote{IANA} (Teil der \enquote{IETF} ) \newline
\item[\code{Expires: <US Datum>}] ebenfalls wichtig für Caches und Proxies
\item[\code{Content-Language:<Sprache des Inhalts>}] Menschliche Sprache des Inhalts. Kann auch bei Bildern angegeben werden, wenn dort \zB Text drauf steht.
\begin{itemize}[noitemsep]
\item 2-Letter-ISO-Language-Code ggf. mit Sprachvariante, \zB\code{de/DE-AT}, \code{fr}
\end{itemize}
\end{description}
Eine Leerzeile beendet die \acs{HTTP}-Header-Zeilen, danach folgt das Dokument. Die Leerzeile enthält \textbf{keine} Zeichen, auch keine Leerzeichen!
\code{GET /pfad/zur/ressource HTTP/1.0}$\Rightarrow$ Problem: Der \acs{FQDN} steht nicht im Request bei \acs{HTTP} 1.0 und wird nicht einmal für den \acs{TCP}-Verbindungsaufbau verwendet \newline
$\Rightarrow$\textit{Der Webserver weiß nicht, welche Präsenz angefragt ist!}
\acs{HTTP} 1.0 kann nicht erkennen, von welchem \acs{FQDN} der Request kommt! Siehe \autoref{sec:multi_präsenzen} für Möglichkeiten, dennoch verschiedene Webpräsenzen zu unterscheiden.
Jetzt gibt es persistente Verbindungen, \dash eine \acs{TCP}-Verbindung wird nacheinander für meherere Request/Response-Paare zwischen Client und Server genutzt. \newline
Es muss somit nicht jeweils eine neue Verbindung aufgebaut werden. Bereits vorher bei \acs{HTTP} 1.0 gab es ähnliches, nämlich den \enquote{Connection: Keepalive}-Header. Dieser ist jedoch nicht standard-konform und nur teilweise implementiert!
\item Multiplexen mehrerer \acs{HTTP}-Requests über eine \acs{TCP}-Verbindung per \enquote{Stream-ID} ist möglich
\item Komprimierung (auch) der \acs{HTTP}-Header möglich.
\item\enquote{Server-Push}\footnote{\url{https://en.wikipedia.org/wiki/HTTP/2_Server_Push}}, \dash ein Webserver kann nach dem Request auf eine Ressource weitere damit in Zusammenhang stehende Ressourcen mitschicken, ohne dass diese explizit vom Client angefordert wurden.
\end{itemize}
\newpage
\section[Mehrere Web-Präsenzen auf einem Server]{Bereitstellung/Unterscheidung von mehreren Web-Präsenzen auf einem (großen) Webserver}\label{sec:multi_präsenzen}
\begin{enumerate}[noitemsep]
\item über den Pfad/das Verzeichnis
\begin{itemize}[noitemsep]
\item\code{http://www.uni.de/$\sim$<nachname>/}\index{Sonderzeichen!Tilde in URL}$\Rightarrow$ Mit Tilde: Unterverzeichnis im Home-Verzeichnis. Nicht für professionelle Web-Angebote geeignet.
\end{itemize}
\item über verschiedene Portnummern $\Rightarrow$ auch nicht professionell
\begin{itemize}[noitemsep]
\item\code{http://www.uni.de:4711/}
\item\code{http://www.uni.de:0815/}
\end{itemize}
\item per \acf{FQDN}\index{FQDN}\enquote{Rechner} oder \enquote{Domain}-Name, welche per DNS auf eine IP-Adresse umgesetzt werden (A-Record oder Alias-Eintrag), \newline
\zB\code{http://dhbw-karlsruhe.de}, \code{http://www.uni-karlsruhe.de}$\Rightarrow$ Dies gilt als professionell
\item mehrere IP Adressen für eine Netzwerkkarte ($\Rightarrow$ bei allen halbwegs modernen Betriebssystemen möglich, bei unixoiden Betriebssystemen \enquote{schon immer}, bei Windows seit WindowsNT [nicht bei Windows 3.1])
\begin{itemize}[noitemsep]
\item Reichen die IP-Adressen aus?
\item Wie viele IP-Adressen gibt es?
\item Siehe \autoref{sec:ipv4_adressen} auf Seite~\pageref{sec:ipv4_adressen}