Предыстория
Пятнадцать лет назад у меня был компьютер и для того, чтоб поменяться играми и программами с другими владельцами компьютеров мне нужно было ездить в другой район города. Но потом у меня появился друг с компьютером, живший в моем дворе. И вот пока мы ждали пока на дискетку что то скопируется мы высказывали самые невероятные догадки о развитии компьютеров. То, что компьютеры будут в каждом доме мы конечно тогда догадывались. Мы не догадывались зачем они нужны будут в каждом доме, потому что на компьютере в те времена можно было запускать только специализированные программы и игры. Для игр существовали приставки, а программы в каждом доме не нужны. Самое невероятное, что мы по тем временам могли предположить в плане развития компьютеров это то, что к любому другу можно будет прийти с дискетой и поменяться программами. Но, то что произошло за это время с компьютерами даже моя воспаленная фантазия не могла породить. Если бы мне сказали, что для обмена программами и играми не нужно будет ходить с дискетами, не нужно будет даже вставать из-за компьютера я бы плюнул в глаз, сославшись на неадекватность этого бредящего человека. Сейчас я работаю в сфере IT и меня уже перестало удивлять все что касается компьютеров, но для многих моих знакомых компьютер и интернет кажутся очень сложными и непонятными по принципу действия вещами. Для тех, кто хочет понять как это все работает и насколько просто устроенно я и решил написать это руководство.
Internet — international network. Дословно означает «интернациональная сеть». Фактически куча компьютеров, которые соединены между собой. Но, для того чтоб компьютеры могли находить друг друга им присваивают адреса. Такой адрес в сети интернет называется IP — адрес.
IP — internet protocol. Протокол — это нечто вроде языка или условностей. Например, я объясняю товарищам условный знак: если у меня в окне стоит цветок на подоконнике с левой или правой стороны, то родители дома, а если по центру подоконника то родаки уехали на дачу и ко мне можно забуриться с пивом на ночь. Это будет протокол мгновенного определения наличия предков дома и возможности зависнуть на ночь. Этим протоколом смогут пользоваться все ребята в нашей компании, кто точно знает об оговоренной условности. Если же эти условности узнают и будут использовать в другой компании, то мы им не сможем помешать, особенно если вместо цветка они обусловятся ставить на подоконник бутылку водки. Так же само протокол IP никто не запрещает использовать в сетях отличных от интернет. Сети использующие TCP/IP протоколы, но не входящие в сеть Internet называются Intranet.
На самом деле IP — это не один протокол, а сборник протоколов. Называется этот сборник стэк протоколов TCP/IP. Большинство сегодняшних программ написано именно под эти протоколы и ничто мне не мешает на необитаемом острове построить свою сеть интранет с использованием оборудования и программ работающих через интернет протокол TCP/IP, установить сервер с сайтом и вести блог на этом сайте. Вот только прочитать мой блог смогут только жители необитаемого острова, подключенные к моей сети интранет. А вот если, это будет сайт компании через который каждый работник будет получать план работы на день, то построение такой сети даже возымеет смысл.
Как я уже говорил каждый компьютер в интернете имеет IP-адрес. Его можно увидеть, если зайти в кнопку «ПУСК» -> «Выполнить», запустить «cmd» и выполнить команду «ipconfig». Эта команда напишет все сетевые настройки компьютера, независимо от того вписаны они вручную или получены автоматически.
Предположим что IP-адрес вашего компьютера 192.168.99.100 и маска подсети 255.255.255.0. Это значит, что ваш компьютер сможет напрямую без помощи маршрутизатора связаться с другими компьютерами вашей подсети 192.168.99.* . Это равносильно тому, что с любым из соседей вашего дома вы можете связаться просто высунувшись из окна и крикнуть во двор «Ваааська, заходи ко мне с пивом». Если же Васька живет на другой улице, то тут прийдется связываться с ним совсем по другому алгоритму — например по телефону.
Шлюз по умолчанию — маршрутизатор на который скидываются пакеты, которые предназначаются для IP адресов не относящихся в вашей подсети. На английском языке шлюз называется «gateway» или просто «gate». Так как на пользовательских компьютерах не известно и не должно быть известно ничего о нахождении других IP адресов во всем мире, то все что компьютер делает перед отправкой пакета — проверяет относится ли IP-адрес получателя к локальной подсети. Если относится, то пакет отправляется напрямую, если не относится, то пакет скидывается в шлюз и пусть шлюз сам разбирается как и где найти получателя. Аналогию можно провести такую. Вы выходите из своей двери в коридор. В коридоре множество дверей. Двери с разными номерами ведут в такие же кабинеты, как у вас и только одна дверь — это выход. Дверь выхода может иметь любой номер и выглядеть как и все остальные, единственное что ее отличает — это то что она является выходом с коридора. Выходов может быть много, включая пожарный. Так же и шлюзов в подсети может быть несколько. Итак, шлюз — это IP адрес в той же подсети, который отвечает за вывод пакетов во внешний мир. Если выход во внешний мир не нужен и локальная сеть работает самодостаточно, то шлюз не нужен.
Маршрутизатор — это, компьютер который согласно таблицам маршрутов знает куда отправлять пакеты, предназначенные для того или иного IP адреса. В английской терминологии маршрутизатор называют router, которое происходит от слова route - путь. Таблицы маршрутизации во всем мире меняются ежедневно из-за того, что появляются новые провайдеры, интернет расширяется, проводятся новые магистрали между странами и континентами. Изначально интернет был военной сетью и основной целью этой сети было обеспечение надежной связи, которая бы работала даже при разрушении части сети в случае военных действий. Эта надежность обеспечивается за счет наличия запасных маршрутов. А маршрутизатор знает эти маршруты и выбирает самый подходящий рабочий маршрут, по которому можно доставить пакет получателю. Таким образом, чтоб доехать из Харькова в Ростов вам нужно сначала добраться до трассы Харьков-Ростов, а когда доедете до Ростова по мелким улочкам закоулкам добраться до нужного вам адреса. Если же трассу Харьков-Ростов перекроют или разломают, это не будет значить, что больше нет возможности добраться в Ростов. Это будет значить что дорога будет дольше, неудобней и прийдется попотеть над картой, чтоб выбрать подходящий маршрут, который наверняка будет загружен, потому что желающих добраться в Ростов меньше не станет.
Виртуальные порты TCP/IP
Представте ситуацию, когда приходит почтальон и приносит по вашему адресу письмо, на котором стоит только номер вашей квартиры. Его встречает вся семья и интересуется, а для кого из членов семьи собственно говоря письмо? Такая же ситуация получилась бы, если бы на IP-адрес вашего компьютера пришел пакет, нельзя было бы определить какой программе предназначается пакет ICQ, Skype, Firefox ? Для того, чтоб не возникало таких инцидентов и мы могли запускать одновременно множество программ, использующих сеть ввели понятие виртуальных портов. Так же как на почтовых конвертах пишут имя получателя, IP-пакеты маркируются номером порта, для которого он предназначается. Так, каждая сетевая программа резервирует за собой воображаемый порт и все пакеты попадают нужным программам. Благодаря портам мы на одном компьютере можем запускать одновременно множество сетевых программ. Порт является просто числом от 0 до 65535 - двойка в 16 степени.
Кроме того, сервера предоставляя сервисы используют именно те порты, которые во всем мире принято использовать для каждого сервиса. Так, например, веб-сайты всегда работают по умолчанию на порту с номером 80, почта отправляется через порт 25, а получается через порт 110. Ничто не мешает администратору настроить сервер отдавать сайты через порт 25, но тогда получится ситуация что клиенты, зная что 25й порт это почтовый порт отправки почты работает по протоколу SMTP будут пытаться общаться с сервером, который отвечает по протоколу HTTP. Результат будет подобен тому, что я по оговоренному выше протоколу при желании выпить пива буду искать на подоконнике цветок, а буду находить бутылку водки.
Доменные имена
У каждого владельца паспорта имеется фискальный код, но так уж повелось, нам людям в отличие от компьютеров удобней работать с именами, а не с цифрами и мы друг друга зовем по имени, а не по фискальному коду. Так и вместо IP-адресов нам удобней набирать имена сайтов, такие как mail.ru или google.com. Система, которая преобразовывает имя в IP-адрес называется DNS — Domain Name System. В настройках сети, если вы пишете их вручную, всегда указывается DNS сервер для преобразования доменных имен в IP адреса. Или же сервер DNS получается вашим компьютером автоматически при подключении к интернету. Каждый раз когда вы набираете адрес сайта в браузере, ваш компьютер запрашивает у DNS сервера его IP адрес и устанавливает соединение с нужным IP адресом. У одного доменного имени может быть множество IP адресов. Это делается для распределения нагрузки. Можно увидеть набрав на разных компьютерах команду ping google.com, что пингуются совсем разные IP-адреса. Таким образом во всем мире люди набирают один адрес google.com, но попадают на разные сервера google, которых по всему миру тысячи. То же самое как в любой стране мира мы можем обратиться в Макдональдс, чтоб получить гамбургер, независимо от его адреса.
Сервер — это компьютер, который предоставляет сервисы. Название образуется от английского «to serve» - обслуживать. Когда вы даете доступ на файлы вашего компьютера, чтоб на него можно было зайти через сетевое окружение и скачать что либо, ваш компьютер становится сервером, потому что предоставляет сервис доступа к файлам. То же самое, если вы поставите на свой компьютер программное обеспечение веб сервера (например, веб сервер apache), то на ваш компьютер можно будет зайти через веб-браузер просто набрав IP адрес вашего компьютера и просмотреть вашу страничку. Другой вопрос, что для настоящих серверов используют более качественное и надежное оборудование, которое позволяет сервисам работать без сбоев круглые сутки и круглый год. Примеры предоставляемых популярных сервисов: HTTP для предоставления сайтов, DNS для преобразования доменных имен, FTP для обмена файлами, SMTP для отправки почты, POP3 или IMAP4 для получения почты, BitTorrent для пиринговых сетей, игровые серверы типа BattleNet. Свой сервер — это отличное решение для фирмы, офиса, локальной компьютерной сети или интернет клуба. Сервер помогает оптимизировать работу и сложить многие функции с людей на машину. Простой сервер может настроить единожды системный администратор. Корректно настроенный сервер практически не нуждается в обслуживании. Если же на сервер возложенно множество функций и от них зависит вся работа офиса, то фирме для обслуживания сервера понадобится должность системного администратора.
NAT
В любой локальной сети рано или поздно возникает потребность подключения к интернету. В локальных сетях для адресации компьютеров используются приватные IP-адреса, которые всему миру не известны. Провайдер же выдает только один реальный адрес на одно подключение. Как же быть, если в интернет надо подключить множество компьютеров, а адрес всего один? Так же, как это делается при подключении внутренних телефонных станций. Внутри офиса с телефонной станцией вы можете набрать номер 100 чтоб дозвониться начальнику или номер 101 чтоб дозвониться к коллеге. Но, если вы за пределеами офиса наберете номер 100 или 101, то вы наберете не существующий номер. Этот номер существует только в пределах внутренней телефонной сети вашего предприятия. Аналогично, в локальных компьютерных сетях используют внтренние IP адреса, которые начинаются на 192.168.*.* для адресации компьютеров и называются приватными. Такие адреса могут быть как в вашей локальной сети, так и в тысячах локалках всего мира. При попадании в интернет пакеты с таких приватных адресов выбрасываются, для них нет получателя. Поэтому при выходе пакета из локальной сети в мир используется следующий финт, который называется NAT — network address translation — преобразование сетевых адресов. На маршрутизаторе локалки, который отвечает за раздачу интернета, исходящий адрес пакета перебивается на адрес маршрутизатора. Всему интернету кажется что именно маршрутизатор отправил этот пакет и ответные пакеты отправляются на адрес этого же маршрутизатора. Маршрутизатор имеет именно тот единственный реальный IP адрес, который дал провайдер при подключении к интернету. При попадании на маршрутизатор система NAT понимает, что хоть адресом назначения и является адрес маршрутизатора, на самом деле пакет предназначается другому компьютеру. На пакете адрес назначения меняется на внутренний приватный адрес в вашей локальной сети и маршрутизатор заворачивает его в локальную сеть. Система NAT просто запоминает какой из компьютеров локальной сети инициализировал подключение и по таблицам подключений возвращает обратные пакеты. При такой системе выхода в интернет неудобство заключается в том, что никто из интернета не сможет инициализировать подключение к вашему компьютеру. Это плохо, если вы хотите на своем компьютере запустить веб сервер или сделать сервер ftp, или хотя бы создать сетевую игру вроде Counter-Strike или WarCraft. А преймущество в том, что вам не нужно защищать свой компьютер, ведь из интернета никто не может к вам подключиться и получить доступ к вашим ресурсам. Защищаться нужно только от компьютеров локальной сети, а это намного проще с учетом того что их немного и как правило они не настроены против вас враждебно.
Пробрасывание портов
Если же мы находимсся в локальной сети без реального адреса, а создать игру в WarCraft ой как хочется. В таком случае на помощь прийдет port forwarding. Маршрутизатор настраивается таким образом, что все попытки подключения на адрес маршрутизатора локальной сети на определенный порт не будут игнорироваться, даже если на этом порту маршрутизатора не запущены никакие сервисы. Пакеты приходящие на обусловленный порт маршрутизатора будут закидываться внутрь локалки на тот компьютер, где была создана сетевая игра или запущен какой то другой сетевой сервис.
Что такое фаервол/брэндмауэр и как он работает.
Жила была девочка Маша и радовалась каждому письму которое ей приходило. Но, когда она выросла и стала звездой мирового масштаба, ее стали заваливать сотнями писем в день. Одни письма были признаниями в любви, другие оскорблениями и угрозами, а Машу из всех писем интересовали только те, которые являлись предложениями о сотрудничестве. Маша доверила обработку всех приходящих пакетов секретарю, чтоб тот их фильтровал и выбирал только единицы полезных писем, проверял наличие корректного обратного адреса и оставлял письма только отпечатанные на лазерном принтере, а остальные выбрасывал. Так же секретарю указали выкидывать все письма из городов Урюпинск, Мухосранск и Бобруйск после неудачных концертов в этих городах. А для того, чтоб через письмо с якобы предложением о сотрудничестве не прислали бомбу или отраву снабдили секретаря приборами для тестирования всех писем на наличие взрывоопасных и токсичных веществ. А секретаря назвали Файрволом. В общем файрвол — это программа, которая фильтрует весь сетевой траффик приходящий на ваш компьютер, и в зависимости от ваших настроек блокирует его или разрешает. Так же файрвол может быть наделен функциями проверки траффика на вирусы и на прочие вредоносные данные.
Килобиты и килобайты
И последний вопрос, в котором больше всего путаются пользователи интернета - это килобиты и килобайты. Для пользователя все равно 128 килобит или килобайт, ему Opera на закачке показала 128кб, а в контракте написано 1024 кбит - обманули. Но разьве это не одно и тоже? А какая разница? Давайте все по порядку.
Компьютер воспринимает любую информацию в виде нулей и единиц. Будь это картинка, текст музыка или видео. Почему нулей и единиц? Потому что компьютеру так проще, он понимает только есть напряжение или нет напряжения. Допустим, вы с другом договорились свет горит в зале - есть родаки дома (единица), свет не горит - значит никого нет дома (ноль). Вы можете с помощью одного выключателя передать только два числа - ноль или один. А если нужно передать количество требуемых бутылок пива? Если выключателей несколько, то можно передать числа гораздо больше чем ноль и один даже несмотря на то что выключатель может только показать ВКЛ или ВЫКЛ, только надо обусловиться, как переводить из одной системы в другую. Рисуем такую таблицу для двух выключателей в двух разных комнатах:
00 - 0
01 - 1
10 - 2
11 - 3
Получается двумя выключателями можно передать число от 0 до 3 (то есть четыре числа). А если выключателей три?
000 - 0
001 - 1
010 - 2
011 - 3
100 - 4
101 - 5
110 - 6
111 - 7
Если выключателей три, то можно передать числа от нуля до 7, то есть восемь чисел.
Для того чтоб узнать сколько чисел можно передать с помощью имеющегося количества выключателей, надо двойку (количество позиций выключателя) возвести в степень количества выключателей. Для трех выключателей это 2 в третей степени - 8 чисел.
Итак, если выключателей 8 штук, то 8 в восьмой степени = 256. В компьютерной терминологии один выключатель имеет объем информации 1 бит. А восемь объединенных в группу выключателей 1 байт. Итак, 1 байт - это число от 0 до 255.
С помощью числа от 0 до 255 можно уже договориться передавать буквы. Например,
1 = A
2 = B
и т.д.
Примерно так хранятся буквы в вашем компьютере. Так же само можно обсуловиться что каждое число будет обозначать градации какого то цвета в изобращении и тогда с помощью выключателей можно передавать изображения. Если же число будет обуславливать напряжение на динамике в определенный момент времени, то поток таких чисел задаст мелодию.
Понятное дело, что выключатели емкостью информации в 1 бит прийдется заменить на что то поменьше. Такие выключатели в компьютере называются транзисторы и в одну микросхему их влазят миллионы и даже миллиарды.
Для передачи информации по сети в сетевом кабеле на долю секунды выставляется состояние ВКЛ или ВЫКЛ. ВКЛ - есть напряжение, ВЫКЛ - нет напряжения. За такую долю секунды передается 1 бит. Чем быстрее передающий компьютер сможет выставлять состояние напряжения в кабеле, а принимающий распознать это состояние, тем больше информации можно передать за одну секунду по сети. Так, если переключать состояние напряжения сто миллионов раз в секунду, то мы получим сеть в сто мегабит. Вместо напряжения можно использовать любой эффект, который может нести информацию. Например, свет - горит или не горит как в случае с окнами. С помощью света информация передается по оптоволокну. В оптоволоконных кабелях скорость передачи информации составляет гигабит, десятки гигабит и даже сотни гигабит - это миллиард переключений в секунду.
Итак, в сети биты, килобиты, мегабиты используются потому что передаваемая информация приводится к элементарному ВКЛ или ВЫКЛ, что и является ячейкой в один бит.
Но, мы привыкли мерять объем текста, фото или видео с помощью байтов, килобайтов или мегабайтов. Зная, что 1 байт = 8 бит несложно преобразовать одну единицу измерения в другую. Именно поэтому Opera на закачке меряет в байтах, а сетевое оборудование меряют в битах.