Client-Server mit JS: HTTP & Node.js


M. R.
Diese Lernkarten bieten einen Überblick über Client-Server-Netzwerkkonzepte, insbesondere mit Fokus auf HTTP und Node.js, auf Universitätsebene. Sie decken Themen wie TCP/IP, HTTP-Protokolle, Server-Client-Interaktionen, Proxy-Server, HTTP-Header und Node.js-Module ab. Diese Karteikarten sind ideal für Studierende und Entwickler, die ihr Verständnis von Netzwerkprotokollen und serverseitiger Programmierung vertiefen möchten.
Karten
24
Lernende
10
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
12.11.2016 / 06.07.2020

Lernkarten

Nenne 3 Networking Tools

- ping

- tracert / traceroute

- nslookup

Wie gut ist die ES2015 Unterstützung von NodeJS ? Nenne drei ES2015 Features.

Seit der Node-Version 4.46 wurde begonnen ES2015 zu unterstützen.

Mit der aktuellen Version 6.5.0 wird eine Vielzahl von ES2015 Features unterstützt.

z. B.

let, const

promises

template literals

class

Im Detail nachschlagen kann man dies unter http://node.green.

Nicht unterstützt wird die ES2015 Modulsyntax, da mit ES2015 die diskutierte Spezifikation des module-loaders  ES6 Specification Draft Rev 27, Section 15

nicht in den Standard übernommen wurde.

Als Workaround wird die ES2015 Modulsyntax von Babel oder typescript in das Modulformat commonJS transpiliert.

Was ist Node.js?

Wie funktioniert der "Etag"-Header?

Ein Etag-Header beinhaltet einen Hash, der den Stand einer Resource auf dem Server repräsentiert. Er dient dem Caching.

Bei der ersten Anfrage einer Resource durch den Client wird vom Server ein "Etag"-Header in der Response mitgeliefert. Der Client merkt sich lokal den Wert dieses Headers und sendet ihn bei der nächsten Anfrage der gleichen Resource im Request-Header wieder als Wert des "If-None-Match"-Headers mit. Der Server vergleicht den Stand der Resource mit dem "If-None-Match"-Wert des Clients und wenn sich dieser inzwischen nicht geändert hat, wird ein HTTP-Statuscode 304 an den Client zurückgegeben; die Resource selbst wird dann nicht nochmals übertragen. Nur wenn der Stand der Resource nicht mehr dem Wert der Clientanfrage entspricht, wird die Resource wieder an den Client gesendet. Damit wird vermieden, dass unnötig Daten mehrfach übertragen werden.

TL;DR zum Thema aus den Google Developer Docs

  • Ein Validierungstoken wird vom Server über den ETag-HTTP-Header übertragen.
  • Ein Validierungstoken ermöglicht effiziente Aktualisierungsprüfungen von Ressourcen. Es werden keine Daten übertragen, wenn sich die Ressource nicht geändert hat.

TCP/IP

Gib die richtige Antwort an:

a. Ein TCP-Paket wird in der Nutzlast eines IP-Pakets übermittelt

b. Ein IP-Paket wird in der Nutzlast eines TCP-Pakets übermittelt

 a:

TCP liegt im OSI-Modell auf der Schicht 4 (Transport), während IP auf der Schicht 3 (Network) liegt. Die übergeordnete Schicht nutzt die Dienstleistung der untergeordneten Schicht. Somit wird ein TCP-Paket als Nutzlast eines IP-Pakets zum richtigen Host transportiert.

Was sind Stream in Node.js?

  • Core Konzept von Node.js
  • Stück für Stück bearbeiten von Daten
  • Definiert durch ein Interface
  • Basiert auf EventEmitter

Wie sind die HTTP response status codes klassifiziert? Nenne pro Klasse je 2 Beispiele

1xx Informational

  • 100 Continue
  • 101 Switching Protocols

2xx Successful

  • 200 OK
  • 204 No Content

3xx Redirection

  • 301 Moved Permanently
  • 305 Use Proxy (since HTTP/1.1)

4xx Client Error

  • 400 Bad Request
  • 404 Not Found

5xx Server Error

  • 500 Internal Server Error
  • 503 Service Unavailable

Was ist der Unterschied in der Versionsdeklaration in einem npm package.json File von "~1.2.3" und "^1.2.3"

"Tilde" sucht die neueste "minor" Version (mittlere Ziffer). "~1.2.3" aktualisert auf die aktuellste Version mit einer "2" in der Mitte (z.B. 1.2.x), nicht aber einer drei (z.B. 1.3.0).

"Caret" sucht die neueste "major" Version (erste Ziffer). "^1.2.3" aktualisert auf die aktuellste Version mit einer "1" an erster Stelle (z.B. 1.x.x), nicht aber einer "2" (z.B. 2.0.0).

