База знаний
Протокол TCP/IP или как работает Интернет (для новичков)
В базе работы глобальной сети Интернет лежит набор (стек) протоколов TCP/IP. Но эти термины только на первый взгляд кажутся сложными. На самом деле стек протоколов TCP/IP – это простой набор правил обмена информацией, и эти правила действительно вам хорошо известны, хотя вы, вероятно, об этом и не догадываетесь.
Принципы работы интернет-протоколов TCP/IP по сути очень просты и очень напоминают работу обычной почты.
Вспомните, как работает почта. Сначала вы на листе бумаги пишете письмо, затем кладете его в конверт, заклеиваете, на обратной стороне конверта пишете адреса отправителя и получателя, а затем относите в ближайшее почтовое отделение. Далее письмо проходит через цепочку почтовых отделений в ближайшее почтовое отделение получателя, откуда письмо почтальоном доставляется к указанному адресу получателя и опускается в его почтовый ящик (с номером его квартиры) или вручается лично. Все, письмо дошло до получателя. Когда получатель письма захочет ответить, то он в своем письме в ответ поменяет местами адреса получателя и отправителя, и письмо отправится к вам по той же цепочке, но в обратном направлении.
На конверте с письмом будет написано примерно следующее:
Теперь мы готовы рассмотреть взаимодействие компьютеров и программ в Интернете (да и в локальной сети тоже). Обратите внимание, что аналогия с обычной почтой будет почти полной.
Каждый компьютер (он же: узел, хост) в пределах сети Интернет тоже имеет уникальный адрес, называемый IP-адрес (Internet Protocol Address), например: 127.0.0.1.
IP адрес состоит из четырех десятичных чисел (от 0 до 255), разделенных точкой. Но знать только IP-адрес компьютера еще недостаточно, поскольку в конечном итоге обмениваются информацией не компьютеры собственными силами, а работающие на них приложения. А на компьютере может одновременно работать сразу несколько программ (например, почтовый сервер, веб-сервер и т.д.). Для доставки обычного бумажного письма недостаточно знать только адрес дома – еще нужно знать номер квартиры. Также каждое программное приложение имеет подобный номер, именуемый номером порта. Большинство серверных приложений имеют стандартные номера, например: почтовый сервис привязан к порту с номером 25 (еще говорят: «слушает» порт, принимает сообщения), веб-сервис привязан к порту 80, FTP – к порту 21 и т.д.
Таким образом, имеем следующую практически полную аналогию с нашим обычным почтовым адресом:
В компьютерных сетях, работающих по протоколам TCP/IP, аналогом бумажного письма в конверте является пакет, содержащий передаваемые данные и адресную информацию — адрес отправителя и адрес получателя, например:
Конечно, в пакетах также есть служебная информация, но для понимания сути это не важно.
Обратите внимание, комбинация: «IP-адрес и номер порта» – называется «сокет».
В примере мы из сокета 82.146.49.55:2049 присылаем пакет на сокет 195.34.32.116:53, то есть пакет пойдет на компьютер, имеющий IP адрес 195.34.32.116, порт 53. А порту 53 соответствует сервер распознавания имен, который примет этот пакет. Зная адрес отправителя, этот сервер сможет после обработки нашего запроса сформировать ответный пакет, который пойдет в обратном направлении на сокет отправителя 82.146.49.55:2049, который для DNS-сервера будет сокетом получателя.
Как правило, взаимодействие осуществляется по схеме «клиент-сервер»: «клиент» запрашивает любую информацию (например, страницу сайта), сервер принимает запрос, обрабатывает его и посылает результат. Номера портов серверных программ общеизвестны, например: почтовый SMTP сервер «слушает» 25-й порт, POP3 сервер, обеспечивающий чтение почты из ваших почтовых ящиков «слушает» 110-порт, веб-сервер – 80-й порт и т.д.
Большинство программ на домашнем компьютере являются клиентами – например, почтовый клиент Outlook, веб-браузеры IE, FireFox и т.д.
Номера портов на клиенте не фиксированы как сервер, а назначаются операционной системой динамически. Фиксированные серверные порты обычно имеют номера до 1024 (но исключения), а клиентские начинаются после 1024.
Итак, IP – это адрес компьютера (узла, хоста) в сети, а порт – номер конкретной программы, работающей на этом компьютере.
Однако человеку запоминать цифровые IP-адреса затруднительно – куда удобнее работать с буквенными именами. Ведь гораздо легче запомнить слово, чем набор цифр. Так и сделано – любой цифровой IP-адрес можно связать с буквенно-цифровым именем. В результате, к примеру, вместо 82.146.49.55 можно использовать имя www.ofnet.ua. А преобразованием доменного имени в цифровой IP-адрес занимается сервис доменных имен – DNS (Domain Name System).
Рассмотрим подробнее, как это работает. Ваш провайдер явно (на бумаге, для ручной настройки соединения) или неявно (через автоматическую настройку соединения) предоставляет вам IP-адрес сервера имен (DNS). На компьютере с этим IP-адресом работает программа (сервер имен), знающая все доменные имена в Интернете и соответствующие цифровые IP адреса. DNS-сервер «слушает» 53-й порт, принимает на него запросы и выдает ответы, например:
Теперь рассмотрим, что происходит, когда в браузере вы набираете доменное имя (URL) этого сайта (www.ofnet.ua) и нажав <enter>, в ответ от веб-сервера получаете страницу этого сайта.
Например:
Набираем в адресной строке браузера доменное имя www.ofnet.ua и жмем <enter>. Далее операционная система предпринимает примерно следующие действия:
Отправляется запрос (точнее пакет с запросом) DNS сервера на сокет 195.34.32.116:53. Как было рассмотрено выше, порт 53 соответствует DNS-серверу – приложению, занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, соответствующий введенному имени.
Диалог примерно следующий:
Далее наш компьютер устанавливает соединение с портом 80 82.146.49.55 и отправляет запрос (пакет с запросом) на получение страницы www.ofnet.ua. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт обычно пишется, поскольку используется по умолчанию, но его можно и явно указать после двоеточия – http://www.ofnet.ua:80.
Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу на языке HTML – языке разметки текста, понимающего браузер.
Наш браузер, получив страницу, отображает ее. В результате мы видим на экране главную страницу этого сайта.
Зачем эти принципы следует понимать?
К примеру, вы заметили странное поведение своего компьютера — непонятная сетевая активность, торможение и т.д. Что делать? Открываем консоль (нажимаем кнопку «Пуск» – «Выполнить» – набираем cmd – «Ок»). В консоли набираем команду netstat -anы жмем <Enter>. Эта утилита отображает список установленных соединений между сокетами компьютера и сокетами удаленных узлов. Если мы видим в колонке «Внешний адрес» какие-то чужие IP-адреса, а через двоеточие 25-й порт, что это может означать? (Помните, что 25-й порт соответствует почтовому серверу?) Это означает, что ваш компьютер установил соединение с каким-нибудь почтовым сервером (серверами) и посылает через него какие-то письма. И если ваш почтовый клиент (Outlook, например) в настоящее время не запущен, и если еще таких соединений на 25 порт много, то, вероятно, в вашем компьютере завелся вирус, который рассылает от вашего имени спам или пересылает номера ваших кредитных карт вместе с паролями злоумышленникам.
Также понимание принципов работы Интернета необходимо для правильной настройки файервола (проще говоря брандмауэра). Эта программа (часто поставляемая вместе с антивирусом), предназначенная для фильтрации пакетов — «своих» и «враждебных». Своих пропускать, чужих не пускать. Например, если ваш файервол уведомляет вас, что кто-то хочет установить соединение с любым портом вашего компьютера. Разрешить или запретить?
Ну и самое главное – эти знания очень полезны при общении с техподдержкой.
Напоследок приведу список портов, с которыми вам, вероятно, придется столкнуться:
Несколько специальных IP адресов:
Что такое маска подсети и шлюз по умолчанию (роутер, маршрутизатор)?
(Эти параметры задаются в настройках сетевых подключений).
Всё просто. Компьютеры объединяются в локальные сети. В локальной сети компьютеры непосредственно «видят» друг друга. Локальные сети соединяются между собой через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения – принадлежит компьютер-получатель к этой локальной сети или нет. Если компьютер-получатель принадлежит к этой сети, как и компьютер-отправитель, то пакет передается ему напрямую, иначе пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую сеть, т.е. почтового отделения (по аналогии с почтой).
Напоследок рассмотрим что же означают непонятные термины:
TCP/IP – это название набора сетевых протоколов. На самом деле передаваемый пакет проходит несколько уровней. (Как на почте: сначала вы пишете письмо, затем помещаете в конверт с адресом, затем по почте на нем ставится штамп и т.д.).
IP протокол – это протокол так называемого сетевого уровня. Задачей этого уровня является доставка IP-пакетов от компьютера отправителя к компьютеру получателя. Помимо данных, пакеты этого уровня имеют ip-адрес отправителя и ip-адрес получателя. Номера портов на сетевом уровне не используются. Какому порту, то есть приложению, адресован этот пакет, был ли этот пакет доставлен или потерян, на этом уровне неизвестно — это не его задача, это задача транспортного уровня.
TCP и UDP – это протоколы так называемого транспортного уровня. Транспортный уровень находится над сетевым. На этом уровне добавляется порт отправителя и порт получателя.
TCP — это протокол с подключением и гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для установления соединения, происходит что-то вроде рукопожатия (-Привет. -Привет. -Поболтаем? -Давай.). Далее по этому соединению туда и обратно ссылаются пакеты (идет разговор), причем с проверкой, дошел ли пакет до получателя. Если пакет не дошел, он ссылается повторно (повторы, не услышал).
UDP – это протокол без подключения и с негарантированной доставкой пакетов. (Типа: что-то крикнул, а услышат тебя или нет – неважно).
Над транспортным уровнем находится прикладной уровень. На этом уровне работают такие протоколы как http, ftp и другие. Например, HTTP и FTP используют надежный протокол TCP, а DNS-сервер работает через ненадежный протокол UDP.
Как просмотреть текущие соединения?
Текущие соединения можно просмотреть с помощью команды
netstat -an
(Параметр n указывает выводить IP адреса вместо доменных имен).
Эта команда запускается следующим образом:
«Пуск» — «Выполнить» — набираем cmd — «Ок». В появившейся консоли (черное окно) набираем команду netstat -an и жмем <Enter>. Результатом станет список установленных соединений между сокетами нашего компьютера и удаленных узлов.
Например, получаем:
В этом примере 0.0.0.0:135 означает, что наш компьютер на всех своих IP адресах слушает (LISTENING) 135-й порт и готов принимать на него соединение от любого (0.0.0.0:0) по протоколу TCP .
91.76.65.216:139 – наш компьютер слушает 139-й порт на своем IP-адресе 91.76.65.216.
Третья строка означает, что сейчас установлено (ESTABLISHED) соединение между нашей машиной (91.76.65.216:1719) и удаленной (212.58.226.20:80). Порт 80 означает, что наша машина обратилась с запросом на веб-сервер (у меня действительно открыты страницы в браузере).
Связаться с нами
Адрес: г. Киев, 03058, а/я 24
E-mail: info@qalight.com.ua