Application Layer Flashcards
Was sind Anwendungen?
Browser (http), Email (smtp), Streaming (http), File Sharing, Clouds, …
Alle Anwendungen haben ihr Protokoll (siehe Klammer)
Describe a URL
URL consists of a scheme (describes the used protocol), the host identifier on which the resource is located, a path to the location on the server
Für die URL können wir auch statt menschenlesbaren Text IP Addressen verwenden
Describe http/https
Http is built on top of TCP and is used to by a client to interact with resources on the server
http directly communicates over TCP connection, whereas https insertes an encryption layer between http and TCP connection
Structure of http
Http has simple request-response scemantic: client issues request, server responds
Both request and response consist of header and payload
Header contains request line consisting of a method (e.g. get/ gibt das Hauptdirectory der Website aus) and key:value pairs which provide additional information about client and request each on a new line
It is a STATELESS protocol: each request-response pair is treated independently, no information about client is stored
In order to make http stateful browsers have introduced cookies (small amounts of data sent along with the request, allowing the server to recognize the user, thus saving information about the client). Cookies are key:value pairs
Http/1.0
Wenn ich eine HTTP/1.0 Website öffne, öffnet er ein TCP Verbindung zum Server, erstellt die Anfrage, dann schickt der Server die Antwort zurück und schliesst die Verbindung sofort wieder
Nicht toll, weil meistens muss man noch viel mehr Sachen nachladen auf einer Website (e.g. Bilder)
Http/1.1
Pipelining ist schon drin, man kann die gleiche Verbindung offen halten, die mit der Zeit auch immer schneller wird, und kann dann eins nach dem anderen die Files runterladen, die man braucht
Http/2.0
Ist binär, daher schneller. HTTP/1.0 und HTTP/1.1 verwenden menschenlesbaren Text, aber Text ist nicht effizient um Informationen zuzuschicken
Lädt direkt alle Bilder von der Website runter, Client muss nicht extra danach fragen
Describe HTML
HTML: Sprache wie Webseiten aufgebaut sind
Elemente die in einer Webseite auf eingebaut sind ( Text, Bild, Link auf andere Website) sind eingebettet in Tags
element
Tags sind als Wurzelbaum organisiert. Ich habe Tags und dazwischen auch wieder Tags
Link tags: <a>
HTML sagt nur was ist die Information der Website und wie ist sie aufgebaut
Wenn man darstellen möchte wie die ganze Sache aussieht -> Cascading Style Sheets </a>
Wie komme ich von URL auf IP
DNS
Client benutzt UDP (arbeitet wirklich nur mit einzelnen Paketen, nicht mit Verbindungen, das ist schneller), schickt eine Email an den DNS Server
Wie weiss mein Computer, wenn ich einen UDP schicken möchte, an wen die Nachricht geschickt werden soll?
Muss man nicht angeben, jeder Computer hat Standardadresse und dahin werden DNS Anfragen gestellt
Wer ist wirklich zuständig dafür welche URL auf welche IP Adresse gemappt wird?
Das sind authorative Servers, welche für einen oder mehrere Server zuständig sind und dann wirklich sagen auf welche IP Adresse z.B ethz.ch mappt
Letzlich wollen wir dann immer von den authorative Servers wissen, was die IP Adresse ist
Aber machmal weiss es auch schon .ch weil ständig anfragen auf ethz.ch komme
Wie schicke ich eine Emailaddresse?
Einfach IP Addresse vom Kommunikationspartner rausfinden und dann Email schicken?
Das macht man normalerweise nicht so, normalerweise gibt es einen Emailserver dazwischen
Man schickt Email an Server, weil der Rechner C2 vielleicht nicht ständig online verfügbar ist und er auch seine IP Addresse ändern kann
Deshalb schickt man die Mail an einen Server, der ein stabiler Rechner ist, der sie dann abspeichert und C2 holt sie dann da ab
Oft hat man auch einen eigenen Server und man schickt eigentlich über smtp dem eigenen Server die Mail und der schickt sie dann weitern an den anderen Server
Die IP Adresse vom Zielserver kann man wieder über DNS rausfinden
Um Mails abzuholen, gibt es andere Protokolle, z.B imap, pop
Emails werden nicht als Text verschickt, sondern als sogennate mindtype, damit man kompliziertere Datentypen, e.g. Bilder, Sonderzeichen verschicken
Sockets
Socket ist wie man selbst Programme schreibt, die mit dem Internet kommunizieren
Muss schon ein Socket bereit haben, wenn ich mit dem kommunizieren möchte
Und der Client baut ein Socket auf und dann wird kommuniziert miteinander
Client gibt nur Port vom Server an, dem Client selbst wird zufällig vom Betriebssystem eine Portnummer gegeben
Was passiert wenn ich einen Server starte und dann gleich nochmal den gleichen einen Server starte auf dem gleichen Computer?
Dann sagt der Server er kann das nicht
Man öffnet Sockets, die Sockets warten auf Connection auf der Client Seite und wenn die Clients reinkommen wird was damit gemacht
Layering
Jeder Layer hat seine Art wie er mit Daten arbeitet
In der Applikationlayer macht man Datenpakete und bestehen aus einem http header (get\ od key value pairs) und dem http content
Translayer hat das ganze Paket genommen und das als Payload verstanden und dann seinen header dazugemacht, z.B einen TCP wo die Ports drin stehen
Network layer hat das ganze genommen und einen IP header davor gemacht
Link layer macht noch einen header und footer hinten dran und das geht dann über die Hardware raus
Jetzt kann es sein, dass es dann irgendwo zu einem Router hingeht und was den Router wirklich interessiert ist die Network Layer mit der IP Addresse (um zu wissen wohin er das Paket weiterschicken soll), also muss er die Link Layer verstehen
Wenn das Paket beim Ziel ankommt, nimmt der Link Layer das Paket entgegen, schaut nochmal ob er wirklich das Ziel ist vom Paket, gibt es an den Network Layer weiter, dieser holt sich die IP Addresse, gibt’s der Transportschicht weiter