Server Management

Werbung
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\]
Herunterladen