430 Sachverzeichnis inet addr(), 174 inet aton(), 174 inet ntoa(), 174–176 inet ntop(), 169, 170 inet pton(), 169, 170 inetd, 96, 147, 152, 153, 156 init-Prozeß, 10, 76 Integrität, 302 Internet Dæmon, siehe inetd Internet Assigned Numbers Authority, 160 Internet Control Message Protocol, 4 Internet Corporation for Assigned Names and Numbers, 160 Internet Protocol, 4 Internet Service Provider, 160 Internet-Schicht, 4 Invariante, 119 IP, 4 IP-Adresse, 4 IP-Adressen, private, 163 IP-Namen, 156 IP-Security, siehe IPsec IPsec, 311 IPv4-Adressen, 159 IPv6-Adresse, IPv4-gemappte, 166, 230 IPv6-Adresse, IPv4-kompatible, 166 IPv6-Adresse, unspezifizierte, 165 IPv6-Adressen, 159 ISO, 2 ISP, siehe Internet Service Provider Keep-Alive-Nachrichten, 227 kill(), 58, 74, 138 Kontext, 15 Kontextwechsel, 15, 109 Kryptographie, 302 LACNIC, 160 libcrypto, 323, 345 libssl, 323, 345, 357 Listen Queue, 192, 238, 240 listen(), 190, 192–194, 202, 240 Little-Endian, 169 Local Area Network, 1 Loopback-Adresse, 166 lseek(), 213 MAC, 308 main(), 15 Man-in-the-Middle-Attacke, 316 Master-Secret, 314 MD5, 307 Message Authentication Code, siehe MAC message digest, 307 Multicast, 164 Multicast-Gruppe, 161 Multiplexing, 218, 219 Mutex, 120 Network Byte Order, 169 Netz-ID, 161, siehe Netzwerk- Identifikator, 162 Netzwerk, leitungsver<strong>mit</strong>teltes, 2 Netzwerk, paketver<strong>mit</strong>teltes, 1 Netzwerk-Identifikator, 161 Netzwerkschicht, 3 NID, 382 NID commonName, 382 NID subject alt name, 382 ntohl(), 177 ntohs(), 177 open(), 24 openlog(), 44 Open<strong>SSL</strong>, 323 openssl create ssl ctx(), 372 openssl lib init(), 358, 359, 361 Orphan, siehe Waisenprozeß OSI-Referenzmodell, 2, 179 passive close, siehe Schließen, passives passive open, siehe Öffnen, passives PGP, 313 POP3S, 318 Port, 5 Port, well known, 190 POSIX, 8 POSIX-<strong>Threads</strong>, 103 Pre-Master-Secret, 315 Preforking, 236 Prethreading, 236 Pretty Good Privacy, siehe PGP printf(), 41 PRNG, 307, 352 Protokoll, nicht zuverlässiges, 4 Protokoll, verbindungsloses, 4, 5
Sachverzeichnis 431 Protokoll, verbindungsorientiertes, 5 Protokoll, zuverlässiges, 5 Prozeß, 9 Prozeß, leichtgewichtiger, 10 Prozeß, schwergewichtiger, 10 Prozeß, verwaister, 13 Prozeß-ID, 81 Prozeßgruppe, 10 Prozeßgruppe, Anführer einer, 12, 98 Prozeßgruppe, verwaiste, 13 Prozeßgruppen-ID, 10, 12, 81 Prozeßumgebung, 15 pselect(), 219, 220 Pseudo Random Number Generator, siehe PRNG Pseudozufallszahlen, 307, 352 Pseudozufallszahlengenerator, siehe PRNG pthread atfork(), 145, 146 pthread cond broadcast(), 129, 130, 134 pthread cond destroy(), 126, 127 pthread cond init(), 126, 127 PTHREAD COND INITIALIZER, 126 pthread cond signal(), 129, 130 pthread cond t, 126 pthread cond timedwait(), 128, 129, 142 pthread cond wait(), 127–129, 134 pthread create(), 104, 108, 109, 140, 145 pthread detach(), 106, 142 pthread equal(), 104 pthread exit(), 105 pthread join(), 105–108 pthread kill(), 139 pthread mutex destroy(), 121 pthread mutex init(), 121 PTHREAD MUTEX INITIALIZER, 121 pthread mutex lock(), 121, 122 pthread mutex t, 120, 121 pthread mutex trylock(), 121, 122 pthread mutex unlock(), 122 pthread self(), 104 pthread sigmask(), 69, 140 Pthreads, siehe POSIX-<strong>Threads</strong> public key, 305 Public-Key-Verfahren, 305 Race Condition, 65, 113, 115, 116, 119, 135, 138 raise(), 74, 75 RAND add(), 352, 353 RAND egd(), 353 RAND load file(), 353, 354 RAND seed(), 353 RAND status(), 352, 353 RAND write file(), 353, 354 RAW <strong>Sockets</strong>, 180 RC4, 305 read(), 24, 25, 212 readline(), 239, 245, 247, 248 readn(), 32, 239, 245 recvfrom(), 206, 207, 209–212 reentrant, 135, 136 Regional Internet Registry, 160 Request for Comments, siehe RFC rewind(), 213 RFC, 6 RIPE NCC, 160 RIPEMD-160, 307 RIR, siehe Regional Internet Registries RSA, 306, 309 Schlüsselverteilungsproblem, 305, 306 Schließen, aktives, 201, 204 Schließen, gleichzeitiges, 204 Schließen, passives, 201 sec:intro-tcpip, 2 secret key, 305 Secure Shell, siehe SSH Secure Socket Layer, siehe <strong>SSL</strong> Seed, 306, 352 select(), 219–222 Semaphor, 120 Semaphor, binärer, 120 sendto(), 206–212 Server, iterativer, 235 Server, nebenläufiger, 235, 236 Session, 10 Session, Anführer einer, 10, 98 Session-ID, 10 Set-Group-ID Bit, 21, 78 Set-Group-ID, saved, 20 Set-User-ID Bit, 21, 78, 94, 95 Set-User-ID, saved, 20 setbuf(), 38 setegid(), 94, 95 seteuid(), 94, 95, 282 setgid(), 95
- Seite 1 und 2:
X. systems.press X.systems.press is
- Seite 3 und 4:
Markus Zahn unp@bit-oase.de http://
- Seite 5 und 6:
VI Vorwort ein Unix-ähnliches Betr
- Seite 7 und 8:
Inhaltsverzeichnis 1 Einführung ..
- Seite 9 und 10:
Inhaltsverzeichnis XI 5 Netzwerkpro
- Seite 11 und 12:
Beispielprogramme 2.1 exit-test.c .
- Seite 13 und 14:
Beispielprogramme XV 7.7 openssl-ut
- Seite 15 und 16:
2 1 Einführung durchaus unterschie
- Seite 17 und 18:
4 1 Einführung 1.1.2 Internet-Schi
- Seite 19 und 20:
6 1 Einführung abschließenden Ver
- Seite 21 und 22:
8 1 Einführung Die vielen verschie
- Seite 23 und 24:
10 2 Programmieren mit Unix-Prozess
- Seite 25 und 26:
12 2 Programmieren mit Unix-Prozess
- Seite 27 und 28:
14 2 Programmieren mit Unix-Prozess
- Seite 29 und 30:
16 2 Programmieren mit Unix-Prozess
- Seite 31 und 32:
18 2 Programmieren mit Unix-Prozess
- Seite 33 und 34:
20 2 Programmieren mit Unix-Prozess
- Seite 35 und 36:
22 2 Programmieren mit Unix-Prozess
- Seite 37 und 38:
24 2 Programmieren mit Unix-Prozess
- Seite 39 und 40:
26 2 Programmieren mit Unix-Prozess
- Seite 41 und 42:
28 2 Programmieren mit Unix-Prozess
- Seite 43 und 44:
30 2 Programmieren mit Unix-Prozess
- Seite 45 und 46:
32 2 Programmieren mit Unix-Prozess
- Seite 47 und 48:
34 2 Programmieren mit Unix-Prozess
- Seite 49 und 50:
36 2 Programmieren mit Unix-Prozess
- Seite 51 und 52:
38 2 Programmieren mit Unix-Prozess
- Seite 53 und 54:
40 2 Programmieren mit Unix-Prozess
- Seite 55 und 56:
42 2 Programmieren mit Unix-Prozess
- Seite 57 und 58:
44 2 Programmieren mit Unix-Prozess
- Seite 59 und 60:
46 2 Programmieren mit Unix-Prozess
- Seite 61 und 62:
48 2 Programmieren mit Unix-Prozess
- Seite 63 und 64:
50 2 Programmieren mit Unix-Prozess
- Seite 65 und 66:
52 2 Programmieren mit Unix-Prozess
- Seite 67 und 68:
54 2 Programmieren mit Unix-Prozess
- Seite 69 und 70:
56 2 Programmieren mit Unix-Prozess
- Seite 71 und 72:
58 2 Programmieren mit Unix-Prozess
- Seite 73 und 74:
60 2 Programmieren mit Unix-Prozess
- Seite 75 und 76:
62 2 Programmieren mit Unix-Prozess
- Seite 77 und 78:
64 2 Programmieren mit Unix-Prozess
- Seite 79 und 80:
66 2 Programmieren mit Unix-Prozess
- Seite 81 und 82:
68 2 Programmieren mit Unix-Prozess
- Seite 83 und 84:
70 2 Programmieren mit Unix-Prozess
- Seite 85 und 86:
72 2 Programmieren mit Unix-Prozess
- Seite 87 und 88:
74 2 Programmieren mit Unix-Prozess
- Seite 89 und 90:
76 2 Programmieren mit Unix-Prozess
- Seite 91 und 92:
78 2 Programmieren mit Unix-Prozess
- Seite 93 und 94:
80 2 Programmieren mit Unix-Prozess
- Seite 95 und 96:
82 2 Programmieren mit Unix-Prozess
- Seite 97 und 98:
84 2 Programmieren mit Unix-Prozess
- Seite 99 und 100:
86 2 Programmieren mit Unix-Prozess
- Seite 101 und 102:
88 2 Programmieren mit Unix-Prozess
- Seite 103 und 104:
90 2 Programmieren mit Unix-Prozess
- Seite 105 und 106:
92 2 Programmieren mit Unix-Prozess
- Seite 107 und 108:
94 2 Programmieren mit Unix-Prozess
- Seite 109 und 110:
96 2 Programmieren mit Unix-Prozess
- Seite 111 und 112:
98 2 Programmieren mit Unix-Prozess
- Seite 113 und 114:
100 2 Programmieren mit Unix-Prozes
- Seite 115 und 116:
3 Programmieren mit POSIX-Threads W
- Seite 117 und 118:
3.1 Grundlagen 105 t2 den selben Th
- Seite 119 und 120:
3.1 Grundlagen 107 11 12 return( NU
- Seite 121 und 122:
3.1 Grundlagen 109 Ready: Der Threa
- Seite 123 und 124:
14 printf( "Thread Nr. %d ist ferti
- Seite 125 und 126:
3.1 Grundlagen 113 Abläufe, deren
- Seite 127 und 128:
3.2 Synchronisation 115 Die Ausgabe
- Seite 129 und 130:
3.2 Synchronisation 117 1 #include
- Seite 131 und 132:
3.2 Synchronisation 119 Das vorgest
- Seite 133 und 134:
3.2 Synchronisation 121 Bevor ein M
- Seite 135 und 136:
1 #include 2 #include 3 #include
- Seite 137 und 138:
3.2 Synchronisation 125 97 exit( 0
- Seite 139 und 140:
3.2 Synchronisation 127 Mittels pth
- Seite 141 und 142:
3.2 Synchronisation 129 legt jedoch
- Seite 143 und 144:
1 #include 2 #include 3 #include
- Seite 145 und 146:
3.2 Synchronisation 133 96-103 In e
- Seite 147 und 148:
3.3 Pthreads und Unix-Prozesse 3.3
- Seite 149 und 150:
3.3 Pthreads und Unix-Prozesse 137
- Seite 151 und 152:
3.3 Pthreads und Unix-Prozesse 139
- Seite 153 und 154:
3.3 Pthreads und Unix-Prozesse 141
- Seite 155 und 156:
Beispiel 3.9. pthreads-signal.c, Te
- Seite 157 und 158:
3.3 Pthreads und Unix-Prozesse 145
- Seite 159 und 160:
4 Grundlagen der Socket-Programmier
- Seite 161 und 162:
4.1 Erste Schritte mit telnet und i
- Seite 163 und 164:
4.1 Erste Schritte mit telnet und i
- Seite 165 und 166:
4.1 Erste Schritte mit telnet und i
- Seite 167 und 168:
22 setvbuf( stdout , NULL, _IOLBF ,
- Seite 169 und 170:
4.2 IP-Namen und IP-Adressen 157 oh
- Seite 171 und 172:
4.2 IP-Namen und IP-Adressen 159 Ro
- Seite 173 und 174:
4.2 IP-Namen und IP-Adressen 161 7
- Seite 175 und 176:
4.2 IP-Namen und IP-Adressen 163 Ne
- Seite 177 und 178:
4.2 IP-Namen und IP-Adressen 165 Ta
- Seite 179 und 180:
4.2 IP-Namen und IP-Adressen 167 ::
- Seite 181 und 182:
4.2 IP-Namen und IP-Adressen 169 Al
- Seite 183 und 184:
4.2 IP-Namen und IP-Adressen 171 In
- Seite 185 und 186:
4.2 IP-Namen und IP-Adressen 173 Al
- Seite 187 und 188:
4.2 IP-Namen und IP-Adressen 175 4-
- Seite 189 und 190:
4.2 IP-Namen und IP-Adressen 177 #i
- Seite 191 und 192:
4.3 Sockets 179 Das Beispiel zeigt,
- Seite 193 und 194:
4.3 Sockets 181 wird. Auch hier set
- Seite 195 und 196:
4.3 Sockets 183 soll, nicht geeigne
- Seite 197 und 198:
4.3 Sockets 185 connect() erwartet
- Seite 199 und 200:
4.3 Sockets 187 42 sizeof( sa ) ) <
- Seite 201 und 202:
4.3 Sockets 189 kehrt umgehend mit
- Seite 203 und 204:
4.3 Sockets 191 Für ein Clientprog
- Seite 205 und 206:
4.3 Sockets 193 Mit der listen()-Fu
- Seite 207 und 208:
4.3 Sockets 195 Server Programm 3 a
- Seite 209 und 210:
12 int main( int argc, char *argv[]
- Seite 211 und 212:
4.3 Sockets 199 Nachdem das Clientp
- Seite 213 und 214:
4.3 Sockets 201 austausch beginnen.
- Seite 215 und 216:
4.3 Sockets 203 CLOSED passive open
- Seite 217 und 218:
4.3 Sockets 205 Während die Verbin
- Seite 219 und 220:
4.3 Sockets 207 eine Socket-Adreßs
- Seite 221 und 222:
4.3 Sockets 209 50-58 Die Antwort d
- Seite 223 und 224:
4.3 Sockets 211 Wir modifizieren un
- Seite 225 und 226:
4.3 Sockets 213 Ein- und Ausgabefun
- Seite 227 und 228:
4.3 Sockets 215 17-18 19-22 Neu ist
- Seite 229 und 230:
4.3 Sockets 217 82 83 alarm( 20 );
- Seite 231 und 232:
4.3 Sockets 219 auf gleichzeitig ei
- Seite 233 und 234:
4.3 Sockets 221 1-4 6-7 9-12 14-16
- Seite 235 und 236:
4.3 Sockets 223 4.3.12 Socket-Optio
- Seite 237 und 238:
4.3 Sockets 225 1 int socket; 2 str
- Seite 239 und 240:
4.4 Namensauflösung 227 Die Socket
- Seite 241 und 242:
4.4 Namensauflösung 229 Aufruf erf
- Seite 243 und 244:
4.4 Namensauflösung 231 1-17 ai_ca
- Seite 245 und 246:
81 close( sd ); 82 } 4.4 Namensaufl
- Seite 247 und 248:
5 Netzwerkprogrammierung in der Pra
- Seite 249 und 250:
5.1.1 Funktionsumfang der Testumgeb
- Seite 251 und 252:
5.1 Aufbau der Testumgebung 239 19
- Seite 253 und 254:
5.1 Aufbau der Testumgebung 241 Im
- Seite 255 und 256:
5.1 Aufbau der Testumgebung 243 72
- Seite 257 und 258:
5.1 Aufbau der Testumgebung 245 20-
- Seite 259 und 260:
5.1 Aufbau der Testumgebung 247 39
- Seite 261 und 262:
5.1 Aufbau der Testumgebung 249 69
- Seite 263 und 264:
5.1 Aufbau der Testumgebung 251 37
- Seite 265 und 266:
5.1 Aufbau der Testumgebung 253 77-
- Seite 267 und 268:
5.2 Iterative Server 255 165 166 ex
- Seite 269 und 270:
5.2 Iterative Server 257 1 #include
- Seite 271 und 272:
5.2 Iterative Server 259 49-62 64-7
- Seite 273 und 274:
5.2 Iterative Server 261 27 28 /* B
- Seite 275 und 276:
5.2 Iterative Server 263 ggf. seine
- Seite 277 und 278:
5.2 Iterative Server 265 zwischen j
- Seite 279 und 280:
5.3 Nebenläufige Server mit mehrer
- Seite 281 und 282:
5.3 Nebenläufige Server mit mehrer
- Seite 283 und 284:
5.3 Nebenläufige Server mit mehrer
- Seite 285 und 286:
5.3 Nebenläufige Server mit mehrer
- Seite 287 und 288:
5.4 Nebenläufige Server mit Prethr
- Seite 289 und 290:
5.4 Nebenläufige Server mit Prethr
- Seite 291 und 292:
5.4 Nebenläufige Server mit Prethr
- Seite 293 und 294:
5.5 Nebenläufige Server mit mehrer
- Seite 295 und 296:
5.5 Nebenläufige Server mit mehrer
- Seite 297 und 298:
48 for(;;) 49 { 50 slen = sizeof( s
- Seite 299 und 300:
117 exit( EXIT_FAILURE ); 118 } 5.5
- Seite 301 und 302:
5.6 Nebenläufige Server mit Prefor
- Seite 303 und 304:
1 #include 2 #include 3 #include
- Seite 305 und 306:
5.6 Nebenläufige Server mit Prefor
- Seite 307 und 308:
99 exit( EXIT_FAILURE ); 100 } 5.6
- Seite 309 und 310:
5.6 Nebenläufige Server mit Prefor
- Seite 311 und 312:
5.7 Zusammenfassung 299 Zeiten aus
- Seite 313 und 314:
6 Netzwerkprogrammierung mit SSL Di
- Seite 315 und 316:
6.1 Strategien zur Absicherung des
- Seite 317 und 318:
6.1 Strategien zur Absicherung des
- Seite 319 und 320:
6.1 Strategien zur Absicherung des
- Seite 321 und 322:
6.1 Strategien zur Absicherung des
- Seite 323 und 324:
6.1 Strategien zur Absicherung des
- Seite 325 und 326:
6.2 SSL-Grundlagen 313 Das via SSL
- Seite 327 und 328:
6.2 SSL-Grundlagen 315 daraus entsp
- Seite 329 und 330:
6.2 SSL-Grundlagen 317 1. Der Clien
- Seite 331 und 332:
6.2 SSL-Grundlagen 319 SSL-Upgrade
- Seite 333 und 334:
6.2 SSL-Grundlagen 321 Port auf SSL
- Seite 335 und 336:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 337 und 338:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 339 und 340:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 341 und 342:
6.3 OpenSSL-Basisfunktionalität 32
- Seite 343 und 344:
4 bio = BIO_new( BIO_s_file() ); 5
- Seite 345 und 346:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 347 und 348:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 349 und 350:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 351 und 352:
6.3 OpenSSL-Basisfunktionalität 33
- Seite 353 und 354:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 355 und 356:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 357 und 358:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 359 und 360:
6.3 OpenSSL-Basisfunktionalität 34
- Seite 361 und 362:
19 { 6.3 OpenSSL-Basisfunktionalit
- Seite 363 und 364:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 365 und 366:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 367 und 368:
6.3 OpenSSL-Basisfunktionalität 35
- Seite 369 und 370:
7 Client-/Server-Programmierung mit
- Seite 371 und 372:
7.2 Der SSL-Kontext 359 13-18 20-25
- Seite 373 und 374:
7.2 Der SSL-Kontext 361 aus der Bes
- Seite 375 und 376:
7.2 Der SSL-Kontext 363 47-57 59-69
- Seite 377 und 378:
7.2 Der SSL-Kontext 365 #include l
- Seite 379 und 380:
7.2 Der SSL-Kontext 367 wie folgt z
- Seite 381 und 382:
7.3 Sicherer Umgang mit X.509-Zerti
- Seite 383 und 384:
7.3 Sicherer Umgang mit X.509-Zerti
- Seite 385 und 386:
12 #include "openssl -util.h" 7.3 S
- Seite 387 und 388:
7.3 Sicherer Umgang mit X.509-Zerti
- Seite 389 und 390: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 391 und 392: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 393 und 394: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 395 und 396: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 397 und 398: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 399 und 400: 7.3 Sicherer Umgang mit X.509-Zerti
- Seite 401 und 402: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 403 und 404: 16 { 17 BIO_puts( bio, req ); 18 BI
- Seite 405 und 406: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 407 und 408: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 409 und 410: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 411 und 412: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 413 und 414: 98 { 7.4 Client-/Server-Beispiel: S
- Seite 415 und 416: 7.4 Client-/Server-Beispiel: SMTP m
- Seite 417 und 418: 227 BIO_free( bio ); 228 exit( EXIT
- Seite 419 und 420: 7.5 Zusammenfassung 407 oder den An
- Seite 421 und 422: 410 A Anhang Erzeugen eines geheime
- Seite 423 und 424: 412 A Anhang A.1.2 Neue Zertifikate
- Seite 425 und 426: 414 A Anhang $ openssl ca -out serv
- Seite 427 und 428: 416 A Anhang auf Null gezählt hat,
- Seite 429 und 430: 418 A Anhang 6-11 13-26 28-46 48-53
- Seite 431 und 432: 420 A Anhang 69 barrier ->cycle++;
- Seite 433 und 434: Literaturverzeichnis [BLFN96] Tim B
- Seite 435 und 436: Literaturverzeichnis 425 [Kle01] Jo
- Seite 437 und 438: Sachverzeichnis Öffnen, aktives, 1
- Seite 439: Sachverzeichnis 429 ERR get error()
- Seite 443 und 444: SSL VERIFY FAIL IF NO PEER CERT, 37