Введение Не по теме Это моя первая статья и она будет достаточно длинная Я хочу помочь новичкам понять основы работы в интернете. Сетевое взаимодействие - это большая тема, поэтому я дам краткий обзор. Надеюсь, что это даст вам базовые знания, которые вы сможете развить дальше. Тут я рассмотрю следующие темы: Модель OSI Модель TCP/IP Как эти модели выглядят на практике Знакомство с основными сетевыми инструментами Модель OSIМодель OSI (Open Systems Interconnection) - это универсальная модель, применяемая для объяснения принципов компьютерных сетей. В отличие от более сложной модели TCP/IP, которая используется на практике, модель OSI представляет собой более простую концепцию, легче воспринимаемую на первых этапах изучения. Модель OSI состоит из семи уровней: Приложение(Application) Представление(Presentation) Сессия(Session) Транспорт(Transport) Сеть(Network) Канал передачи данных(Data link) Физический(Physical) Есть много запоминалок, которые помогут вам запомнить уровни модели OSI - пробуйте разные, пока не найдете ту, которая подойдет вам. Давайте вкратце рассмотрим каждую из них по очереди: Уровень 7 - Приложение: Уровень "Приложение" в модели OSI обеспечивает программам, работающим на компьютере, доступ к сетевым функциям. Он взаимодействует в основном с приложениями, предоставляя им возможность обмениваться данными. При поступлении данных на уровень "Приложение" они передаются на уровень "Представление". Уровень 6 - Представление: На уровне "Представление" данные, поступающие от приложения, преобразуются из формата, понятного приложению, в стандартизированный формат, который может быть понятен приложению на другом компьютере. Этот уровень также отвечает за шифрование, сжатие и другие манипуляции с данными перед их передачей на следующий уровень - уровень "Сессии". Уровень 5 - сессия: Когда сессионный уровень получает правильно отформатированные данные от представительского уровня, он проверяет, может ли он установить соединение с другим компьютером по сети. Если это не удается, то он отправляет сообщение об ошибке, и дальше процесс не идет. Если сеанс удается установить, то задача сессионного уровня - поддерживать его, а также взаимодействовать с сессионным уровнем удаленного компьютера для синхронизации связи. Сессионный уровень особенно важен, поскольку создаваемая им сессия уникальна для данного соединения. Именно это позволяет вам одновременно выполнять несколько запросов к разным конечным точкам без смешивания данных (вспомните открытие двух вкладок в веб-браузере в одно и то же время)! Когда сеансовый уровень успешно зарегистрировал соединение между хостом и удаленным компьютером, данные передаются на четвертый уровень - транспортный. Уровень 4 - транспортный: Транспортный уровень - это очень интересный уровень, выполняющий множество важных функций. Его первая цель - выбрать протокол, по которому будут передаваться данные. Два наиболее распространенных протокола транспортного уровня - TCP (Transmission Control Protocol) и UDP (User Datagram Protocol); при использовании TCP передача осуществляется на основе соединения, что означает, что между компьютерами устанавливается соединение и поддерживается в течение всего времени запроса. Это позволяет обеспечить надежную передачу, так как соединение может использоваться для обеспечения того, что все пакеты попадают в нужное место. TCP-соединение позволяет двум компьютерам постоянно поддерживать связь, чтобы гарантировать, что данные отправляются с приемлемой скоростью, а потерянные данные будут отправлены повторно. В случае с UDP все наоборот: пакеты данных по сути бросаются на принимающий компьютер - если он не успевает, то это его проблема (именно поэтому передача видео по Skype может быть пикселизирована, если соединение плохое). Это означает, что TCP обычно выбирают для ситуаций, когда точность предпочтительнее скорости (например, передача файлов или загрузка веб-страницы), а UDP - для ситуаций, когда скорость важнее (например, передача потокового видео). Выбрав протокол, транспортный уровень делит передачу на части (в TCP они называются сегментами, в UDP - дейтаграммами), что облегчает успешную передачу сообщения. Уровень 3 - сеть: Сетевой уровень определяет, куда направить ваш запрос. Например, когда вы запрашиваете информацию с веб-страницы в Интернете, сетевой уровень использует IP-адрес страницы для определения наилучшего маршрута. На этом этапе используется логическая адресация (например, IP-адреса), которая управляется программным обеспечением. Логические адреса помогают упорядочивать сети, классифицируя их для правильной маршрутизации данных. Сейчас наиболее распространенным форматом логической адресации является IPV4, например, 192.168.1.1 - типичный адрес домашнего маршрутизатора. Уровень 2 - канал передачи данных: Канальный уровень сосредоточен на физической адресации передачи данных. Он получает пакет от сетевого уровня (который включает IP-адрес удаленного компьютера) и добавляет физический (MAC) адрес конечной точки приема. Внутри каждого компьютера с сетевым интерфейсом находится сетевая карта (NIC), которая имеет уникальный MAC-адрес (Media Access Control) для идентификации. MAC-адреса задаются производителем и буквально вписаны в карту; их нельзя изменить - хотя их можно подделать. Когда информация передается по сети, именно физический адрес используется для определения того, куда именно отправлять информацию. Кроме того, в задачу канального уровня входит представление данных в формате, пригодном для передачи. Канальный уровень также выполняет важную функцию при получении данных: он проверяет полученную информацию, чтобы убедиться, что она не была повреждена во время передачи, что вполне может произойти, когда данные передаются на первом физическом уровне. Уровень 1 - физический: Физический уровень относится к аппаратной части компьютера. Именно здесь происходит отправка и прием электрических импульсов, составляющих передачу данных по сети. Задача физического уровня - преобразовывать двоичные данные передачи в сигналы и передавать их по сети, а также принимать входящие сигналы и снова преобразовывать их в двоичные данные. ИнкапсуляцияПо мере передачи данных на каждом уровне модели к началу передачи добавляется дополнительная информация, содержащая сведения, характерные для данного уровня. Например, заголовок, добавляемый сетевым уровнем, включает такие сведения, как IP-адреса источника и получателя, а заголовок, добавляемый транспортным уровнем, включает (помимо прочего) информацию, специфичную для используемого протокола. Канальный уровень также добавляет фрагмент в конце передачи, который используется для проверки того, что данные не были повреждены при передаче; это также дает дополнительный бонус в виде повышенной безопасности, поскольку данные нельзя перехватить и подделать, не сломав трейлер. Весь этот процесс называется инкапсуляцией - процессом, с помощью которого данные могут быть переданы с одного компьютера на другой. Обратите внимание, что на разных этапах процесса инкапсулированные данные называются по-разному. На уровнях 7, 6 и 5 данные называются просто данными. На транспортном уровне инкапсулированные данные называются сегментом или дейтаграммой (в зависимости от того, TCP или UDP был выбран в качестве протокола передачи). На сетевом уровне данные называются пакетом. Когда пакет передается на уровень канала передачи данных, он становится кадром, а к моменту передачи по сети кадр разбивается на биты. Когда сообщение получает второй компьютер, он обращает процесс вспять - начинает с физического уровня и работает до тех пор, пока не достигнет прикладного уровня, удаляя добавленную информацию по мере продвижения. Это называется деинкапсуляцией. Таким образом, вы можете представить себе уровни модели OSI как существующие внутри каждого компьютера с сетевыми возможностями. Хотя на практике все не так однозначно, все компьютеры следуют одному и тому же процессу инкапсуляции при отправке данных и деинкапсуляции при их получении. Процессы инкапсуляции и деинкапсуляции очень важны - не в последнюю очередь из-за их практического применения, но также и потому, что они дают нам стандартизированный метод отправки данных. Это означает, что все передачи будут последовательно следовать одной и той же методологии, что позволяет любому устройству, включенному в сеть, отправить запрос любому другому устройству и быть уверенным, что он будет понят - независимо от того, являются ли они одним и тем же производителем, используют ли одну и ту же операционную систему или какие-либо другие факторы. Модель TCP/IPМодель TCP/IP во многом похожа на модель OSI. Она на несколько лет старше и служит основой для создания реальных сетей. Модель TCP/IP состоит из четырех уровней: Приложения, Транспортного, Интернета и Сетевого интерфейса. Между собой они охватывают тот же спектр функций, что и семь уровней модели OSI. TCP/IP Приложение(Application) Транспорт(Transport) Интернет(Internet) Сеть(Network) Примечание: Некоторые недавние источники разделяют модель TCP/IP на пять уровней, разбивая уровень сетевого интерфейса на канальный и физический уровни (как в модели OSI). Это общепринято и хорошо известно, однако официально не определено (в отличие от первоначальных четырех уровней, которые определены в RFC1122). Вы сами решаете, какую версию использовать - обе обычно считаются правильными. Вы можете спросить, зачем нам нужна модель OSI, если в реальном мире она ни для чего не используется. Ответ на этот вопрос довольно прост: модель OSI (из-за того, что она менее сжата и более жесткая, чем модель TCP/IP), как правило, проще для изучения начальной теории сетей. Процессы инкапсуляции и деинкапсуляции работают в модели TCP/IP точно так же, как и в модели OSI. На каждом уровне модели TCP/IP добавляется заголовок во время инкапсуляции и удаляется во время деинкапсуляции. Теперь давайте перейдем к практической стороне дела. Многоуровневая модель хороша в качестве наглядного пособия - она показывает нам общий процесс инкапсуляции и передачи данных по сети, но как это происходит на самом деле? Когда мы говорим о TCP/IP, хорошо представлять себе таблицу с четырьмя слоями, но на самом деле мы говорим о наборе протоколов - наборе правил, определяющих, как должно выполняться то или иное действие. TCP/IP получил свое название от двух наиболее важных из них: протокола управления передачей (который мы рассматривали ранее в модели OSI), контролирующего поток данных между двумя конечными точками, и протокола Интернета, который контролирует адресацию и отправку пакетов. Существует множество других протоколов, входящих в набор TCP/IP; мы рассмотрим некоторые из них в последующих заданиях. А пока давайте поговорим о TCP. Как уже говорилось, TCP - это протокол, основанный на соединении. Другими словами, прежде чем отправлять данные по TCP, необходимо установить стабильное соединение между двумя компьютерами. Процесс создания такого соединения называется трехсторонним рукопожатием. Когда вы пытаетесь установить соединение, ваш компьютер сначала посылает удаленному серверу специальный запрос, указывающий на то, что он хочет инициализировать соединение. Этот запрос содержит так называемый бит SYN (сокращение от synchronise - синхронизация), который, по сути, устанавливает первый контакт, запуская процесс соединения. В ответ сервер отправит пакет, содержащий бит SYN, а также еще один бит «подтверждения», называемый ACK. Наконец, ваш компьютер сам отправит пакет, содержащий бит ACK, подтверждая, что соединение установлено успешно. После успешного завершения трехстороннего рукопожатия данные могут надежно передаваться между двумя компьютерами. Любые данные, которые были потеряны или повреждены при передаче, восстанавливаются На этом всё Нетворкинг - это одна из тех вещей, которым просто необходимо научиться. Мы рассмотрели самые основы, но было бы очень хорошо продолжать учиться самостоятельно.