Beim Verzicht von "Tilde" und "Caret" wird die angegebene Version heruntergeladen.

Ein Cookie kann mit HTTPOnly deklariert werden. Was bewirkt diese Deklaration?

Das Cookie kann nicht mittels Javascript ausgelesen werden. Es wird nur mit dem Request mitgeschickt. Damit kann das Cookie vor Cross-Site-Scripting Attacken geschützt werden.

Aus welchen Schichten besteht das OSI Modell und wie heissen sie ?

7. Application

6. Presentation

5. Session

4. Transport

3. Network

2. Data Link

1. Physical

Wofür kann Ping verwendet werden?

Welche Ausgabe wird mit console.log in app.js erzeugt?

NodeJS:

app.js

...

var utilModule = require('./utilSample.js');

...

console.log('Ausgabe: ' + utilModule.modUtilOne());
console.log('Ausgabe: ' + utilModule.utilThree());

...


utilSample.js

var utilSample = {
   utilOne : function(){return "utilOne";},
   utilTwo : function(){return "utilTwo";}
}

exports.utilThree = function(){return "utilThree";}

module.exports = {
   modUtilOne : utilSample.utilOne,
   modUtilTwo : utilSample.utilTwo
}


Antworten:

a)
   Ausgabe: utilOne
   Ausgabe: utilThree

b)
   Ausgabe: utilOne
   Ausgabe: undefined

c)
   Ausgabe: TypeError utilModule.modUtilOne is not a function
   Ausgabe: utilThree

d)
   Ausgabe: utilOne
   Ausgabe: TypeError utilModule.utilThree is not a function

d)

Beschreibung:

Mit "module.exports = .." wird ein Objekt zurückgegeben, welches über "require" zugewiesen wird.
Zusätzliche "exports" - Statements werden dann nicht beachtet, im Beispiel ist "utilThree" nicht bekannt.
Es werden nur die über "module.exports = .." zugewiesenen Funktionen/Properties exportiert.

Wird nicht das Objekt "module.exports = ..", sondern einzelne named properties exportiert, funktioniert es:

exports.utilThree = function(){return "utilThree";};
module.exports.modUtilOne = utilSample.utilOne;
module.exports.modUtilTwo = utilSample.utilTwo;


Wann was verwendet werden kann bei NodeJS Module Patterns:
https://darrenderidder.github.io/talks/ModulePatterns/#/

Was ist der Unterschied zwischen Callbacks und Events ?

- Callbacks sind jeweils 1:1 Verbindungen
Werden verwendet wenn es nur 1 "Interessent" für diese Funktion gibt

- Events sind 1:n Verbindungen
Bei den Events hingegen gibt es mehrere "Interessenten" die diese Funktion nutzen

Wann sollte eine PUT und wann ein POST verwendet werden?

PUT sollte beim Verändern/Aktualisieren von Datensätzen verwendet werden, kann aber auch für das Erstellen genutzt werden

POST wird nur beim Erstellen neuer Datensätze verwendet.

How can you provide a hyperlink to a section in the same document?

  1. Specify a named section in the document with the name attribute : <div name="secton1" > Div Content </div>
  2. Provide a link to the named section: <a href=#sectiion1"> Go to Section 1 </a>
  3. If you do not provide a name in the href: href="#" then the link jumps to top of the document

What are the main purposes behind the use of a proxy server?

  1. Request forwarding and response forwarding
  2. Proxy can act as client when forwarding a request and as a server when forwarding the response
  3. Proxy server can act as access control
  4. Proxy server can be used for caching

What does a typical HTTP response consists of?

  1. An initial response line
  2. the headers
  3. a blank line
  4. body with requested data

Http Protcol is

Http Networking: Protocol and default port number

  1. http:         80 default http port
  2. ftp:           20 for data, 21 for control
  3. smtp:      25 simple mail transfer protocol

Http Networking: With what tool can you connect to a server?

with telnet:
telnet xyz.com 80

Http Networking: TCP provdes reliable service to the application level

  • TCP provides explicit error control on ip packages
  • It checks to find out if all parts of a message have been transmitted
  • If packages are lost, it arranges for a retransmission

Http Networking: IP is an unreliable protcol because

  • ip packages can be lost
  • ip package can contain error
  • ip package can arrive out of order

Http Networking: Why is the transport layer called host-to-host layer?

It is at this layer that two programs running on two end hosts
directly communicate with each other

Mapping of TCP/IP protocol stack to OSI seven-layer model

  1. Datalink    -> Datalink, Physical
  2. IP               ->  Network
  3. TCP           -> Transport
  4. Application -> Session, Presentation, Application 

Lernen