Advertisement
Guest User

Untitled

a guest
Feb 14th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.75 KB | None | 0 0
  1. Klausur Netzwerkprogrammierung Januar 2007
  2. ===========================================
  3.  
  4. Aufg. 2
  5. =======
  6. a) Mit socket() wird ein neuer Socket erzeugt. Dazu müssen Adressfamilie (z.B. IPv4 oder IPv6), Type (z.B. SOCK_DGRAM oder SOCK_STREAM) und Protokoll (z.B. IPPROTO_TCP, IPPROTO_UDP) übergeben werden. Die Funktion gibt den Filedescriptor für den erzeugten Socket zurück und ist nicht blockierend.
  7. b) bind() bindet einen Socket an eine lokale Transportadresse (IP-Adresse und Port). Dazu müssen der Filedescriptor des Sockets, welcher gebunden werden soll, die Transportadresse als Adressstruktur sowie die Größe der übergebenen Adressstruktur übergeben werden. Die Funktion gibt -1 im Fehlerfall und sonst 0 zurück. Sie ist nicht blockierend.
  8. c) Der connect()-Aufruf verbindet einen Socket mit einer entfernten Transportadresse. Dazu müssen der Filesdescriptor des Sockets, die Transportadresse als Adressstruktur sowie die Größe der Adressstruktur übergeben werden. Die Funktion gibt im Fehlerfall -1 und sonst 0 zurück. connect() ist blockierend.
  9. d) Mit listen() wird ein Socket in den passiven Modus versetzt, indem er mittels accept() eingehenden Verbindungsanfragen annehmen kann. Dazu müssen der Filesdescriptor des Sockets und die Zahl der maximal zu puffernden Verbindungsanfragen übergeben werden. Die Funktion gibt im Fehlerfall -1, sonst 0 zurück und ist nicht blockierend
  10. e) accept() akzeptiert die erste Verbindungsanfrage der Queue mit offenen Verbindungsanfragen. Übergabeparameter sind der Filesdescriptor eines Sockets im listen-Status, ein Zeiger auf eine Adressstruktur und auf die Länge der Adressstruktur. Die Funktion gibt den Filedescriptor für die akzeptierte Verbindung zurück. Außerdem wird die übergebene Adressstruktur gefüllt. accept() ist blockierend.
  11. f) Mit select() können mehrere Filedescriptoren auf Lesbarkeit, Schreibbarkeit oder einen Fehlerfall überwacht werden. Die Funktion blockiert so lange, bis einer der Filesdescriptoren den gewählten Zustand erreicht oder ein Timer abläuft. Übergabeparameter sind der größte Filedescriptor+1, die Mengen der auf Les-, Schreibarkeit und Fehlerfall zu überwachenden Filedescriptoren sowie der Timeout. Die Funktion gibt die Summe der Zahlen der in den Mengen befindlichen Filedescriptoren zurück. In jeder Menge befinden sich nur noch die Filedescriptoren, die den gewählten Zustand haben.
  12. g) close() teilt dem Kernel mit, dass ein Filedescriptor nicht mehr benötigt wird. Dazu muss der Filedescriptor übergeben werden. Im Fehlerfall wird -1 zurückgegeben, sonst 0. close() ist nicht blockierend.
  13.  
  14. Aufg. 3
  15. =======
  16. a) send:
  17. - Filedescriptor mit dem gesendet werden soll
  18. - Zeiger auf Speicherbereich mit zu sendenen Daten
  19. - Länge der zu sendenden Daten
  20. - Flags
  21. recv:
  22. - Filedescriptor auf dem empfangen werden soll
  23. - Zeiger auf Speicherbereich für empfangene Daten
  24. - Größe des Speicherbereichs
  25. - Flags
  26. b) send: Anzahl der an den Kernel übergebenen Bytes
  27. recv: Anzahl der Bytes, die in den Puffer geschrieben wurden
  28. c) send: Es ist kein Fehler aufgetreten.
  29. recv: Es ist kein Fehler aufgetreten. Falls der Rückgabewert 0 ist, hat die Gegenseite die Verbindung geschlossen.
  30.  
  31. Aufg. 4
  32. =======
  33. a) Little Endian: Das niederwertigste Byte steht an der kleinsten Speicheradresse.
  34. Big Endian: Das höchstwertigste Byte steht an der kleinsten Speicheradresse
  35. b) Host Byte Order ist die Byte Order, welche auf dem verwendeten System genutzt wird. Je nach Architektur kann dies Little Endian oder Big Endian sein. Network Byte Order ist die Byte Order, mit der Daten über das Netzwerk versendet werden. Network Byte Order ist Big Endian.
  36. c)htons(), htonl(), ntons(), ntonl()
  37.  
  38. Aufg. 5
  39. =======
  40.  
  41. Aufg. 6
  42. =======
  43. a)- Ein Single-Threaded Server, der die Filesdescriptoren für die angenommen Verbindung mittels select() in einer Schleife auf Lesbarkeit prüft und ggf. antwortet
  44. - Ein Multi-Threaded Server, der für jede angenommene Verbindungsanfrage einen neuen Thread startet, in dem die Kommunikation mit dem Client stattfindet.
  45. - Ein Server, der für jede angenommenen Verbindungsanfrage einen neuen Prozess startet, in dem die Kommunikation mit dem Client stattfindet.
  46. b) select():
  47. Vorteil: einfach zu implementieren, geringer Ressourcenbedarf
  48. Nachteil: Kommt es bei einer Verbindung zu einem Programmabbruch, ist der gesamte Server nicht mehr erreichbar, sequentielle Verarbeitung der Nachrichten der Clients
  49. Multi-Threaded:
  50. Vorteil: parallele Verarbeitung der Nachrichten der Clients, geringer Ressourcenbedarf
  51. Nachteil: Kommt es bei einer Verbindung zu einem Programmabbruch, ist der gesamte Server nicht mehr erreichbar
  52. Prozesse:
  53. Vorteil: Kommt es bei einer Verbindung zu einem Programmabbruch, sind die anderen Verbindungen nicht betroffen und es können auch noch Verbindungen angenommen werden, parallel Verarbeitung der Nachrichten der Clients
  54. Nachteil: hoher Ressourcenbedarf, schwierige Implementierung, hoher Verwaltungsaufwand bei gemeinsam genutzten Ressourcen
  55.  
  56. Aufg. 7
  57. =======
  58.  
  59. Aufg. 8
  60. =======
  61.  
  62. Aufg. 9
  63. =======
  64. a) bindet den Socket an eine lokale Transportadresse. Der Kernel gibt die Daten, die an diese Adresse gesendet werden über den Socket an die Anwendung weiter.
  65. b) Setzt die default Sende- und Empfangsadresse für den Socket. Ermöglicht außerdem den Empfang von ICMP-Nachrichten mit Fehlermeldungen
  66. c) statt sendto() und recvfrom() können send() und recv() verwendet werden.
  67.  
  68. Aufg. 10
  69. ========
  70. a) Bei 1-to-1 Style Sockets werden SCTP Assoziationen wie TCP Verbindungen behandelt. Sie dienen dem portieren von TCP-Anwendungen auf SCTP.
  71. b) Mit 1-to-Many Style Sockets lassen sich mehrere SCTP Assoziationen mit einem Filedescriptor verwalten. Sie dienen zum portieren von UDP-Anwendungen auf SCTP.
  72. c) 1-to-1: socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)
  73. 1-to-Many: socket(AF_INET, SOCK_SEQPACK, IPPROTO_SCTP)
  74. d) 1-to-1: Expliziter Aufbau der Assoziation mit accept() und connect()
  75. 1-to-Many: automatischer, impliziter Aufbau der Assoziation
  76.  
  77. Aufg. 11
  78. ========
  79. a) Flow Control schützt den Empfänger vor Überlastung durch den Sender. Congestion Control schützt das Netz vor Überlastung.
  80. b) Der send()-Aufruf kann blockieren, wenn der Puffer des Kernels nicht mehr ausreichend groß ist.
  81. c) Die API muss Funktionen zum Ändern der Einstellungen bzgl. Flow Control und Congestion Control zur Verfügung stellen.
  82.  
  83. Aufg. 12
  84. ========
  85. a) Ja
  86. b) Die socket()-Aufrufe müssen geändert werden. Bei ursprünglichen TCP Sockets müssen 1-to-1 Style Sockets verwendet werden. Bei ursprünglichen UDP-Sockets müssen 1-to-Many Style Sockets verwendet werden.
  87. c) Nein
  88. d) Heartbeat und Retransmission bereits durch SCTP gegeben. Teilen des TCP-Streams auf Grund von Chunks bei SCTP nicht mehr notwending. Längenfeld kann dann auch entfallen.
  89.  
  90. Aufg. 13
  91. ========
  92. a) gethostbyname(), gethostbyname2(), gethostbyaddr(), getaddrinfo(), getnameinfo()
  93. b)
  94. c) Über DNS lässt sich ermitteln über welche Transportprotokolle die IP-Adresse erreichbar ist. (siehe struct addrinfo)
  95. d) Es kann keine Aussage darüber getroffen werden, ob unter der IP-Adresse tatsächlich ein Server erreichbar ist und ob dieser unter dem angegebenen Port einen Dienst anbietet.
  96.  
  97. Aufg. 14
  98. ========
  99. a) Der Socket ist noch gebunden und kann nicht sofort wiederverwendet werden.
  100. b) Durch setzen der entsprechenden Option (Reuse Adress) am Socket.
  101. c) setsockopt()
  102.  
  103. Aufg. 15
  104. ========
  105. a) Confidentiality: Schutz vor unbefugtem lesendem Zugriff
  106. Message Integrity: Schutz vor unbefugtem schreibendem Zugriff
  107. Endpoint Authentication: Der Kommunikationspartner ist derjenige, der er behauptet zu sein
  108. b) Confidentiality, Message Integrity, Endpoint Authentication
  109. c) Message Integrity, Endpoint Authentication
  110. d)
  111.  
  112. Aufg. 16
  113. ========
  114. a) An allen Funktionen, denen AF_INET4 als Adressfamilie und denen Strukturen übergeben werden, die nur für IPv4 gedacht sind. Funktionen, die nur IPv4 unterstützen können nicht mehr verwendet werden. Statt AF_INET muss AF_INET6 verwendet werden. Statt den IPv4 Strukturen müssen die entsprechenden IPv6 Strukturen verwendet werden.
  115. b) Protokollunabhängige Entwicklung bedeutet, dass eine Anwendung sowohl IPv4, als auch IPv6 unterstützt. getaddrinfo() ist eine Funktion die beide Protokollversionen unterstützt. Sie löst z.B. inet_pton() ab.
  116.  
  117. Aufg. 17
  118. ========
  119. a) Proposed Standard, Draft Standard, Internet/Full Standard, Experimental Protocol, Informational Document, Historic Standard
  120. b) - ITU
  121. - Voting / non-Voting Member
  122. - erstellt Empfehlungen
  123. - Dokumente gegen Geld erhältlich
  124. - Konsensprinzip
  125. - mehrere Sprachen
  126. - ETSI
  127. - Voting Members
  128. - erstellt Standards
  129. - Dokumente frei erhältlich
  130. - Konsensprinzip
  131. - Specialist Task Force
  132. - IETF
  133. - Individuen
  134. - erstellt RFCs
  135. - Dokumente frei erhältlich
  136. - Rough Consensus and Running Code
  137. - Sprache ist Englisch
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement