Szyfrowana komunikacja TCP w C#.
by yaras on Dec.30, 2009, under .NET, Bezpieczeństwo
W drugiej części tego artykułu (pierwsza dotyczyła podstaw szyfrowania informacji) chciałbym zaprezentować podstawową implementację mechanizmów służących do komunikacji TCP. Mając podstawy dotyczące wymiany komunikatów będziemy mogli zająć się szyfrowaniem tej komunikacji.
Plan artykułu:
- Klient oraz serwer TCP w C# – czyli od czego zacząć.
- Wielowątkowy serwer TCP.
- Wysokopoziomowy system komunikacji.
- Podstawowe operacje szyfrowania w C#.
- Szyfrowanie komunikacji.
Klient oraz serwer TCP w C# – czyli od czego zacząć.
Transmission Control Protocol (w skrócie TCP) jest strumieniowym protokołem komunikacji między dwoma komputerami (więcej o TCP: wikipedia). Komunikacja ta odbywa się w ściśle określony sposób, który przedstawia poniższy diagram:
Cały proces można opisać następująco:
- Uruchomienie serwera i klienta.
- Podłączenie się klienta do serwera.
- Akceptacja klienta.
- Wymiana komunikatów.
- Rozłączenie.
Framework .NET udostępnia nam dwie klasy umożliwiające komunikację TCP:
- TcpListener,
- TcpClient.
Pierwsza z nich umożliwia utworzenie serwera, natomiast druga – podłączenie się do niego. Najprostszy serwer TCP można utworzyć za pomocą następującego kodu:
TcpListener listener = new TcpListener(IPAddress.Any, 1234); listener.Start();
Wyjaśnienia mogą wymagać parametry konstruktora klasy TcpListener. Pierwszy z nich oznacza adres naszego serwera (jeśli nie ma dla nas znaczenia jaki adres lokalny zostanie przypisany to możemy użyć IPAddress.Any), natomiast drugi – port nasłuchu.
Mając już zalążek serwera możemy przygotować klienta:
TcpClient client = new TcpClient(); client.Connect("localhost", 1234);
Domyślny konstruktor klienta jest bezparametrowy. Druga instrukcja powoduje podłączenie się klienta do serwera. Uruchamiając dwa powyższe kody nawiązujemy komunikację między naszymi programami – punkt 1 i 2 komunikacji mamy za sobą.
4 Comments for this entry
1 Trackback or Pingback for this entry
-
dotnetomaniak.pl
December 30th, 2009 on 11:12 amSzyfrowana komunikacja TCP w C#. – yaras.pl…
Dziękujemy za publikację – Trackback z dotnetomaniak.pl…

December 31st, 2009 on 12:45 am
Mniejszego pagera nie bylo?
January 1st, 2010 on 12:31 pm
mam nadzieję, że teraz jest czytelniejszy
July 3rd, 2010 on 10:37 am
Witam, mógłbym prosić o jakiś przykład implementacji jak spakować/rozpakować dowolny obiekt klassy dziedziczącej po Packet? Jakoś nie moge do tego dojść :/ Z góry dziękuję.
July 4th, 2010 on 9:45 am
Oto przykładowa implementacja kompresji:
http://wklej.org/hash/54335393b2c/