[Inhalt] Typos; Korrekturen
Typos korrigiert und Inhalt teilweise ergänzt/korrigiert.
This commit is contained in:
parent
fd9601ec83
commit
b4ab50ac3f
6 changed files with 95 additions and 88 deletions
|
@ -43,82 +43,43 @@ Der \enquote{Hyperlink} ist ein Verweis mit automatischer Verweisauflösung. Er
|
||||||
\item \enquote{Erfinder} des Hyperlinks: Vannevar Bush, 1945
|
\item \enquote{Erfinder} des Hyperlinks: Vannevar Bush, 1945
|
||||||
\item siehe \enquote{As we may think}, Atlantic Monthly, 1945
|
\item siehe \enquote{As we may think}, Atlantic Monthly, 1945
|
||||||
\item siehe Maschine \enquote{memex} (Memory extension)
|
\item siehe Maschine \enquote{memex} (Memory extension)
|
||||||
$\Rightarrow$ Information auf Mikrofilm mit Verweismöglichkeit inkl. Automatischer Verweisauflösung
|
$\Rightarrow$ Information auf Mikrofilm mit Verweismöglichkeit inkl. automatischer Verweisauflösung
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Zwei Eigenschaften des \acs{WWW} (\enquote{Erfolgsfaktoren})\label{sec:lokations_medienunabhaengigkeit}\index{WWW}}
|
\subsection{Zwei Eigenschaften des \acs{WWW} (\enquote{Erfolgsfaktoren})\label{sec:lokations_medienunabhaengigkeit}\index{WWW}}
|
||||||
|
|
||||||
\begin{enumerate}[noitemsep]
|
\begin{enumerate}
|
||||||
\item \textbf{Lokationsunabhängigkeit}
|
\item \textbf{Lokationsunabhängigkeit}
|
||||||
|
|
||||||
$\Rightarrow$ unabhängig von der Lokation der Information und der Suchenden;
|
Unabhängig von der Lokation der Information und des Suchenden, kann die
|
||||||
die Information kann immer \enquote{auf die gleiche Weise} beschafft werden.
|
Information immer \enquote{auf die gleiche Weise} beschafft werden.
|
||||||
|
|
||||||
Beim Design des \acs{WWW} von \href{https://de.wikipedia.org/wiki/Tim_Berners-Lee}{Tim Berners-Lee} geplant
|
Beim Design des \acs{WWW} von \href{https://de.wikipedia.org/wiki/Tim_Berners-Lee}{Tim Berners-Lee} geplant.
|
||||||
|
|
||||||
\item \textbf{Medienunabhängigkeit}
|
\item \textbf{Medienunabhängigkeit} \hfill \newline
|
||||||
$\Rightarrow$ Die Information kann grundsätzlich in verschiedenen Medienformen
|
Die Information kann grundsätzlich in verschiedenen Medienformen
|
||||||
(Text, Bild, Video, Audio, \ldots ) vorliegen.
|
(Text, Bild, Video, Audio, \ldots ) vorliegen.
|
||||||
|
|
||||||
Ursprünglich nicht geplant und nicht im Web enthalten. Belege:
|
Ursprünglich nicht geplant und nicht im Web enthalten. Belege:
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}
|
||||||
\item HTML: Hyper \textbf{Text} Markup Language
|
\item HTML: Hyper \textbf{Text} Markup Language
|
||||||
\item HTTP: Hyper \textbf{Text} Transfer Protocol
|
\item HTTP: Hyper \textbf{Text} Transfer Protocol
|
||||||
\item $\Rightarrow$ in ersten Versionen \textbf{nur} Unterstützung von Text vorhanden! (\textbf{Klausurrelevant!})
|
\item[$\Rightarrow$] in ersten Versionen \textbf{nur} Unterstützung von Text vorhanden! (\textbf{Klausurrelevant!})
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
\bigskip
|
|
||||||
|
|
||||||
\begin{table}[h]
|
|
||||||
\begin{tabular}{c|p{34mm}|p{30mm}|p{75mm}}
|
|
||||||
Nr. & Deutsch & Englisch & Beschreibung \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
7 & Anwendungsschicht & Application Layer & Realisierung des Kommunikationsmodells für die jeweilige Anwendung (Client/Server; Peer-to-Peer) \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
6 & Darstellungsschicht & Presentation Layer & Zeichen-/Anwendungskodierung \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
5 & Kommunikations-\newline steuerungsschicht (besser nicht: Sitzungsschicht) & Session Layer & Sychronisierung der Anwendung; Transaktionssteuerung; (\zB RPC Protokoll) \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
4 & Transportschicht & Transport Layer & Verbindungen; Vollständigkeit/Fehlerfreiheit/Reihenfolge; Port-/Anwendungsadressierung; (\acs{TCP}/\acs{UDP}) \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
3 & Vermittlungsschicht & Network Layer & Wegewahl/Routing; Adressierung (mit IP-Adresse) \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
2 & Sicherungsschicht & Data Link Layer & \href{https://de.wikipedia.org/wiki/Logical_Link_Control}{LLC}: Logical Link Control (Integritätsüberprüfung) \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
& & & \href{https://de.wikipedia.org/wiki/Media_Access_Control}{MAC}: Medium Access Control (Adressierung mit \href{https://de.wikipedia.org/wiki/MAC-Adresse}{MAC-Adresse}); Regelung des Zugangs auf das \enquote{shared-medium} \\
|
|
||||||
\midrule
|
|
||||||
|
|
||||||
1 & Bitübertragungs-\newline schicht & Physical Layer & Signalkodierung ; Stecker/Kabelform
|
|
||||||
\end{tabular}
|
|
||||||
\caption{OSI-7-Schichten-Modell}
|
|
||||||
\label{tbl:osi_7_schichten}
|
|
||||||
\end{table}
|
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\section{ISO-OSI-7-Schichten-Architektur}
|
\section{ISO-OSI-7-Schichten-Architektur}
|
||||||
|
|
||||||
Die 7 Schichten des ISO-OSI-7-Schichten-Architektur\index{OSI-7-Schichten-Architektur} werden in \autoref{tbl:osi_7_schichten} auf Seite \pageref{tbl:osi_7_schichten} dargestellt.
|
Die 7 Schichten des ISO-OSI-7-Schichten-Architektur\index{OSI-7-Schichten-Architektur} werden in \autoref{tbl:osi_7_schichten} dargestellt.
|
||||||
|
|
||||||
\textbf{Hinweis}: Schicht 2 kann unterteilt werden.
|
\textbf{Hinweis}: Schicht 2 kann unterteilt werden.
|
||||||
|
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item Ab der Transportschicht werden nur noch Ende zu Ende Verbindungen betrachtet.
|
\item Ab der Transportschicht werden nur noch Ende zu Ende Verbindungen betrachtet.
|
||||||
\item \textit{siehe} Wikipedia\footnote{\url{https://de.wikipedia.org/wiki/OSI-Modell}}
|
\item \textit{siehe} Wikipedia (\url{https://de.wikipedia.org/wiki/OSI-Modell})
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,3 +93,38 @@ Die 7 Schichten des ISO-OSI-7-Schichten-Architektur\index{OSI-7-Schichten-Archit
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
|
|
||||||
\acs{HTTP} als Anwendungsprotokoll des 4-Schichten-Internet-Modells benötigt als unterliegendes Protokoll der Transportschicht \acs{TCP} (\acs{UDP} geht nicht!).
|
\acs{HTTP} als Anwendungsprotokoll des 4-Schichten-Internet-Modells benötigt als unterliegendes Protokoll der Transportschicht \acs{TCP} (\acs{UDP} geht nicht!).
|
||||||
|
|
||||||
|
\medskip
|
||||||
|
\begin{table}[h!]
|
||||||
|
\hspace*{-6mm}
|
||||||
|
\begin{tabular}{c|p{33mm}|p{30mm}|p{89mm}}
|
||||||
|
Nr. & Deutsch & Englisch & Beschreibung \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
7 & Anwendungsschicht & Application Layer & Realisierung des Kommunikationsmodells für die jeweilige Anwendung (Client/Server; Peer-to-Peer) \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
6 & Darstellungsschicht & Presentation Layer & Zeichen-/Anwendungskodierung \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
5 & Kommunikations-\newline steuerungsschicht (besser nicht: Sitzungsschicht) & Session Layer & Sychronisierung der Anwendung; Transaktionssteuerung; (\zB RPC Protokoll) \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
4 & Transportschicht & Transport Layer & Verbindungen; \newline Vollständigkeit/Fehlerfreiheit/Reihenfolge; \newline
|
||||||
|
Port-/Anwendungsadressierung; (\acs{TCP}/\acs{UDP}) \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
3 & Vermittlungsschicht & Network Layer & Wegewahl/Routing; Adressierung (mit IP-Adresse) \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
2 & Sicherungsschicht & Data Link Layer & \href{https://de.wikipedia.org/wiki/Logical_Link_Control}{LLC}: Logical Link Control (Integritätsüberprüfung) \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
& & & \href{https://de.wikipedia.org/wiki/Media_Access_Control}{MAC}: Medium Access Control (Adressierung mit \href{https://de.wikipedia.org/wiki/MAC-Adresse}{MAC-Adresse}); Regelung des Zugangs auf das \enquote{shared-medium} \\
|
||||||
|
\midrule
|
||||||
|
|
||||||
|
1 & Bitübertragungs-\newline schicht & Physical Layer & Signalkodierung; Stecker/Kabelform
|
||||||
|
\end{tabular}
|
||||||
|
\caption{OSI-7-Schichten-Modell}
|
||||||
|
\label{tbl:osi_7_schichten}
|
||||||
|
\end{table}
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
\chapter{\acf{HTTP}}\index{HTTP}\label{sec:http}
|
\chapter{\acf{HTTP}}\index{HTTP}\label{sec:http}
|
||||||
|
|
||||||
\textit{Was ist ein Protokoll\index{Protokoll}?} \newline
|
\textit{\textbf{Was ist ein Protokoll?}} \index{Protokoll} \newline
|
||||||
Ein Protokoll ist verbindliche Vereinbarung (Regeln), wie zwei (oder mehr) Teilnehmer miteinander kommunizieren.
|
Ein Protokoll ist verbindliche Vereinbarung (Regeln), wie zwei (oder mehr) Teilnehmer miteinander kommunizieren.
|
||||||
|
|
||||||
\section{HTTP 0.9 (1991) - Erste Version}\label{http09}
|
\section{HTTP 0.9 (1991) - Erste Version}\label{http09}
|
||||||
Request: \code{GET /pdf/zur/ressource} \newline
|
Request: \code{GET /pdf/zur/ressource} \newline
|
||||||
Response: \code{<Inhalt der Ressource>} \newline
|
Response: \code{<Inhalt der Ressource>}
|
||||||
|
|
||||||
Problem: Nur Plain-Text und \acs{HTML} (erkennbar am Anfang \html{<html>}) sind erlaubt und möglich. \newline
|
Problem: Nur Plain-Text und \acs{HTML} (erkennbar am Anfang \html{<html>}) sind erlaubt und möglich. \newline
|
||||||
Problem: Fehler sind nicht sicher erkennbar.
|
Problem: Fehler sind nicht sicher erkennbar.
|
||||||
|
|
||||||
\section{HTTP 1.0 (1992)}\label{sec:http10}
|
\section{HTTP 1.0 (1992)}\label{sec:http10}
|
||||||
Request: \code{GET /pdf/zur/ressource HTTP/1.0} \newline
|
Request: \code{GET /pdf/zur/ressource HTTP/1.0} \newline
|
||||||
Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle Beschreibung des statuscodes; Reason String>}
|
Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle Beschreibung des statuscodes; Reason String>}, danach Response-Header.
|
||||||
|
|
||||||
\subsection{Status Codes}\label{sec:statuscodes}\index{HTTP!Statuscode}
|
\subsection{Status Codes}\label{sec:statuscodes}\index{HTTP!Statuscode}
|
||||||
|
|
||||||
|
@ -23,7 +24,7 @@ Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle
|
||||||
|
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item \textbf{\code{1xx}}: Informational Codes \newline
|
\item \textbf{\code{1xx}}: Informational Codes \newline
|
||||||
\hspace*{6mm} $\Rightarrow$ Zur Anzeige, dass weitere Daten folgen (Verhinderung von Time-Outs).
|
\hspace*{6mm} $\Rightarrow$ Zur Anzeige, dass weitere Daten folgen (Verhinderung von Timeouts).
|
||||||
|
|
||||||
\item \textbf{\code{2xx}}: Successful Client Requests
|
\item \textbf{\code{2xx}}: Successful Client Requests
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
|
@ -44,8 +45,9 @@ Response: beginnt mit einer Statuszeile: \code{HTTP/1.0 <statuscode> <textuelle
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item \code{400} $\Rightarrow$ Bad Request $\Rightarrow$ Der Request war nicht korrekt.
|
\item \code{400} $\Rightarrow$ Bad Request $\Rightarrow$ Der Request war nicht korrekt.
|
||||||
\item \code{401} $\Rightarrow$ Authorization Required $\Rightarrow$ Eine Autorisierung ist erforderlich.
|
\item \code{401} $\Rightarrow$ Authorization Required $\Rightarrow$ Eine Autorisierung ist erforderlich.
|
||||||
\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). \enquote{Wenn ich eine solche Meldung erhalte, erhält sie jeder!}
|
\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
|
||||||
\item \code{404} $\Rightarrow$ Not Found; Der Pfad wurde nicht gefunden
|
\enquote{Wenn ich eine solche Meldung erhalte, erhält sie jeder!}
|
||||||
|
\item \code{404} $\Rightarrow$ Not Found: Der Pfad wurde nicht gefunden
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\item \textbf{\code{5xx}}: Server Error
|
\item \textbf{\code{5xx}}: Server Error
|
||||||
|
@ -67,18 +69,18 @@ Die Statuszeile wird gefolgt von einer oder mehreren \acs{HTTP}-Header-Zeilen im
|
||||||
\medskip
|
\medskip
|
||||||
\begin{description}[noitemsep]
|
\begin{description}[noitemsep]
|
||||||
\item[\acf{tlmt}] \index{Media-Type!Top Level} $\Rightarrow$ grundsätzliche Medienform (text, image, video, audio, application, [ multipart])
|
\item[\acf{tlmt}] \index{Media-Type!Top Level} $\Rightarrow$ grundsätzliche Medienform (text, image, video, audio, application, [ multipart])
|
||||||
\item[\acf{slmt}] \index{Media-Type!Sub Level} $\Rightarrow$ Angabe der konkreten Codierung (Anwendungscodierung), \zB \code{text/html }, \code{text/plain}, \code{image/jpeg}, \code{video/mp4}, \ldots
|
\item[\acf{slmt}] \index{Media-Type!Sub Level} $\Rightarrow$ Angabe der konkreten Codierung (Anwendungscodierung), \zB \code{text/html}, \code{text/plain}, \code{image/jpeg}, \code{video/mp4}, \ldots
|
||||||
\end{description}
|
\end{description}
|
||||||
\medskip
|
\medskip
|
||||||
|
|
||||||
\item \textbf{Achtung}: Alle \acsp{MIME-Type} sind standardisierte Werte! Dies ist standardisiert von \enquote{IANA} (Teil der \enquote{IETF} ) \newline
|
\item \textbf{Achtung}: Alle \acsp{MIME-Type} sind standardisierte Werte! Diese werden standardisiert von der \enquote{IANA} (Teil der \enquote{IETF} ) \newline
|
||||||
\textbf{Ausnahme}: \acs{slmt} beginnt mit \enquote{\code{x-}}, \zB \code{application/x-meinespezielleirgendwas}
|
\textbf{Ausnahme}: \acs{slmt} beginnt mit \enquote{\code{x-}}, \zB \code{application/x-meinespezielleirgendwas}
|
||||||
|
|
||||||
\item Wird immer mitgegeben, außer man hat \textit{keinen} Content
|
\item Wird immer mitgegeben, außer man hat \textit{keinen} Content
|
||||||
(\zB bei \code{204} [siehe S.~\pageref{sec:http}])!
|
(\zB bei \code{204} [siehe S.~\pageref{sec:http}])!
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\item[\code{Content-Length:<Größe in Bytes>}] Größe der Antwort in Bytes
|
\item[\code{Content-Length: <Größe in Bytes>}] Größe der Antwort in Bytes
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item Wichtig für Anzeige von Download-Fortschrittsbalken
|
\item Wichtig für Anzeige von Download-Fortschrittsbalken
|
||||||
\item Wichtig für Caches in Browsern und Proxies
|
\item Wichtig für Caches in Browsern und Proxies
|
||||||
|
@ -96,13 +98,14 @@ Eine Leerzeile beendet die \acs{HTTP}-Header-Zeilen, danach folgt das Dokument.
|
||||||
|
|
||||||
|
|
||||||
\subsection{Weitere Request-Typen}\index{HTTP!Requests}
|
\subsection{Weitere Request-Typen}\index{HTTP!Requests}
|
||||||
Mit HTTP 1.0 wurden weitere Request Typen eingeführt.
|
Mit \acs{HTTP} 1.0 wurden weitere Request Typen eingeführt.
|
||||||
|
|
||||||
\subsubsection{HEAD-Request}
|
\subsubsection{HEAD-Request}
|
||||||
\code{HEAD /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ liefert nur die Statuszeile und \acs{HTTP}-Headerzeile.
|
\code{HEAD /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ liefert nur die Statuszeile und \acs{HTTP}-Headerzeilen.
|
||||||
|
|
||||||
\subsubsection{POST-Request}
|
\subsubsection{POST-Request}
|
||||||
\code{POST /pfad/zur/ressource HTTP/1.0} $\Rightarrow$ gefolgt von Parametern (signalisiert wie bei einer Response über \acs{HTTP}-Headerzeilen).
|
\code{POST /pfad/zur/ressource HTTP/1.0} \newline
|
||||||
|
$\Rightarrow$ gefolgt von Parametern (signalisiert wie bei einer Response über \acs{HTTP}-Headerzeilen).
|
||||||
|
|
||||||
|
|
||||||
\subsection{Was funktioniert nicht?}
|
\subsection{Was funktioniert nicht?}
|
||||||
|
@ -110,10 +113,12 @@ Mit HTTP 1.0 wurden weitere Request Typen eingeführt.
|
||||||
\acs{HTTP} 1.0 funktioniert gut, aber was funktioniert nicht bzw. was geht besser?
|
\acs{HTTP} 1.0 funktioniert gut, aber was funktioniert nicht bzw. was geht besser?
|
||||||
|
|
||||||
Ist es möglich, mehrere \acs{FQDN} auf eine IP-Adrese zu leiten? \newline
|
Ist es möglich, mehrere \acs{FQDN} auf eine IP-Adrese zu leiten? \newline
|
||||||
\hspace*{4mm} $\Rightarrow$ FQDN1 und FQDN2 zeigen beide auf \code{1.2.3.4}; per \acs{DNS} möglich und erlaubt! \newline
|
\hspace*{4mm} $\Rightarrow$ FQDN1 und FQDN2 zeigen beide auf \code{1.2.3.4}; per \acs{DNS} möglich und erlaubt!
|
||||||
|
|
||||||
\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 $\Rightarrow$ Der Webserver weiss nicht, welche Präsenz angefragt ist!
|
\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!}
|
||||||
|
|
||||||
|
\medskip
|
||||||
\begin{Achtung}
|
\begin{Achtung}
|
||||||
\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.
|
\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.
|
||||||
\end{Achtung}
|
\end{Achtung}
|
||||||
|
@ -123,8 +128,8 @@ Pflicht-Header im Request:
|
||||||
|
|
||||||
\qquad \code{Host: $\underbrace{\text{www.dhbw-karlsruhe.de}}_{\text{angefragter FQDN}}$}
|
\qquad \code{Host: $\underbrace{\text{www.dhbw-karlsruhe.de}}_{\text{angefragter FQDN}}$}
|
||||||
|
|
||||||
Jetzt gibt es persistene Verbindungen, \dash eine \acs{TCP}-Verbindung wird nacheinander für meherere Request/Response-Paare zwischen Client und Server genutzt. \newline
|
Jetzt gibt es persistente Verbindungen, \dash eine \acs{TCP}-Verbindung wird nacheinander für meherere Request/Response-Paare zwischen Client und Server genutzt. \newline
|
||||||
$\Rightarrow$ Es muss 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 nicht standard-konform und nur teilweise implementiert!
|
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!
|
||||||
|
|
||||||
\begin{figure}[h]
|
\begin{figure}[h]
|
||||||
\begin{center}
|
\begin{center}
|
||||||
|
@ -171,7 +176,7 @@ Siehe Wikipedia: \url{https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#
|
||||||
\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
|
\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
|
\zB \code{http://dhbw-karlsruhe.de}, \code{http://www.uni-karlsruhe.de} $\Rightarrow$ Dies gilt als professionell
|
||||||
\begin{enumerate}[noitemsep]
|
\begin{enumerate}[noitemsep]
|
||||||
\item mehrere IP-Adressen (je eine eigene IP Adresse pro \acs{FQDN})
|
\item mehrere IP-Adressen (je eine eigene IP-Adresse pro \acs{FQDN})
|
||||||
\begin{enumerate}[noitemsep]
|
\begin{enumerate}[noitemsep]
|
||||||
\item mehrere Netzwerkkarten
|
\item mehrere Netzwerkkarten
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
|
@ -187,5 +192,8 @@ Siehe Wikipedia: \url{https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
\item mehere \acs{FQDN} für eine IP-Adresse:
|
||||||
|
|
||||||
|
Unterscheidung durch \code{Host}-Header im Request (ab \acs{HTTP} Version 1.1).
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
|
@ -18,7 +18,7 @@ Bei einer IPv4\index{IPv4} \code{a.b.c.d} mit $a,b,c,d \in {0,...,255}$ (oder an
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
|
|
||||||
\item Außerdem sind in jedem Teilnetz die erste und die letzte Adresse als Netzwerkadresse bzw. Broadcast-Adresse reserviert. \newline
|
\item Außerdem sind in jedem Teilnetz die erste und die letzte Adresse als Netzwerkadresse bzw. Broadcast-Adresse reserviert. \newline
|
||||||
$\Rightarrow$ ingesamt stehen deshalb weniger als 4 Mrd. Adressen zur Verfügung.
|
$\Rightarrow$ insgesamt stehen deshalb weniger als 4 Mrd. Adressen zur Verfügung.
|
||||||
|
|
||||||
\item Außerdem: IP-Adressen sind äußerst ungerecht auf der Welt verteilt:
|
\item Außerdem: IP-Adressen sind äußerst ungerecht auf der Welt verteilt:
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
|
@ -30,6 +30,7 @@ Bei einer IPv4\index{IPv4} \code{a.b.c.d} mit $a,b,c,d \in {0,...,255}$ (oder an
|
||||||
\item Außerdem: immer mehr Geräte der Haushalts- und Unterhaltungselektronik sind \enquote{internetfähig} (haben einen Webserver).
|
\item Außerdem: immer mehr Geräte der Haushalts- und Unterhaltungselektronik sind \enquote{internetfähig} (haben einen Webserver).
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
\bigskip
|
||||||
\begin{Tipp}
|
\begin{Tipp}
|
||||||
\textbf{Grobe Berechnung von 2er Potenzen}
|
\textbf{Grobe Berechnung von 2er Potenzen}
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item Tabellen
|
\item Tabellen
|
||||||
\item (Java-)Applets
|
\item (Java-)Applets
|
||||||
\item \uwave{Textfluss} um Grafiken (vorher waren Grafiken \enquote{inline} und der Zeilenabstand wurde vergrößert, sodass die Grafik in die Zeile passte. Alternativ konnte man noch Zeilenumbrüche verwenden)
|
\item \uwave{Textfluss} um Grafiken (vorher waren Grafiken \enquote{inline} und der Zeilenabstand wurde vergrößert, sodass die Grafik in die Zeile passte. Alternativ konnte man noch \mbox{Zeilenumbrüche} verwenden) % mbox gegen die komische Silbentrennung von LaTeX: Zeile-numbrüche
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\item[1997] HTML 4.0
|
\item[1997] HTML 4.0
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
\item viele syntaktische/grammatikalische Vereinfachungen sind nun erlaubt:
|
\item viele syntaktische/grammatikalische Vereinfachungen sind nun erlaubt:
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item kein End-Tag (bei leeren Tags, falls der nachfolgende Tag den vorherigen Tag implizit schließt)
|
\item kein End-Tag (bei leeren Tags, falls der nachfolgende Tag den vorherigen Tag implizit schließt)
|
||||||
\item kein Start-Tag, falls der Tag bedeutet, dass vorher ein anderes Tag geöffnet werden muss (\zB \html{<title>}, bevor der \html{< head>} geöffnet wurde)
|
\item kein Start-Tag, falls der Tag bedeutet, dass vorher ein anderes Tag geöffnet werden muss (\zB \html{<title>}, bevor der \html{<head>} geöffnet wurde)
|
||||||
\item Anführungszeichen bei Attributwerten können weggelassen werden (sofern keine Trennzeichen enthalten sind, \zB \html{<p id=test>})
|
\item Anführungszeichen bei Attributwerten können weggelassen werden (sofern keine Trennzeichen enthalten sind, \zB \html{<p id=test>})
|
||||||
\item Attributwerte (bei Attributen mit Wahrheits- oder booleschen Werten) können weggelassen werden (\zB \html{<input type="text" disabled[="disabled"]>})
|
\item Attributwerte (bei Attributen mit Wahrheits- oder booleschen Werten) können weggelassen werden (\zB \html{<input type="text" disabled[="disabled"]>})
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
\begin{Hinweis}
|
\begin{Hinweis}[frametitle={Hinweis zur Klausur}]
|
||||||
In der Klausur sollten keine Vereinfachungen verwendet werden! Zu hoher Wahrscheinlichkeit wird sowieso \acs{XHTML} gefordert!
|
In der Klausur sollten keine Vereinfachungen verwendet werden! Zu hoher Wahrscheinlichkeit wird sowieso \acs{XHTML} gefordert!
|
||||||
\end{Hinweis}
|
\end{Hinweis}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[\code{PUBLIC}] Es handelt sich um einen öffentlichen Standard. \newline
|
\item[\code{PUBLIC}] Es handelt sich um einen öffentlichen Standard. \newline
|
||||||
Alternativ gibt es noch \code{SYSTEM} oder \code{PRIVATE} für selbst definierte Grammatiken mit (oder ohne) Angabe der \acs{DTD}
|
Alternativ gibt es noch \code{SYSTEM} oder \code{PRIVATE} für selbst definierte Grammatiken mit (oder ohne) Angabe der \acs{DTD}.
|
||||||
|
|
||||||
\item[\enquote{Public-ID}] Textuelle, exakt festgelegte \enquote{Beschreibung des Standards}, \zB \code{-//W3C//DTD XHTML 1.1//EN} bei XHTML 1.1
|
\item[\enquote{Public-ID}] Textuelle, exakt festgelegte \enquote{Beschreibung des Standards}, \zB \code{-//W3C//DTD XHTML 1.1//EN} bei XHTML 1.1
|
||||||
|
|
||||||
|
@ -265,8 +265,8 @@
|
||||||
|
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item die Datenmenge muss dennoch komplett geladen werden
|
\item die Datenmenge muss dennoch komplett geladen werden
|
||||||
\item erhöhter Speicherplatzverbrauch im Web-Browser (Arbeitsspeicher! Es ist nicht der Cache gemeint)
|
\item erhöhter Speicherplatzverbrauch im Web-Browser (Arbeitsspeicher! Es ist nicht der Cache gemeint!)
|
||||||
\item die Qualität der Skalierung im Browser ist (meist) schlechter als bei Bildverarbeitungsprogrammen
|
\item die Qualität der Skalierung im Browser ist (meist) schlechter als bei Bildbearbeitungsprogrammen
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,13 +309,6 @@ Die Anzahl der Spalten (und Zeilen) wird nicht vorab definiert. Eine unterschied
|
||||||
\label{tbl:html_tabelle_anzahl_felder}
|
\label{tbl:html_tabelle_anzahl_felder}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
\begin{figure}[h]
|
|
||||||
\centering
|
|
||||||
\includegraphics[scale=0.92]{Bilder/HTML_rowspan_colspan.png}
|
|
||||||
\caption{HTML-Tabelle mit zusammengefügten Feldern}
|
|
||||||
\label{fig:html_table_colspan_row}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
Statt \html{<td>} kann auch überall \html{<th>} verwendet werden, um eine Art Metadaten (Beschreibung der Tabelleninhalte) anzeigen zu lassen.
|
Statt \html{<td>} kann auch überall \html{<th>} verwendet werden, um eine Art Metadaten (Beschreibung der Tabelleninhalte) anzeigen zu lassen.
|
||||||
|
|
||||||
Seit \acs{HTML} 4 kann \html{<table>} zusätzlich gegliedert werden in:
|
Seit \acs{HTML} 4 kann \html{<table>} zusätzlich gegliedert werden in:
|
||||||
|
@ -335,6 +328,14 @@ Optionale Attribute in \html{<td>} und \html{<th>}:
|
||||||
|
|
||||||
Die überdeckten \html{<td>}/\html{<th>} müssen im Quelltext gestrichen/ausgelassen werden. Ein Beispiel für die Ausgabe zeigt \autoref{fig:html_table_colspan_row} mit dem dazu gehörigen \acs{HTML}-Quelltext in \autoref{lst:table_col_row_span} auf Seite~\pageref{lst:table_col_row_span}.
|
Die überdeckten \html{<td>}/\html{<th>} müssen im Quelltext gestrichen/ausgelassen werden. Ein Beispiel für die Ausgabe zeigt \autoref{fig:html_table_colspan_row} mit dem dazu gehörigen \acs{HTML}-Quelltext in \autoref{lst:table_col_row_span} auf Seite~\pageref{lst:table_col_row_span}.
|
||||||
|
|
||||||
|
\bigskip
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=0.9]{Bilder/HTML_rowspan_colspan.png}
|
||||||
|
\caption{HTML-Tabelle mit zusammengefügten Feldern}
|
||||||
|
\label{fig:html_table_colspan_row}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\begin{lstlisting}[language=HTML5,caption=Tabelle -- \code{colspan} und \code{rowspan},label=lst:table_col_row_span]
|
\begin{lstlisting}[language=HTML5,caption=Tabelle -- \code{colspan} und \code{rowspan},label=lst:table_col_row_span]
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
Beispiel für URL (und damit auch für URI): \pfad{http://www.dhbw-karlsruhe.de/}
|
Beispiel für URL (und damit auch für URI): \pfad{http://www.dhbw-karlsruhe.de/}
|
||||||
|
|
||||||
\item[\acs{URI}] Gibt Informationen, wie eine Ressource erreicht werden kann. \newline
|
\item[\acs{URI}] Gibt Informationen, wie eine Ressource erreicht werden kann. \newline
|
||||||
Beispiel für URI (aber nicht für eine URL): mailto:xyz@dhbw-karlsruhe.de
|
Beispiel für URI (aber nicht für eine URL): \pfad{mailto:xyz@dhbw-karlsruhe.de}
|
||||||
\end{description}
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Format einer \acs{URL}:\newline
|
||||||
\end{Achtung}
|
\end{Achtung}
|
||||||
|
|
||||||
\subsection{Relative URLs}\label{sec:relative_url}
|
\subsection{Relative URLs}\label{sec:relative_url}
|
||||||
Es können auch relative \acsp{URL} angegeben werden, die jedoch mithilfe der vollständigen \acs{URL} des enthaltenden Dokuments ebenfalls zu einer vollständigen (absoluten) URL gemacht werden! Es wird zwischen folgenden relativen URLs unterschieden:
|
Es können auch relative \acsp{URL} angegeben werden, die jedoch mithilfe der vollständigen \acs{URL} des enthaltenden Dokuments ebenfalls zu einer vollständigen (absoluten) \acs{URL} gemacht werden! Es wird zwischen folgenden relativen URLs unterschieden:
|
||||||
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Protokoll-relative URL] beginnt mit \pfad{//...}, \pfad{host/...} (\zB HTTPS)\index{URL!Protokoll-relativ}
|
\item[Protokoll-relative URL] beginnt mit \pfad{//...}, \pfad{host/...} (\zB HTTPS)\index{URL!Protokoll-relativ}
|
||||||
|
@ -81,7 +81,8 @@ Anwendung von vollständigen (Host-absoluten) URLs
|
||||||
\item Verweis auf den eigenen Server mit anderem Protokoll (HTTP $\Leftrightarrow$ HTTPS $\Leftrightarrow$ FTP)
|
\item Verweis auf den eigenen Server mit anderem Protokoll (HTTP $\Leftrightarrow$ HTTPS $\Leftrightarrow$ FTP)
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
Spezielle Verzeichnisnamen, welche speziell bei relativen URLs wichtig sind:
|
\newpage
|
||||||
|
Spezielle Verzeichnisnamen, welche speziell bei relativen \acsp{URL} wichtig sind:
|
||||||
|
|
||||||
\begin{description}[noitemsep]
|
\begin{description}[noitemsep]
|
||||||
\item[\pfad{..}] das übergeordnete Verzeichnis (im Falle des Wurzelverzeichnisses wiederum das Wurzelverzeichnis).
|
\item[\pfad{..}] das übergeordnete Verzeichnis (im Falle des Wurzelverzeichnisses wiederum das Wurzelverzeichnis).
|
||||||
|
|
|
@ -114,7 +114,7 @@ $\Rightarrow$ Gesamtbreite: 60mm, da padding, border-width und margin doppelt ge
|
||||||
Falls es keine explizite Angabe durch den Autor der Seite gibt, so wird folgendes verwendet:
|
Falls es keine explizite Angabe durch den Autor der Seite gibt, so wird folgendes verwendet:
|
||||||
|
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}[noitemsep]
|
||||||
\item default-Vorgabe (\code{user-agent})
|
\item Default-Vorgabe (\code{user-agent})
|
||||||
\item dynamische Anpassung (hier an den Inhalt)
|
\item dynamische Anpassung (hier an den Inhalt)
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ Die tatsächliche \enquote{Position} wird angegeben mittels \code{top}, \code{bo
|
||||||
|
|
||||||
\code{width}, \code{right}, \code{margin}, \code{top}, \ldots erwarten Längenangaben als Werte. Diese können sein:
|
\code{width}, \code{right}, \code{margin}, \code{top}, \ldots erwarten Längenangaben als Werte. Diese können sein:
|
||||||
|
|
||||||
\begin{itemize}[noitemsep]
|
\begin{itemize}
|
||||||
\item absolute Werte, \zB $50mm$, $3in$, $2pt$ (\enquote{Punkt der Schriftsetzer}) $\Rightarrow$ werden selten verwendet
|
\item absolute Werte, \zB $50mm$, $3in$, $2pt$ (\enquote{Punkt der Schriftsetzer}) $\Rightarrow$ werden selten verwendet
|
||||||
\item relative Werte, \zB \medskip
|
\item relative Werte, \zB \medskip
|
||||||
|
|
||||||
|
@ -338,7 +338,7 @@ Deswegen ist folgendes besser: \css{ol \{ list-style-type: decimal; \}}
|
||||||
\subsubsection{Kontextselektoren}\index{Selektoren!Kontext}
|
\subsubsection{Kontextselektoren}\index{Selektoren!Kontext}
|
||||||
|
|
||||||
\begin{tabular}{ll}
|
\begin{tabular}{ll}
|
||||||
\code{ol li \{\ldots \}} & $\Rightarrow$ gilt für alle \html{<li>}-Nachfolger eines \html{<ol>} \\
|
\code{ol li \{\ldots \}} & $\Rightarrow$ gilt für \textit{alle} \html{<li>}-Kinder eines \html{<ol>} \\
|
||||||
\code{ol > li \{\ldots \}} & $\Rightarrow$ gilt für alle \textit{direkten} \html{<li>}-Kinder eines \html{<ol>} (keine Kindeskinder) \\
|
\code{ol > li \{\ldots \}} & $\Rightarrow$ gilt für alle \textit{direkten} \html{<li>}-Kinder eines \html{<ol>} (keine Kindeskinder) \\
|
||||||
\code{h1 \circa{} p \{\ldots \}} & $\Rightarrow$ gilt für \html{<p>}, wenn es einen vorangegangenen Geschwisterknoten \html{<h1>} gibt. \\
|
\code{h1 \circa{} p \{\ldots \}} & $\Rightarrow$ gilt für \html{<p>}, wenn es einen vorangegangenen Geschwisterknoten \html{<h1>} gibt. \\
|
||||||
\code{h1 + p \{ \ldots \}} & $\Rightarrow$ gilt für alle \html{<p>}, die einen direkten Vorgänger \html{<h1>} haben. \\
|
\code{h1 + p \{ \ldots \}} & $\Rightarrow$ gilt für alle \html{<p>}, die einen direkten Vorgänger \html{<h1>} haben. \\
|
||||||
|
@ -358,7 +358,7 @@ Kontextselektoren sind spezifischer als Selektoren ohne Kontext!
|
||||||
\code{a[href\^{}="http"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, deren \code{href}-Attribut mit \enquote{http} beginnt \\
|
\code{a[href\^{}="http"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, deren \code{href}-Attribut mit \enquote{http} beginnt \\
|
||||||
\code{a[href\^{}="http://"], a[href\^{}="https://"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf externe Seiten verlinken. \\
|
\code{a[href\^{}="http://"], a[href\^{}="https://"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf externe Seiten verlinken. \\
|
||||||
\code{a[href\$=".pdf"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf eine PDF verweisen.\\
|
\code{a[href\$=".pdf"] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf eine PDF verweisen.\\
|
||||||
\code{a[href*="google."] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf Google verweisen (bzw. die \code{google.} enthalten.\\
|
\code{a[href*="google."] \{\ldots \}} & $\Rightarrow$ & gilt für alle \html{<a>}-Tags, die auf Google verweisen (bzw. die \code{google.} enthalten).\\
|
||||||
|
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue