Книга построена в стиле "вопрос ответ". Ответы бывают двух видов

Вид материалаКнига
Q:Что такое дерево (стек) протоколов?
Родственные вопросы
Q:Что такое порт?
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   28

Q:Что такое дерево (стек) протоколов?


Прежде чем продолжать повествование о протоколах, необходимо рассмотреть задачи, которые приходится решать при установке соединения.

В первую очередь можно назвать маршрутизацию - выбор маршрута, по которому будет двигаться пакет. Это действительно очень сложная задача, ведь получателя и отправителя под час разделяют десятки подсетей, настоящий лабиринт, заблудиться в котором очень легко, а найти кратчайший путь – куда сложнее.


??? Рисунок "карикатура" Человек стоит перед лабиринтом, переплетающихся друг с другом тропинок и в задумчивости чешет затылок.


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

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

Наконец, необходимо уметь разделять один канал между несколькими параллельно работающими приложениями, чтобы пользователь мог принимать (отправлять) почту, одновременно с этим скачивая из сети файлы и болтая с приятелями по ICQ.

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

В общепринятой иерархии ниже всех находится сетевой уровень. В Интернет он реализован двумя протоколами: IP (Internet Protocol – Протокол Интернета) и ICMP (Internet Control Message Packet – Проколол Управляющих Сообщений Интернет).

Протокол IP берет на себя заботы по маршрутизации, фрагментации и сборке пакетов на компьютере получателя. Фактически IP выполняет всю черновую работу по установлению соединения. К этому же уровню относиться и ICMP-протокол, использующийся для передачи сообщений об ошибках и сборе информации о работе сети. На нем основана работа таких утилит, как ping и trace route, применяющихся для диагностики сети.

Транспортный уровень реализован поверх сетевого, т.е. опирается на протоколы сетевого уровня. В Интернет он представлен протоколами TCP (Transmission Control Protocol – Протокол Управляемой Передачи) и UDP (User Datagram Protocol – Протокол Пользовательских Дейтаграмм). В задачи транспортных протоколов входит обеспечение надежной и достоверной доставки данных через сеть. Они же заведуют установкой, поддержанием и упорядочиванием каналов соединения, обнаруживают и по возможности устраняют ошибки передачи.

Различие между ними в том, что TCP гарантирует доставку данных и аутентичность отправителя (т.е. позволяет убедиться, что отправитель именно тот, за кого себя выдает), а UDP обеспечивает лишь контроль целостности данных, не ручаясь ни за успешность их доставки получателю, ни за достоверность адреса отправителя.

Может показаться, что UDP "плохой" протокол. Частично это так и есть, поэтому-то, в подавляющем большинстве случаев используется именно TCP. С другой стороны, UDP заметно производительнее TCP, поскольку не требует накладных расходов на поддержание соединения.

Прикладной уровень обеспечивает высокоуровневый интерфейс между сетевыми приложениями. Сюда относятся протоколы работы с почтой (POP3, SMTP, IMAP), сетевыми новостями (NNTP), файлами (FTP) и так далее.


Конечно, это очень грубая схема, но общение представление о функционировании Интернет с ее помощью получить можно.


Родственные вопросы:

Что такое ping и для чего он нужен?

Что такое протоколы и с чем их едят?

Как определить полный путь (прохождение) при скачивании файла


Q:Что такое порт?


Физические порты ввода-вывода хорошо известны и интуитивно понятны. Может быть, нечто аналогично есть и в Интернет? На самом же деле, с сетевой точки зрения порт - одно из полей заголовка пакета (строго говоря, их даже два - порт отправителя и порт получателя). Наличие портов позволяет уточнять с каким именно приложением, из всех, установленных на удаленном узле, клиент хочет установить соединение. Каждое из приложений "закрепляет" за собой один или несколько портов и получает все приходящее пакеты, в заголовках которых прописаны те же значения. Пакет, который никто не забирает, уничтожается, а отправителю возвращается сообщение об ошибке (в этом случае на жаргоне говорят, что "порт закрыт"). Если образно представить себе IP-адрес как номер дома, то порт – это номер квартиры.

Такая схема обеспечивает совместную работу множества приложений, так, например, на одном и том же компьютере, имеющим всего один IP-адрес, могут быть установлены почтовый сервер, сервер новостей, web-сервер, ftp-сервер. И никаких конфликтов и разборок "это чей пакет?" между ними не возникает.

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

Прочная ассоциация порт-протокол привела к тому, что эти два термина стали частенько путать. Фраза "свяжись с сервером по сто десятому порту" - подразумевает "свяжись с сервером по протоколу POP3". На самом же деле, почтовый сервер может быть настроен и на другой порт, значение которого каким-то образом доносится клиенту.