Все, что ты хотел узнать о сетевых протоколах

Xakep, номер #046, стр. 046-044-2


Часть вторая - сетевые протоколы

Протокол IP

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

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

Каждый IP пакет содержит адреса отправителя и получателя, идентификатор протокола, TTL (время жизни пакета) и контрольную сумму для проверки целостности пакета. Как видишь, здесь есть контрольная сумма, которая все же позволяет узнать целостность пакета. Но об этом узнает только получатель. Когда комп-получатель принял пакет, то он проверяет контрольную сумму только для себя. Если пакет верный, то он обрабатывается, иначе просто отбрасывается. А компьютер-отправитель пакета не сможет узнать об ошибке в пакете и не сможет заново отправить пакет. Именно поэтому соединение по протоколу IP нельзя считать надежным.

Сопоставление адреса ARP и RARP

Протокол ARP предназначен для определения аппаратного (MAC) адреса компьютера в сети по его IP адресу. Прежде чем данные смогут быть отправлены на какой-нибудь комп, отправитель должен знать аппаратный адрес получателя. Именно для этого и предназначен ARP. Когда комп посылает ARP запрос на поиск аппаратного адреса, то протокол сначала ищет этот адрес в локальном кэше. Если уже были обращения по данному IP адресу, то информация о MAC адресе должна сохраниться в кэше. Если ничего не найдено, то в сеть посылается широковещательный запрос, который получат все компы сети. Все они получат этот пакет и проверят; если искомый IP принадлежит им, то они ответят на запрос, указав свой MAC адрес. Протокол RARP делает обратное - определяет IP адрес по известному MAC адресу.

Часть третья - транспортные протоколы

TCP и UDP

На транспортном уровне у нас два протокола - TCP и UDP. Оба они работают поверх IP. Это значит, что когда пакет TCP или UDP опускается на уровень ниже для отправки в сеть, он попадает на уровень сети прямо в лапы протокола IP. Здесь пакету добавляется сетевой адрес, TTL и другие атрибуты протокола IP. После этого пакет идет дальше вниз для физической отправки в сеть. Голый пакет TCP не может быть отправлен в сеть, потому что он не имеет информации о получателе, эта инфа добавляется к пакету с IP заголовком на уровне сети.

Быстрый UDP

Благодаря тому, что протокол UDP не устанавливает соединения, он работает очень быстро, быстрее TCP. Из-за высокой скорости его очень удобно использовать там, где данные нужно передавать быстро, и не нужно заботиться об их целостности. Такими примерами может быть радиостанции в Интернете или игровые сервера вроде Quake2/3. Звуковые данные просто выплевываются в глобальную сеть, и если слушатель не получит одного пакета, то максимум, что он услышит, - небольшое заикание в месте потери. Но если учесть, что сетевые пакеты имеют небольшой размер, то это заикание будет практически незаметно.

Назад на стр. 046-044-1  Содержание  Вперед на стр. 046-044-3