База знаний

Протокол 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