- Александр БУТЕНКО
-
Часто Интернет-трафик
приходится делить между несколькими
компьютерами в LAN (Local Area Network). Помочь
разобраться, как работает подобная
схема, призвана данная статья.
Начать хочется с реалий
нашей жизни, а именно с Университета, в
котором я учусь.
Итак, представьте себе dial-up-соединение
с аналоговой АТС (автоматической
телефонной станцией), но с хорошим
провайдером. С помощью простенького
прокси-сервера трафик делят на целый
класс машин. Идем дальше.
При первой же попытке "побродить"
по просторам Всемирной Паутины
сталкиваешься со странной надписью
внизу окна Internet Explorer'а: "Пытаюсь
обнаружить прокси-сервер?!" Недолго
думая, захожу в настройки и вижу, что
никто даже не прописал этот прокси
вручную - маячит банальная галочка "искать
прокси-сервер автоматически".
Браузер так и делает, каждый раз
отбирая время у пользователя.
Далее я интересуюсь, почему вообще все
работает так медленно? Мне отвечают,
что, наверное, плохой провайдер.
Странно, ведь ISP (Internet Service Provider) мне
хорошо известен своим отличным
качеством и скоростью работы. Я
спрашиваю, не связана ли проблема с
аналоговой АТС или слабеньким
внутренним модемом? Мне с
уверенностью отвечают, что линию кто-то
(неизвестно кто, но достоверно не
провайдер и не сотрудник Телекома)
проверял и сказал, что она хорошая. Я
пытаюсь объяснить абсурдность
ситуации, когда даже home page провайдера
загружается безобразно медленно, а
ведь он находится сразу за модемным
соединением и никак не может зависеть
от внешних каналов провайдера! На это
мне вежливо отвечают, что мне,
студенту, негоже лезть в дела
преподавателей, которые, между прочим,
имеют высшее образование по
компьютерной специальности.
Как видите, компьютерной
безграмотности пока в нашей стране
хватает L. Надеюсь, вместе с вами мы с
ней поборемся. Итак…
Территория TCP/IP.
Для того чтобы понять, как "раздавать"
Интернет, неплохо бы понять, как эта
сеть работает. Поэтому для начала
давайте рассмотрим основные принципы
работы протокола TCP/IP.
На самом деле TCP/IP - это не один
протокол, а целый пакет различных
протоколов, составляющих общий
транспорт для передачи разнообразных
данных. Поверх TCP/IP могут работать, в
свою очередь, и другие протоколы,
например, HTTP (Hyper Text Transfer Protocol), FTP (File
Transfer Protocol), POP3 и много-много других.
Зная TCP/IP, мы при желании можем создать
любой протокол, работающий поверх
него и выполняющий необходимую нам
задачу.
Основой TCP/IP, в свою очередь, является
транспортный протокол IP,
отвечающий за доставку данных и
основывающийся на адресах получателя
и отправителя. Поверх IP работает не
только TCP, но и UDP. Между ними есть
существенная разница: если TCP
предназначен для гарантированной
доставки данных, то UDP - для передачи
маленьких сообщений с минимальными
затратами ресурсов сети. Например, для
загузки из Интернета странички
используется TCP, а вот для Интернет-пейджера
или для запроса у DNS-сервера имени
узла идеально подходит UDP.
Для взаимодействия с любым из этих
протоколов существуют другие
протоколы, работающие поверх них (те
же HTTP, FTP). Они передают нижестоящему
протоколу (TCP или UDP) информацию и
адреса получателя/отправителя. Далее
все делается без их участия. Эти
верхние протоколы могут быть написаны
под нужды конкретного приложения и
включать разнообразные возможности и
функции, например, шифрование или
сжатие передаваемой информации. Важно
еще заметить, что каждому протоколу,
работающему поверх TCP/IP, необходим
свой порт.
Какой он Ethernet?
Чтобы понять, чем вызваны проблемы и
ограничения TCP/IP, давайте рассмотрим
довольно примитивный, но весьма
наглядный пример того, как работает
данный протокол в двух связанных
между LAN.
Предположим, что сначала у нас есть
только одна сеть, построенная на витой
паре и Ethernet-карточках. Раз уж мы
используем технологию Ethernet (она
очень популярна при создании
небольших локальных сетей), давайте
разберемся, как работает протокол
Ethernet в связке с IP.
Каждый сетевой адаптер Ethernet,
произведенный на этой планете J, имеет
свой собственный уникальный MAC-адрес.
Он идентифицирует конкретную
карточку, а значит и компьютер, в
котором она установлена. В то же время
нельзя сказать, что эти адреса
достаточно наглядны, кроме того, сам
Ethernet в свою очередь работает под
управлением других протоколов (того
же TCP/IP), поэтому каждый сетевой
адаптер имеет еще и более привычный
нам IP-адрес. Получается, что у сетевого
интерфейса реально существует два
адреса: физический MAC и логический IP.
Работа в сети происходит таким
образом: компьютер отправляет Ethernet
frame (пакет данных), который содержит MAC-адрес
своего получателя. Далее он попадает
первой попавшейся машине, которая
первым делом сравнит MAC-адрес
получателя с собственным. Если
совпадения не будет, все повторится
снова энное количество раз L, и только
потом адаптер отдаст пакет
вышестоящему протоколу - например, TCP/IP.
Заметьте, в сети одновременно может
бродить только один пакет и не более!
Конечно, сразу после успешной
передачи его уничтожит хаб в случае
витой пары или терминатор в случае
коаксиала - можно передавать
следующий. Однако, низкая
эффективность подобного способа
общения налицо. Отсюда и вывод, что
одна пара компьютеров передаст один и
тот же объем информации куда быстрее,
чем две пары в одной и той же сети.
А теперь представьте, что весь
Интернет построен таким образом.
Значит, все без исключения компьютеры
должны быть соединены одним каналом, и
информация, переданная одним из них,
должна быть получена всеми остальными
без исключения (!), чтобы иметь 100%-ную
гарантию успешной доставки адресату.
Выходит, все совсем плохо.
Вернемся к нашей задаче. Становится
понятным, почему идея соединения двух
LAN, учитывая издержки протокола Ethernet,
больше не кажется столь
привлекательной. Таким образом, даже
редко используемое соединение будет
постоянно тормозить работу обеих
сетей. Не очень приятная перспектива,
не так ли?
Впрочем, для решения подобной
проблемы существуют специальные
устройства, которые используют в
качестве шлюзов между двумя сетями.
Они получают всю информацию из каждой
сети и содержат у себя в памяти список
всех MAC-адресов сетей А и Б, т. е.
получив пакет из А, шлюз проверяет его
адрес получателя и только в случае
совпадения с одним из компьютеров
сети Б осуществляет его передачу.
Казалось бы, вот вам и решение
проблемы построения Интернета! К
сожалению, не все так просто. Допустим,
у нас есть не две, а три сети,
соединенных последовательно, между
которыми находятся шлюзы. Если нам
понадобится передать данные, например,
из LAN1 в LAN3, ничего не выйдет - шлюз
между сетями 1 и 2 не обнаружит
корректного MAC-адреса. К сожалению,
в протоколе Ethernet нет средств для
роутинга информации по длинному
маршруту. Однако "не хлебом единым
жив человек" - есть и другие
протоколы.
Вообще, организовать связь между
двумя различными сетями
исключительно на основе их физических
протоколов очень сложно. Нужен некий
общий протокол, совместимый со всеми
сетями и работающий поверх
физического протокола каждой сети, в
то же время обладающий способностью
доставлять данные по длинному
маршруту. Представьте себе обычную
автостраду: она идет над землей,
скалами, по туннелям, помостам над
водой, где-то прерывается дорожными
работами, где-то связана паромом - но
любой автомобиль с обычными КОЛЕСАМИ
сможет проехать по ней!
Дерзайте и учитесь!
Продолжение >>
Источник: http://www.mycomp.com.ua/
|