Немного теории. Протоколы передачи данных — это наборы соглашений (считай, стандарты), которые регулируют обмен данными между различными программами. Смысл протоколов передачи данных в том, чтобы эту самую передачу упорядочить и сделать независимой от аппаратной платформы (т.е. от какой-то одной конкретной «железяки»).
Протокол не следует путать с интерфейсом подключения и вообще с физическим уровнем (хотя такой термин и встретится нам в рассматриваемой далее модели). Протокол это уровень логический.
Сетевые протоколы
Сетевые протоколы регулируют обмен связи между двумя соединенными в сеть устройствами. Вообще, что мы в данном случае подразумеваем под сетью? Соединение компьютера и монитора это сеть? Нет, поскольку в данном случае монитор — это устройства вывода. Происходит вывод информации на экран, но не обмен ею. Соответственно, под сетью мы подразумеваем связь двух и более устройств, способных хранить и обрабатывать информацию.
Чаще всего сетевые протоколы классифицируют по модели OSI (Open Systems Interconnection Basic Reference Model). Модель состоит из семи уровней и упрощает понимание функционирования сети. Уровни располагаются вертикально друг над другом. Уровни взаимодействуют друг с другом по вертикали через интерфейсы, и могут взаимодействовать с параллельным уровнем другой системы по горизонтали с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и с себе подобным.
Уровень | Что передаётся |
Прикладной | Данные |
Представления | Данные |
Сеансовый | Данные |
Транспортный | Блоки |
Сетевой | Пакеты |
Канальный | Кадры |
Физический | Биты |
Нетрудно догадаться, что прикладной уровень является самым верхним (седьмым), а физический лежит в основе основ (первый уровень).
Пойдем снизу вверх.
1. Физический уровень — на этом уровне работают хабы и ретрасляторы сигнала. Здесь осуществляется передача данных по проводам или беспроводным путём. Происходит кодировка сигнала. Осуществляется стандартизация сетевого интерфейса (пример, разъем RJ-45).
2. Канальный уровень — уровень коммутаторов, мостов и драйверов сетевых карт. Данные упаковываются во фреймы, проверяются ошибки и данные отправляются на сетевой уровень.
Протоколы: Ethernet, FDDI, PPP, PPTP, L2TP, xDSL и др.
3. Сетевой уровень — здесь определяется путь передачи данных, определяется кратчайший маршрут, происходит контроль неисправностей сетей. Это уровень маршрутизаторов.
Протоколы: IPv4, IPv6, ARP, ICMP.
4. Транспортный уровень отвечает за механизм передачи. Блоки данных разбиваются на фрагменты, избегаются потери и дублирование.
Протоколы: TCP, UDP, RDP, SPX, SCTP и др.
5. Сеансовый уровень отвечает за поддержание сеанс связи. Создание и завершение сеанса, права передачи данных и поддержание сеанса в момент неактивности приложений — всё происходит на этом уровне.
Протоколы: SSL, NetBIOS.
6. Уровень представления занимается кодированием и декодированием данных. Данные из приложения преобразуются в формат для транспортировки по сети, а пришедшие из сети в формат, понятный приложению.
Протоколы: FTP, SMTP, Telnet, NCP, ASN.1 и др.
7. Прикладной уровень — это уровень взаимодействия сети и пользователя. На этом уровне различные программы, которыми пользуется человек, получают доступ к сети.
Протоколы: HTTP, HTTPS, FTP, POP3, SSH, XMPP, DNS, SIP, Gnutella и др.
Популярные протоколы
HTTP, HTTPS — протоколы передачи гипертекста. Используется при пересылке web-страниц.
FTP — протокол передачи файлов. Используется для обмена данными между компьютерами, некоторые из них играют роль специальных хранилищ файлов — файловых серверов.
POP — протокол почтового соединения. Предназначен для обработки запросов на получение почты от пользовательских почтовых программ.
SMTP — почтовый протокол, отвечающий за правила передачи сообщений.
Telnet — протокол удаленного доступа.
TCP — сетевой протокол, отвечающий за передачу данных в сети Интернет.
Ethernet — протокол, определяющий стандарты сети на физическом и канальном уровнях.
На плечи первого уровня ложится ответственность за целостность и достоверность передачи данных, а так же за доступность обнаружения сообщения в байтовом потоке, и, само собой, за хранение в себе сообщения уровня данных.