IPC Flashcards
Wie lassen sich Sockets mit Files vergleichen, was sind Gemeinsamkeiten, was sind Unterschiede?
- Sockets sind bidirektional. Man kann von ihnen lesen und schreiben
- Sockets sind wie andere Dateideskriptoren. Alle File Operationen wie open, close, read, write funktionieren - bis auf Seek
Was ist Protokoltyp und Protokolfamilie bei BSD Sockets?
- Protokol-Familie
- AF_UNIX
- IPv4
- IPv6
- Protokol-Typ
- SOCK_STREAM - TCP
- SOCK_DGRAM - UDP
- SOCK_RAW - zur Implementierung eigener Protokole
Was gibt die “socket”-Funktion zurück?
- -1 im Fehlerfall
- Dateideskriptor, File handle im Erfolgsfall
In welchem Format wird die Ziel-IP-Adresse bei BSD Sockets erwartet?
Network Byte Order
Mit welchem Befehl wird eine IP-Adresse von Zeichenkette in Network Byte Order umgewandelt?
int inet_(int af, const char* src, void* dst)
- af
- AF_INET => IPv4
- AF_INET6 => IPv6
Mit welchem Befehl kann ein DNS Aufruf bei BSD Sockets gemacht werden?
- int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res);
Was identifiziert einen Socket eindeutig?
Das Quintupel { protocol, local-addr, local-process, foreign-addr, foreign-process } identifiziert jeden Socket auf einem System eindeutig. Es legt die Kommunikationsform (das Protokoll), die lokale Adresse, den lokalen Prozess (meist über den Port identifiziert) sowie die Gegenstelle (Adresse und Prozess) fest.
Was sind Advisory Locks, Record Locks und Share Reservations?
Advisory Locks kommen aus der Unix-Welt und sind lediglich ein Hinweis, der nicht forciert wird. Ein Programm muss testen, ob eine „Sperre“ existiert, und selbst von einem Schreibvorgang absehen; es kann sich aber auch entscheiden, den Hinweis zu ignorieren, ohne einen Fehler zu erhalten.
Record Locks werden dagegen vom Betriebssystem forciert und gelten zudem feingranularer für Dateiabschnitte. So kann eine Datei mehrmals auf verschiedene Arten gesperrt werden.
Share Reservations sind ein Konzept der Windows-API, werden ebenfalls vom Betriebssystem forciert und gelten für die gesamte Datei. Der Programmierer spezifiziert hier, welche Zugriffe er anderen Programmen erlauben und welche er verbieten möchte.
Was macht die bind Funktion und was ist das Besondere an der Signatur?
Zur erstellung eines Servers und zum Binden an einen Port. Die Bind-Funktion ist leicht “polymorph”, da die Kombination struct sockaddr* addr und socklet_t addrlen genutzt wird.
Bei variablen Datenstrukturen wie der addr-Struktur ist zum Zeitpunkt des APIs nicht vollständig determiniert, welche Ausformung übergeben wird. Entsprechend soll mit der Size sichergestellt werden, dass nicht über den Speicher hinaus gelesen wird.
Wie werden bei verbindungsorientierten Sockets Verbindungen akzeptiert?
- Socket wird mit “socket()” aufgebaut
- Socket wird an lokaler Adresse mit “bind” gebunden
- Mit “listen()” wird auf einkommende Verbindungen gehorcht
- Mit “accept()” wird eine Client-Verbindung akzeptiert
Was macht die “listen” Funktion?
- mit “listen()” wird eine Warteschlange für eingehende Verbindungen aufgebaut
- input ist: “sockfd” - file deskriptor des Server Sockets
- Erfolg: “0”
- Fehlerfall: “-1”
Was macht die “accept()” Funktion?
Dieser Funktionsaufruf akzeptiert eine Verbindung aus der Warteschlange, die durch listen() aufgebaut wird.
Der Rückgabewert entspricht dem Dateideskriptor, der genutzt werden kann, um mit dem Client mit read() und write() Aufrufe zu kommunizieren.
Was ist XDR?
- kein Protokoll
- Datenbeschreibungssprache - Interfacebeschreibungssprache wie IDL (Interface Definition Language)
Wie wird XDR in C übersetzt?
Das Programm rpcgen wird dafür verwendet, dessen Ausgaben für die Verwendung mit der Bibiliothek librpc gedacht sind.
Auf welcher Annahme basieren die XDR Datendefinitionen?
- XDR fusst auf der Annahme eines Bytes, bestehend aus acht Bits als kleinster portabler Dateneinheit
- die Sicherungsschicht sorgt für die korrekte Codierung
- bei Ethernet gilt Network Order, d.h. das höherwertige Bit wird zuerst übertragen
Was sind die Hauptunterschiede zwischen lokalen und entfernten Aufrufen (function calls)?
- Geschwindigkeit
- Keine globalen Variablen aufgrund getrennter Address-Räume
- keine Seiteneffekte, da funktionale Programmierung
- Authentifizierung und Verschlüsselung müssen Teil des Protokolls sein
- Fehler bei der Übertragung der Daten übers Netzwerk müssen abgefangen und behandelt werden
Wie funktioniert AUTH_SYS Authentifizierung bei ONC RPC?
AUTH_SYS Authentifizierung funktioniert über unixoider Anmelde-Prozess, bei dem der Benutzer sich über Benutzer-ID und Passwort und die Zugehörigkeit zu Gruppen authentifiziert. Die Nummern, die übermittelt werden, stammen von Klienten und müssen so abgesichert sein, um die Anmeldung des Benutzers zu gewährleisten.
Was wird bei AUTH_SYS Anmeldung an den Server übertragen?
- unsigned int uid
- unsigned int gid
- unsigned int gids<16> // 16 Gruppen-Zugehörigkeiten
Was sind die Nachteile von AUTH_SYS?
- Keine Verschlüsselung
- Autorisierung ist möglich
- Authentifizierung ist nicht möglich
- Begrenzung der Mitgliedschaft auf 16 Gruppen
Was soll bei ONC RPC in unsicheren Netzwerken für eine Authentifizierung eingesetzt werden und warum?
- GSS-API (Generic Security Services Application Programming Interface)
- Austausch von kryptographisch abgesicherten Tokens
- Einsatz bei NFSv4
- Dadurch kann NFSv4 im Internet genutzt werden
Was sind die Anforderungen an einem RPC Protokol?
- Unique specification of a procedure to be called.
- Provisions for matching response messages to request messages.
- Provisions for authenticating the caller to service and vice-versa.