С++. Сетевое программирование. Часть 1

добавлено: 19 май 11
понравилось:0
просмотров: 3849
комментов: 0

теги:

Автор: Игорь Антонов

Сетевое программирование... Я думаю, что актуальность этой темы не стоит объяснять, и так понятно, что сегодня сетевые технологии находятся на достаточно высоком уровне развития. А это значит, что программисты в этой области нужны не менее чем в других областях. Вообще, сетевое программирование кажется легче, чем оно есть на самом деле. WinSock функции, которые ты будешь использовать для коммуникации через сеть, довольно просты в использовании, но многие забывают, что просто вызов функции не сделает всю работу. Первые попытки программирования с использованием WinSock часто заканчиваются программами, которые "иногда" не работают или завершаются необъяснимыми ошибками.


Сетевое программирование - это больше чем просто получение или отправление данных. Например, тебе придется столкнуться с синхронизацией: все ли данные отправлены (или получены)? Готова ли программа принять следующую "порцию" данных? Другая проблема - сверка полученных данных, разбор этих данных, предотвращение угроз безопасности и многое другое.
Поэтому ты заметишь, что первые главы не содержат много кода. Я решил начать с основ сетей и принципов работы сетевого программирования. Не пропускай этот материал, очень важно прочесть его прежде, чем начнешь писать программы.
Весь материал сфокусирован на аспектах сетевого программирования. Я предполагаю, что ты достаточно хорошо владеешь языком программирования (С++), что бы успешно продвигаться по материалу. Что ж...приступим.

Сети и протоколы

Любой из вас уже знает что-нибудь про сети, серверы, клиенты и т.д. Но все же я решил начать с введения в организацию и принцип работы компьютерных сетей, чтобы быть уверенным, что ты знаешь достаточно для сетевого программирования. Для сетевого программирования тебе не понадобятся все детали, упомянутые ниже в этом разделе, но лишними эти знания точно не будут.

Ты, наверное, знаешь, что такое «сеть». Это - несколько компьютеров, соединенных между собой таким образом, что они могут обмениваться данными. Существует несколько типов сетей, такие как LAN (Local Area Network), WAN (Wide Area Network) и, конечно же, Internet.
Что бы удостоверится, что весь трафик проходит без искажений, сети полагаются на протоколы. Протокол – это набор правил, согласно которым данные передаются по сети. Из определения понятно, что протокол описывает, как «общаться» через сеть. Протокол подобен человеческому языку: почти каждый человек с рождения может издавать и слышать какие-то звуки (электронные сигналы), но люди не будут понимать друг друга, если они не общаются в соответствии с определенным языком, который понятен им обоим (протокол).

Ethernet

Ethernet — это протокол канального уровня, используемый подавляющим большинством современных локальных сетей. Сеть использует несколько слоев протокола, каждый из которых выполняет свою задачу в коммуникационном процессе. Наиболее используемая конфигурация таких протоколов - ethernet LAN с TCP/IP.

MAC

Низший слой Ethernet интерфейса. Это - аппаратный уровень, называемый уровнем медиа доступа (Media Access Layer, сокращенно MAC). Этим слоем чаще всего является сетевая карта, которая заботится о конвертации данных в электронные сигналы и передаче их в нужное место. Естественно, что пакеты, отправленные по сети, должны преодолеть определенное расстояние до нужного адресата. Разные слои протокола Ethernet имеют разные методы адресации. На нижнем, MAC уровне, адресация осуществляется с помощью MAC-адресов. MAC-адрес – это 48-битовый идентификатор, «вшитый» в каждую сетевую карту. Проще говоря, MAC-адрес – это физический адрес сетевой карты. Обычно MAC-адреса записываются в виде разделенных шестнадцатеричных чисел: 14:74:A0:17:95:D7.

Чтобы отправить данные на другую сетевую карту, данные должны включать в себя MAC-адрес получателя. В локальных сетях (LANs) используется простой метод отправки данных нужному адресату: широковещание (broadcasting). Это значит, что твоя сетевая карта посылает пакет всем другим сетевым адаптерам, которые могут его принять. Каждый принявший адаптер «смотрит» на MAC-адрес конечного адресата и только в случае совпадения этого MAC-адреса со своим собственным сохраняет данные в буфер. По очевидным причинам за пределами LAN (WAN и Internet) этот метод не используется.

Полная версия статьи:http://www.vr-online.ru/content/s-setevoe-programmirovanie-chast-1-3999

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии