Українська
Підсумки
Висновки
Мережні застосунки обмінюються даними через стек протоколів TCP/IP: IP доставляє пакети між комп’ютерами за адресами, а TCP і UDP – між програмами за портами. TCP встановлює з’єднання і надійно передає потік байтів у правильному порядку, UDP швидко передає окремі дейтаграми без гарантій доставки, зате підтримує широкомовлення. У .NET сокет представляє клас Socket, а класи TcpListener, TcpClient, NetworkStream і UdpClient спрощують типові задачі. Оскільки TCP не зберігає меж повідомлень, прикладний протокол визначає їх розділювачем рядків або префіксом довжини, а також описує команди, коди відповідей, стани сесії, обмеження й версію. Сервер обслуговує кількох клієнтів асинхронними задачами, захищає спільні дані потокобезпечними колекціями та блокуваннями і коректно завершує роботу за токеном скасування. Надійний мережний код обробляє SocketException та IOException, обмежує операції в часі, перевіряє вхідні дані, шифрує трафік за допомогою TLS і перевіряється засобами діагностики Windows.
Питання для самоперевірки
- Які рівні має модель TCP/IP? За що відповідає кожен рівень?
- Чим відрізняються адреси IPv4 та IPv6? Що означають адреси
127.0.0.1і0.0.0.0? - Для чого потрібні порти? Які діапазони портів існують?
- Як отримати IP-адреси за доменним ім’ям у C#?
- Чим відрізняються протоколи TCP і UDP? Наведіть приклади їх застосування.
- Що таке трійне рукостискання TCP?
- Які кроки виконують сервер і клієнт, що використовують клас
Socket? - Що повертає метод
ReceiveAsync? Що означає результат 0? - Яке призначення класів
TcpListener,TcpClientіNetworkStream? - Чому для
StreamWriterмережного потоку встановлюютьAutoFlushіUTF8Encoding(false)? - Чому в потоці TCP потрібно визначати межі повідомлень? Які є способи?
- Що таке мережний порядок байтів? Як записати число у форматі big-endian?
- Що описує прикладний протокол? Для чого коди відповідей і версія протоколу?
- Як сервер обслуговує кількох клієнтів одночасно? Як захистити спільні дані?
- Як коректно зупинити сервер і клієнт?
- Як надіслати широкомовне UDP-повідомлення і для чого його використовують?
- Коли з’являється запит брандмауера Windows і що станеться, якщо його скасувати?
- Як задати тайм-аут мережної операції?
- Як перевірити, які порти слухає комп’ютер і які з’єднання встановлено?
Корисні посилання
- Огляд мережних можливостей .NET: https://learn.microsoft.com/dotnet/fundamentals/networking/overview
- Робота із сокетами: https://learn.microsoft.com/dotnet/fundamentals/networking/sockets/socket-services
- Класи TCP: https://learn.microsoft.com/dotnet/fundamentals/networking/sockets/tcp-classes
- Клас
Socket: https://learn.microsoft.com/dotnet/api/system.net.sockets.socket - Клас
UdpClient: https://learn.microsoft.com/dotnet/api/system.net.sockets.udpclient - Клас
SslStream: https://learn.microsoft.com/dotnet/api/system.net.security.sslstream - Правила брандмауера Windows: https://learn.microsoft.com/windows/security/operating-system-security/network-security/windows-firewall/rules
- Протокол TCP (RFC 9293): https://www.rfc-editor.org/rfc/rfc9293
- Протокол UDP (RFC 768): https://www.rfc-editor.org/rfc/rfc768