Server Management Dipl.-Inform. (FH) Paul Mizel [email protected] Serverentwicklung unter .NET Inhalt • Motivation • Anforderungen • Inhalt der Arbeit ▫ ▫ ▫ ▫ Client- / Server-DV Servermodule Plugin-Lader Serverstart • Protokolle • Demonstration • Ausblick Dipl. Inf. (FH) Paul Mizel Seite 2 Motivation • Was ist OMNINO? • Es sollte ein Server-Kern unter .NET entworfen und entwickelt werden • Mithilfe dieses Server-Kerns soll es möglich sein verschiedene Protokolle ohne viel Aufwand umzusetzen • Erfahrungen in Standardnetzwerkprotokollen Dipl. Inf. (FH) Paul Mizel Seite 3 Anforderungen • Schnittstelle für die Protokolle • Serverkern ▫ Grundlage TCP, Synchron • Servermanagement • Protokolle ▫ ▫ ▫ ▫ HTTP, FTP POP3, SMTP Telnet, Echo, (S)NTP DNS Dipl. Inf. (FH) Paul Mizel Seite 4 Client-/Server-DV • TCP (Transmission Control Protocol) Client / Server Server 3-Wege-Handshake SYN SEQ=x SYN,ACK=x+1 SEQ=y ACK SEQ=y+1 Verarbeitung • UDP (User Datagram Protocol) Client / Server Server Verarbeitung Verarbeitung ist abgeschlossen Dipl. Inf. (FH) Paul Mizel Seite 5 Server Module Membership Session Security Client Protocol Configuration Provider response Server Management request Serverkernel Server Dipl. Inf. (FH) Paul Mizel Seite 6 Plugin-Lader public List<T> GetPlugins<T>(string folder) { string[] files = Directory.GetFiles(folder, "*.dll"); List<T> tList = new List<T>(); foreach (string file in files) { try { Assembly assembly = Assembly.LoadFile(file); foreach (Type type in assembly.GetTypes()) { if (!type.IsClass || type.IsNotPublic) continue; Type[] interfaces = type.GetInterfaces(); if (((IList)interfaces).Contains(typeof(T))) { T protocol = (T)Activator.CreateInstance(type); tList.Add(protocol); } } }catch (Exception ex) {} } return tList; } Dipl. Inf. (FH) Paul Mizel Seite 7 Serverstart 1. IServerConfiguration cfg = new ServerConfigurationImpl(80); //Configuration 2. PluginHelper ph = new PluginHelper(); 3. IServerProtocol protocol = ph.GetProtocol(ProtocolType.HTTP); //Protocol 4. IServerProvider provider = new ServerProviderImpl(cfg, protocol); //Provider 5. 6. IServer server = new SynchronousSocketListener(provider); //create Server 7. server.Start(); Dipl. Inf. (FH) Paul Mizel Seite 8 Protokolle 1 Bitübertragung (Physical) Dipl. Inf. (FH) Paul Mizel Netzzugang (Network) DNS Sicherung (Data Link) Layer 4-7 Switch, Content Switch, Gateway UDP RIP, OSPF, NLSP, EGP, BGP Router, Layer-3 Switch IP, ICMP, ARP, RARP PPP 2 (S)NTP Internet (Internet) TCP SLIP Vermittlung (Network) Echo 3 Hardware ATM Transport (Transport) Telnet Transport (Transport) Frame Relay 4 SMTP Sitzung (Session) X.25 5 Anwendung (Application) POP3 Darstellung (Presentation) FDDI 7 FTP Anwendung Application Token Ring 7 TCP/IP Protokolle HTTP TCP/IP Layer Ethernet OSI-Layer WLAN Access Point, Switch, Bridge Hub, Repeater Seite 9 Protokolle • Kommunikationsgrundlage ▫ TCP basierte / Sitzungsbasierte ▫ UDP basierte • Kommunikationsart ▫ Zeichenbasierte / Kommandobasierte ▫ Bytebasierte • Performanceuntersuchung Normal System.Byte System.String x10.000 126 783 5118 x100.000 716 8145 49354 6614 80385 501130 600000 Normal System.Byte 500000 System.String 400000 x1.000.000 300000 ▫ Speicherverwaltung ▫ Kodierung Dipl. Inf. (FH) Paul Mizel 200000 100000 0 x10.000 x100.000 x1.000.000 Seite 10 Protokolle • HTTP 1.1 - Hypertext Transfer Protocol Version 1.1 (RFC 2068) • FTP - File Transfer Protocol (RFC 959) • POP3 - Post Office Protocol Version 3 (RFC 1939) • SMTP - Simple Mail Transfer Protocol (RFC 2821 und Service Extension for Authentication 2554) • Telnet (RFC 854 - 861) • Echo (RFC 862) • (S)NTP - (Simple) Network Time Protocol (RFC 868 (RFC 2030)) • DNS - Domain Name System (RFC 1034) *RFC - Request For Comments Dipl. Inf. (FH) Paul Mizel Seite 11 HTTP • Ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten und andere Daten in einen Webbrowser zu laden. • Standard Port: 80 • Alternativen / Erweiterungen ▫ ▫ ▫ ▫ Gopher HTTPS (HTTP over SSL(Secure Socket Layer)) SOAP (Simple Object Access Protocol) ... Dipl. Inf. (FH) Paul Mizel Seite 12 FTP • Download (Server zum Client) und zum Upload (Client zum Server) von Dateien. • Standard Port: 21 • Alternativen / Erweiterungen ▫ SCP (Secure Copy Protocol)1 Alle Daten werden verschlüsselt ▫ SFTP (SSH FTP) 1+ Alle Daten über den SSH-Tunel ▫ SFTP (Secure FTP) nur Steuerkanal über SSH-Tunel ▫ FTPS (FTP over SSL(Secure Socket Layer)) ▫ ... Dipl. Inf. (FH) Paul Mizel Seite 13 POP3 • Protokolle zum Empfangen von E-Mails • Standard Port: 110 • Alternativen / Erweiterungen ▫ POP3S (SSL Erweiterung) ▫ ... Dipl. Inf. (FH) Paul Mizel Seite 14 SMTP • Protokolle zum Senden von E-Mails • Standard Port: 25 • Alternativen / Erweiterungen ESMTP (Extended SMTP) ... Dipl. Inf. (FH) Paul Mizel Seite 15 Telnet • Wird dazu verwendet, Benutzern den Zugang zu Internetrechnern über die Kommandozeile zu bieten • Standard Port: 23 • Alternativen / Erweiterungen ▫ SSH (Secure shell) ▫ RDP (Remote Desktop Protocol) ▫ ... Dipl. Inf. (FH) Paul Mizel Seite 16 Echo • Funktion dieses Dienstes ist: Alle empfangenen Daten unverändert zum Client zurückzusenden • Standard Port: 7 • Alternativen / Erweiterungen ▫ Ping (ICMP (Internet Control Message Protocol )) ▫ ... Dipl. Inf. (FH) Paul Mizel Seite 17 (S)NTP • Protokoll zur Synchronisation von Uhren in Computersystemen • Standard Port: 123 • Alternativen / Erweiterungen ▫ ▫ ▫ ▫ PPS (Pulse-Per-Second) Time Protocol Daytime Protocol ... Dipl. Inf. (FH) Paul Mizel Seite 18 DNS • DNS ist eine verteilte Datenbank, die den Namensraum im Internet verwaltet. Dient zur Umsetzung von Domainnamen in IP-Adressen (forward lookup) und umgekehrt (reverse lookup). • Standard Port: 53 • Alternativen / Erweiterungen ▫ ▫ ▫ ▫ EDNS (Extended DNS) Paketgröße/Weiterer Headercode IDNA (Internationalizing Domain Names in Applications) ENUM (tElephone NUmber Mapping) ... Dipl. Inf. (FH) Paul Mizel Seite 19 Demonstration • Wie erstelle ich einen Protokoll? ▫ ▫ ▫ ▫ Enivo.Net.dll einbinden. Erben von ServerProtocolImpl oder IServerProtocol implementieren ProtocolAttribute setzen oder die Parameter zum Auffinden ändern Methoden ausprogrammieren void Request(TcpConnection req); void Connected(TcpConnection req); void Disconnected(TcpConnection req); • Präsentation des Managers DEMO Dipl. Inf. (FH) Paul Mizel Seite 20 Demonstration Dipl. Inf. (FH) Paul Mizel Seite 21 Ausblick • • • • • Server-Kern auch als Client/Proxy erweitern UDP Erweiterung Synchron und Asynchron Optimierung Lastverteilung (Load Balancing) Sicherheit ▫ IDS(Intrusion Detection System) ▫ Syn-Flooding ▫ SSL Erweiterung • Umgebung als Service Dipl. Inf. (FH) Paul Mizel Seite 22 Danke! Quellen [Abhinaba] Abhinaba B.: C# 2.0: Loading plugins at run-time using late binding [Internet] http://blogs.msdn.com/abhinaba/archive/2005/11/14/492458.aspx [Archer, Whitechapel] Archer, T. und Whitechapel, A.: Inside C#: Objektorientiertes Programmieren mit C# und dem .NET Framework. Microsoft Press, 2002 [Microsoft MSDN#1] Microsoft.: Asynchronous Server Socket Example [Internet] http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconnon-blockingserversocketexample.asp , 2005 [Microsoft MSDN#2] Microsoft.: Asynchronous Server Socket Example [Internet] http://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconblockingserversocketexample.asp, 2005 [Schwichtenberg] Schwichtenberg, H.: Deutsche Community-Site für .NET [Internet] http://www.it-visions.de/glossar/default.aspx?g=alle IT Visions, 2005 [Selke] Selke, G. W.: Kryptographie: Verfahren, Ziele, Einsatzmöglichkeiten. O’Reilly GmbH & Co. KG, 2000 [Wikipedia DE] Wikimedia Foundation: Wikipedia. [Internet] http://de.wikipedia.org/wiki/Hauptseite, Wikimedia Foundation, 2004 [Wikipedia EN] Wikimedia Foundation: Wikipedia : The free Encyclopedia. [Internet] http://en.wikipedia.org/wiki/Main_Page, Wikimedia Foundation, 2004 [Winkler] Winkler, P.: M+T Computerlexikon. Markt+Technik Verlag, 2000 Dipl. Inf. (FH) Paul Mizel Seite 24 Anhang Demo [.\demo\] Präsentation [.\paul mizel projektarbeit 2006.ppt] Source Code [.\src\] Links [.\links\] RFCs [.\rfcs\]