Руководство по стеку протоколов TCP/IP для начинающих
Cтек протоколов TCP/IP широко распространен. Он используется в качестве основы для глобальной сети интернет. Разбираемся в основных понятиях и принципах работы стека.
Основы TCP/IP
Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол интернета) — сетевая модель, описывающая процесс передачи цифровых данных. Она названа по двум главным протоколам, по этой модели построена глобальная сеть — интернет. Сейчас это кажется невероятным, но в 1970-х информация не могла быть передана из одной сети в другую, с целью обеспечить такую возможность был разработан стек интернет-протоколов также известный как TCP/IP.
Разработкой этих протоколов занималось Министерство обороны США, поэтому иногда модель TCP/IP называют DoD (Department of Defence) модель. Если вы знакомы с моделью OSI, то вам будет проще понять построение модели TCP/IP, потому что обе модели имеют деление на уровни, внутри которых действуют определенные протоколы и выполняются собственные функции.
Мы разделили статью на смысловые части, чтобы было проще понять, как устроена модель TCP/IP:
Уровневая модель TCP/IP
Выше мы уже упоминали, что модель TCP/IP разделена на уровни, как и OSI, но отличие двух моделей в количестве уровней. Документом, регламентирующим уровневую архитектуру модели и описывающий все протоколы, входящие в TCP/IP, является RFC 1122. Стандарт включает четыре уровня модели TCP/IP, хотя, например, согласно Таненбауму (Таненбаум Э., Уэзеролл Д. Т18 Компьютерные сети. 5-е изд. — СПб.: Питер, 2012. — 960 с.: ил. ISBN 978-5-459-00342-0), в модели может быть пять уровней.
Три верхних уровня — прикладной, транспортный и сетевой — присутствуют как в RFC, так и у Таненбаума и других авторов. А вот стоит ли говорить только о канальном или о канальном и физическом уровнях — нет единого мнения. В RFC они объединены, поскольку выполняют одну функцию. В статье мы придерживаемся официального интернет-стандарта RFC и не выделяем физический уровень в отдельный.
Далее мы рассмотрим четыре уровня модели.
Канальный уровень (link layer)
Предназначение канального уровня — дать описание тому, как происходит обмен информацией на уровне сетевых устройств, определить, как информация будет передаваться от одного устройства к другому. Информация здесь кодируется, делится на пакеты и отправляется по нужному каналу, т.е. среде передачи.
Этот уровень также вычисляет максимальное расстояние, на которое пакеты возможно передать, частоту сигнала, задержку ответа и т.д. Все это — физические свойства среды передачи информации. На канальном уровне самым распространенным протоколом является Ethernet, но мы рассмотрим его на примере в конце статьи.
Межсетевой уровень (internet layer)
Каждая индивидуальная сеть называется локальной, глобальная сеть интернет позволяет объединить все локальные сети. За объединение локальных сетей в глобальную отвечает сетевой уровень. Он регламентирует передачу информации по множеству локальных сетей, благодаря чему открывается возможность взаимодействия разных сетей.
Межсетевое взаимодействие — это основной принцип построения интернета. Локальные сети по всему миру объединены в глобальную, а передачу данных между этими сетями осуществляют магистральные и пограничные маршрутизаторы.
Маска подсети и IP-адреса
Маска подсети помогает маршрутизатору понять, как и куда передавать пакет. Подсетью может являться любая сеть со своими протоколами. Маршрутизатор передает пакет напрямую, если получатель находится в той же подсети, что и отправитель. Если же подсети получателя и отправителя различаются, пакет передается на второй маршрутизатор, со второго на третий и далее по цепочке, пока не достигнет получателя.
Протокол интернета — IP (Internet Protocol) используется маршрутизатором, чтобы определить, к какой подсети принадлежит получатель. Свой уникальный IP-адрес есть у каждого сетевого устройства, при этом в глобальной сети не может существовать два устройства с одинаковым IP. Он имеет два подвида, первым был принят IPv4 (IP version 4, версии 4) в 1983 году.
IPv4 предусматривает назначение каждому устройству 32-битного IP-адреса, что ограничивало максимально возможное число уникальных адресов 4 миллиардами (232). В более привычном для человека десятичном виде IPv4 выглядит как четыре блока (октета) чисел от 0 до 255, разделенных тремя точками. Первый октет IP-адреса означает его класс, классов всего 4: A, B, C, D.
Рассмотрим, например, IPv4 адрес класса С 223.135.100.7. Первые два октета 223.135 определяют класс, третий — .100 — это номер подсети, а последний означает номер сетевого оборудования. Например, если необходимо отправить информацию с компьютера номер 7 с IPv4 адресом 223.135.100.7 на компьютер номер 10 в той же подсети, то адрес компьютера получателя будет следующий: 223.135.100.10.
В связи с быстрым ростом сети интернет остро вставала необходимость увеличения числа возможных IP-адресов. В 1998 впервые был описан IPv6 (IP version 6, версии 6), который использует 128-битные адреса, и позволяет назначить уникальные адреса для 2128 устройств.
Такого количества IPv6 адресов будет достаточно, чтобы назначить уникальный адрес для каждого атома на планете.
IPv6 имеет вид восьми блоков по четыре шестнадцатеричных значения, а каждый блок разделяется двоеточием. IPv6 выглядит следующим образом:
2DAB:FFFF:0000:0000:01AA:00FF:DD72:2C4A.
Так как IPv6 адреса длинные, их разрешается сокращать по следующим правилам: ведущие нули допускается опускать, например в адресе выше :00FF: позволяется записывать как :FF:, группы нулей, идущие подряд тоже допустимо сокращать и заменять на двойное двоеточие, например, 2DAB:FFFF::01AA:00FF:DD72:2C4A. Допускается делать не больше одного подобного сокращения в адресе IPv6.
IP предназначен для определения адресата и доставки ему информации, он предоставляет услугу для вышестоящих уровней, но не гарантирует целостность доставляемой информации.
IP способен инкапсулировать другие протоколы, предоставлять место, куда они могут быть встроены. Как было сказано выше, IP — это 32 бита информации, первые 8 бит в заголовке IP — поля для указания номера инкапсулируемого протокола.
Для IPv4 первые 8 бит — поле «протокол», для IPv6 — поле «следующий заголовок». Например, ICMP (межсетевой протокол управляющих сообщений) будет обозначен числом 1, а IGMP (межсетевой протокол группового управления) будет обозначен числом 2.
ICMP и IGMP
ICMP используется в качестве поддержки маршрутизаторами и другими сетевыми устройствами. Внутри сети он служит для доставки сообщений об ошибках и операционной информации, сообщающей об успехе или ошибке при связи с другим IP. Например, в ситуациях, когда необходимый сервис не может быть запрошен, или когда не был получен ответ от маршрутизатора или хоста.
ICMP никогда не вызывается сетевыми приложениями пользователя, кроме случаев диагностики сети, к примеру, пинг (ping) или traceroute (tracert). ICMP не передает данные, это отличает его от транспортных TCP и UDP, расположенных на L3, которые переносят любые данные. ICMP работает только с IP четвертой версии, с IPv6 взаимодействует ICMPv6.
Сетевые устройства объединяются в группы при помощи IGMP, используемый хостами и роутерами в IPv4 сетях.
IGMP организует multicast-передачу информации, что позволяет сетям направлять информацию только хостам, запросившим ее. Это удобно для онлайн-игр или потоковой передаче мультимедиа. IGMP используется только в IPv4 сетях, в сетях IPv6 используется MLD (Multicast Listener Discovery, протокол поиска групповых слушателей), инкапсулированный в ICMPv6.
Транспортный уровень (transport layer)
Постоянные резиденты транспортного уровня — протоколы TCP и UDP, они занимаются доставкой информации.
TCP (протокол управления передачей) — надежный, он обеспечивает передачу информации, проверяя дошла ли она, насколько полным является объем полученной информации и т.д. TCP дает возможность двум хостам производить обмен пакетами через установку соединения. Он предоставляет услугу для приложений, повторно запрашивает потерянную информацию, устраняет дублирующие пакеты, регулируя загруженность сети. TCP гарантирует получение и сборку информации у адресата в правильном порядке.
UDP (протокол пользовательских датаграмм) — ненадежный, он занимается передачей автономных датаграмм. UDP не гарантирует, что всех датаграммы дойдут до получателя. Датаграммы уже содержат всю необходимую информацию, чтобы дойти до получателя, но они все равно могут быть потеряны или доставлены в порядке отличном от порядка при отправлении.
UDP обычно не используется, если требуется надежная передача информации. Использовать UDP имеет смысл там, где потеря части информации не будет критичной для приложения, например, в видеоиграх или потоковой передаче видео. UDP необходим, когда делать повторный запрос сложно или неоправданно по каким-то причинам.
Протоколы L3 не интерпретируют информацию, полученную с верхнего или нижних уровней, они служат только как канал передачи, но есть исключения. RSVP (Resource Reservation Protocol, протокол резервирования сетевых ресурсов) может использоваться, например, роутерами или сетевыми экранами в целях анализа трафика и принятия решений о его передаче или отклонении в зависимости от содержимого.
Прикладной уровень (application layer)
В модели TCP/IP отсутствуют дополнительные промежуточные уровни (представления и сеансовый) в отличие от OSI. Функции форматирования и представления данных делегированы библиотекам и программным интерфейсам приложений (API) — своего рода базам знаний. Когда службы или приложения обращаются к библиотеке или API, те в ответ предоставляют набор действий, необходимых для выполнения задачи и полную инструкцию, каким образом эти действия нужно выполнять.
Протоколы прикладного уровня действуют для большинства приложений, они предоставляют услуги пользователю или обмениваются данными с «коллегами» с нижних уровней по уже установленным соединениям. Здесь для большинства приложений созданы свои протоколы, например HTTP для передачи гипертекста по сети, SMTP для передачи почты, FTP для передачи файлов, протокол назначения IP-адресов DHCP и прочие.
Зачем нужен порт и что означает термин сокет
Приложения прикладного уровня, общаются также с предыдущим, транспортным, но они видят его протоколы как «черные ящики».
Для приема-передачи информации они могут работать с TCP или UDP, но понимают только конечный адрес в виде IP и порта, а не принцип их работы.
IP присваивается каждому компьютеру межсетевым уровнем, но обмен данными происходит не между компьютерами, а между приложениями, установленными на них. Чтобы получить доступ к тому или иному сетевому приложению недостаточно только IP, для идентификации приложений применяют порты. Комбинация IP-адреса и порта называется сокетом или гнездом (socket). Поэтому обмен информацией происходит между сокетами. Нередко слово сокет употребляют как синоним для хоста или пользователя, также сокетом называют гнездо подключения процессора.
Из привилегий у приложений на прикладном уровне можно выделить наличие собственных протоколов для обмена данными, а также фиксированный номер порта для обращения к сети. Администрация адресного пространства интернет (IANA), занимающаяся выделением диапазонов IP-адресов, отвечает еще за назначение сетевым приложениям портов.
Так почтовые приложения, которые общаются по SMTP-протоколу, прослушивают порт 25, почта через POP3 приходит на 110-й, по HTTP принимают сообщения веб-сервера — это порт 80, 21-й зарезервирован за FTP. Порт всегда записывается после IP и отделяется от него двоеточием, выглядит это, например, так: 192.168.1.1:80.
Чтобы не запоминать числовые адреса интернет-серверов была создана DNS — служба доменных имен. DNS всегда слушает на 53 порту и преобразует буквенные имена сетевых доменов в числовые IP-адреса и наоборот. Служба DNS позволяет не запоминать IP — компьютер самостоятельно посылает запрос «какой IP у selectel.ru?» на 53 порт DNS-сервера, полученного от поставщика услуг интернет.
DNS-сервер дает компьютеру ответ «IP для selectel.ru — XXX.XXX.XXX.XXX». Затем, компьютер устанавливает соединение с веб-сервером полученного IP, который слушает на порту 80 для HTTP-протокола и на порту 443 для HTTPS. В браузере порт не отображается в адресной строке, а используется по умолчанию, но, по сути, полный адрес сайта Selectel выглядит вот так: https://selectel.
ru:443.
Процесс, кодирования данных на прикладном уровне, передача их на транспортном, а затем на межсетевом и, наконец, на канальном уровне называется инкапсуляцией данных. Обратная передача битов информации по иерархии, с канального на прикладной уровни, называют декапсуляцией. Оба процесса осуществляются на компьютерах получателя и отправителя данных попеременно, это позволяет долго не удерживать одну сторону канала занятой, оставляя время на передачу информации другому компьютеру.
Стек протоколов, снова канальный уровень
О канальном уровне модели TCP/IP мы рассказали меньше всего, давайте вернемся еще раз к началу, чтобы рассмотреть инкапсуляцию протоколов и, что значит «стек».
Большинству пользователей знаком протокол Ethernet. В сети, по стандарту Ethernet, устройства отправителя и адресата имеют определенный MAC-адрес — идентификатор «железа». MAC-адрес инкапсулируется в Ethernet вместе с типом передаваемых данных и самими данными. Фрагмент данных, составленных в соответствии с Ethernet называется фреймом или кадром (frame).
MAC-адрес каждого устройства уникален и двух «железок» с одинаковым адресом не должно существовать, хотя порой такое случается, что приводит к сетевым проблемам. Таким образом, при получении сетевой адаптер занимается извлечением полученной информации из кадра и ее дальнейшей обработкой.
После ознакомления с уровневой структурой модели становится понятно, что информация не может передаваться между двумя компьютерами напрямую. Сначала кадры передаются на межсетевой уровень, где компьютеру отправителя и компьютеру получателя назначается уникальный IP. После чего, на транспортном уровне, информация передается в виде TCP-фреймов либо UDP-датаграмм.
На каждом этапе, подобно снежному кому, к уже имеющейся информации добавляется служебная информация, например, порт на прикладном уровне, необходимый для идентификации сетевого приложения. Добавление служебной информации к основной обеспечивают разные протоколы — сначала Ethernet, поверх него IP, еще выше TCP, над ним порт, означающий приложение с делегированным ему протоколом.
Такая вложенность называется стеком, названным TCP/IP по двум главным протоколам модели.
Point-to-Point протоколы
Отдельно расскажем о Point-to-Point (от точки к точке, двухточечный) протоколе также известном как PPP. PPP уникален по своим функциям, он применяется для коммуникации между двумя маршрутизаторами без участия хоста или какой-либо сетевой структуры в промежутке. При необходимости, PPP обеспечивает аутентификацию, шифрование, а также сжатие данных. Он широко используется при построении физических сетей, например, кабельных телефонных, сотовых телефонных, сетей по кабелю последовательной передачи и транк-линий (когда один маршрутизатор подключают к другому для увеличения размера сети).
У PPP есть два подвида — PPPoE (PPP по Ethernet) и PPPoA (PPP через асинхронный способ передачи данных — ATM), интернет-провайдеры часто их используют для DSL соединений.
PPP и его старший аналог SLIP (протокол последовательной межсетевой связи) формально относятся к межсетевому уровню TCP/IP, но в силу особого принципа работы, иногда выделяются в отдельную категорию.
Преимущество PPP в том, что для установки соединения не требуется сетевая инфраструктура, а необходимость маршрутизаторов отпадает. Эти факторы обуславливают специфику использования PPP протоколов.
Заключение
Стек TCP/IP регламентирует взаимодействие разных уровней. Ключевым понятием в здесь являются протоколы, формирующие стек, встраиваясь друг в друга с целью передать данные. Рассмотренная модель по сравнению с OSI имеет более простую архитектуру.
Сама модель остается неизменной, в то время как стандарты протоколов могут обновляться, что еще дальше упрощает работу с TCP/IP. Благодаря всем преимуществам стек TCP/IP получил широкое распространение и использовался сначала в качестве основы для создания глобальной сети, а после для описания работы интернета.
Основы TCP/IP для будущих дилетантов / Хабр
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии.
У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.
Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS
Понятие о стеке протоколов
И для решения этой проблемы было решено разделять информацию на порции.На получателе эти порции требуется составить в единое целое, получить ту информацию, которая вышла от отправителя. Но на получателе А теперь мы видим порции информации как от В так и от С вперемешку. Значит, к каждой порции надо вписать идентификационный номер, что бы получатель А мог отличить порции информации с В от порций информации с С и собрать эти порции в изначальное сообщение. Очевидно, получатель должен знать, куда и в каком виде отправитель приписал идентификационные данные к исходной порции информации. И для этого они должны разработать определённые правила формирования и написания идентификационной информации. Далее слово «правило» будет заменяться словом «протокол».
Для соответствия запросам современных потребителей, необходимо указывать сразу несколько видов идентификационной информации. А так же требуется защита передаваемых порций информации как от случайных помех (при передаче по линиям связи), так и от умышленных вредительств (взлома).
Для этого порция передаваемой информации дополняется значительным количеством специальной, служебной информацией.
В протоколе Ethernet находятся номер сетевого адаптера отправителя (MAC-адрес), номер сетевого адаптера получателя, тип передаваемых данных и непосредственно передаваемые данные. Порция информации, составленная в соответствии с протоколом Ethernet, называется кадром. Считается, что сетевых адаптеров с одинаковым номером не существует. Сетевое оборудование извлекает передаваемые данные из кадра (аппаратно или программно), и производит дальнейшую обработку.
Как правило, извлечённые данные в свою очередь сформированы в соответствии с протоколом IP и имеют другой вид идентификационной информации — ip адрес получателя (число размером в 4 байта), ip адрес отправителя и данные. А так же много другой необходимой служебной информации. Данные, сформированные в соответствии с IP протоколом, называются пакетами.
Далее извлекаются данные из пакета. Но и эти данные, как правило, ещё не являются изначально отправляемыми данными.
Этот кусок информации тоже составлен в соответствии определённому протоколу. Наиболее широко используется TCP протокол. В нём содержится такая идентификационная информация, как порт отправителя (число размером в два байта) и порт источника, а так же данные и служебная информация. Извлечённые данные из TCP, как правило, и есть те данные, которые программа, работающая на компьютере В, отправляла «программе-приёмнику» на компьютере A.
Вложность протоколов (в данном случае TCP поверх IP поверх Ethernet) называется стеком протоколов.
ARP: протокол определения адреса
Существуют сети классов A, B, C, D и E. Они различаются по количеству компьютеров и по количеству возможных сетей/подсетей в них. Для простоты, и как наиболее часто встречающийся случай, будем рассматривать лишь сеть класса C, ip-адрес которой начинается на 192.168. Следующее число будет номером подсети, а за ним — номер сетевого оборудования. К примеру, компьютер с ip адресом 192.
Важно понимать, что узел информационной сети — это компьютер, соединённый одним физическим каналом с коммутирующим оборудованием. Т.е. если мы отправим данные с сетевого адаптера «на волю», то у них одна дорога — они выйдут с другого конца витой пары. Мы можем послать совершенно любые данные, сформированные по любому, выдуманному нами правилу, ни указывая ни ip адреса, ни mac адреса ни других атрибутов. И, если этот другой конец присоединён к другому компьютеру, мы можем принять их там и интерпретировать как нам надо. Но если этот другой конец присоединён к коммутатору, то в таком случае пакет информации должен быть сформирован по строго определённым правилам, как бы давая коммутатору указания, что делать дальше с этим пакетом. Если пакет будет сформирован правильно, то коммутатор отправит его дальше, другому компьютеру, как было указано в пакете.
Для передачи информации другому компьютеру, в отправляемом пакете информации надо указать три идентификационных значения — mac адрес, ip адрес и порт. Условно говоря, порт — это номер, который, выдаёт операционная система каждой программе, которая хочет отослать данные в сеть. Ip адрес получателя вводит пользователь, либо программа сама получает его, в зависимости от специфики программы. Остаётся неизвестным mac адрес, т.е. номер сетевого адаптера компьютера получателя. Для получения необходимой данной, отправляется «широковещательный» запрос, составленный по так называемому «протоколу разрешения адресов ARP». Ниже приведена структура ARP пакета.
Сейчас нам не надо знать значения всех полей на приведённой картинке. Остановимся лишь на основных.
В поля записываются ip адрес источника и ip адрес назначения, а так же mac адрес источника.
Поле «адрес назначения Ethernet» заполняется единицами (ff:ff:ff:ff:ff:ff). Такой адрес называется широковещательным, и такой фрейм будер разослан всем «интерфейсам на кабеле», т.е. всем компьютерам, подключённым к коммутатору.
Коммутатор, получив такой широковещательный фрейм, отправляет его всем компьютерам сети, как бы обращаясь ко всем с вопросом: «если Вы владелец этого ip адреса (ip адреса назначения), пожалуйста сообщите мне Ваш mac адрес». Когда другой компьютер получает такой ARP запрос, он сверяет ip адрес назначения со своим собственным. И если он совпадает, то компьютер, на место единиц вставляет свой mac адрес, меняет местами ip и mac адреса источника и назначения, изменяет некоторую служебную информацию и отсылает пакет обратно коммутатору, а тот обратно — изначальному компьютеру, инициатору ARP запроса.
Таким образом ваш компьютер узнаёт mac адрес другого компьютера, которому вы хотите отправить данные.
Если в сети находится сразу несколько компьютеров, отвечающих на этот ARP запрос, то мы получаем «конфликт ip адресов». В таком случае необходимо изменить ip адрес на компьютерах, что бы в сети не было одинаковых ip адресов.
Построение сетей
Задача построения сетей
На практике, как правило, требуется построить сети, число компьютеров в которой будет не менее ста. И кроме функций файлообмена, наша сеть должна быть безопасной и простой в управлении. Таким образом, при построении сети, можно выделить три требования:
- Простота в управлении. Если бухгалтера Лиду переведут в другой кабинет, ей по-прежнему понадобится доступ к компьютерам бухгалтеров Анны и Юлии. И при неправильном построении своей информационной сети, у администратора могут возникнуть трудности в выдаче Лиде доступа к компьютерам других бухгалтеров на её новом месте.
- Обеспечение безопасности. Для обеспечения безопасности нашей сети, права доступа к информационным ресурсам должны быть разграничены.
Так же сеть должна быть защищена от угроз раскрытия, целостности и отказа в обслуживании. Подробнее читайте в книге «Атака на Internet» автора Илья Давидович Медведовский, глава «Основные понятия компьютерной безопасности». - Быстродействие сети. При построении сетей есть техническая проблема — зависимость скорости передачи от количества компьютеров в сети. Чем больше компьютеров — тем ниже скорость. При большом количестве компьютеров, быстродействие сети может стать настолько низким, что она станет неприемлемой заказчику.
Из-за чего при большом количестве компьютеров снижается скорость сети? — причина проста: из-за большого количества широковещательных сообщений (ШС). ШС — это сообщение, которое, приходя на коммутатор, отправляется всем хостам сети. Или, грубо говоря, всем компьютерам, находящимся в вашей подсети. Если компьютеров в сети 5, то каждый компьютер будет принимать по 4 ШС. Если их будет 200, то каждый компьютер в такой большой сети будет принимать по 199 ШС.
Существует большое множество приложений, программных модулей и сервисов, которые, для своей работы отправляют в сеть широковещательные сообщения. Описанный в пункте ARP: протокол определения адреса лишь один из множества ШС, отправляемый вашим компьютером в сеть. Например, когда вы заходите в «Сетевое окружение» (ОС Windows), ваш компьютер посылает ещё несколько ШС со специальной информацией, сформированной по протоколу NetBios, что бы просканировать сеть на наличие компьютеров, находящихся в той же рабочей группе. После чего ОС рисует найденные компьютеры в окне «Сетевое окружение» и вы их видите.
Так же стоит заметить, что во время процесса сканирования той или иной программой, ваш компьютер отсылает ни одно широковещательное сообщение, а несколько, к примеру для того, что бы установить с удалёнными компьютерами виртуальные сессии или ещё для каких либо системных нужд, вызванных проблемами программной реализации этого приложения. Таким образом, каждый компьютер в сети для взаимодействия с другими компьютерами вынужден посылать множество различных ШС, тем самым загружая канал связи не нужной конечному пользователю информацией.
Как показывает практика, в больших сетях широковещательные сообщения могут составить значительную часть трафика, тем самым замедляя видимую для пользователя работу сети.
Виртуальные локальные сети
Для решения первой и третьей проблем, а так же в помощь решения второй проблемы, повсеместно используют механизм разбиения локальной сети на более маленькие сети, как бы отдельные локальные сети (Virtual Local Area Network). Грубо говоря, VLAN — это список портов на коммутаторе, принадлежащих одной сети. «Одной» в том смысле, что другой VLAN будет содержать список портов, принадлежащих другой сети.
Фактически, создание двух VLAN-ов на одном коммутаторе эквивалентно покупке двух коммутаторов, т.е. создание двух VLAN-ов — это всё равно, что один коммутатор разделить на два. Таким образом происходит разбиение сети из ста компьютеров на более маленькие сети, из 5-20 компьютеров — как правило именно такое количество соответствует физическому местонахождению компьютеров по надобности файлообмена.
- При разбиении сети на VLAN-ы достигается простота управления. Так, при переходе бухгалтера Лиды в другой кабинет, администратору достаточно удалить порт из одного VLAN-а и добавить в другой. Подробнее это рассмотрено в пункте VLAN-ы, теория.
- VLAN-ы помогают решить одно из требований к безопасности сети, а именно разграничение сетевых ресурсов. Так, студен из одной аудитории не сможет проникнуть на компьютеры другой аудитории или компьютер ректора, т.к. они находятся в фактически разных сетях.
- Т.к. наша сеть разбита на VLAN-ы, т.е. на маленькие «как бы сети», пропадает проблема с широковещательными сообщениями.
VLAN-ы, теория
Возможно, фраза «администратору достаточно удалить порт из одного VLAN-а и добавить в другой» могла оказаться непонятной, поэтому поясню её подробнее. Порт в данном случае — это не номер, выдаваемый ОС приложению, как было рассказано в пункте Стек протоколов, а гнездо (место) куда можно присоединить (вставить) коннектор формата RJ-45.
Такой коннектор (т.е. наконечник к проводу) прикрепляется к обоим концам 8-ми жильного провода, называемого «витая пара». На рисунке изображён коммутатор Cisco Catalyst 2950C-24 на 24 порта:
Как было сказано в пункте ARP: протокол определения адреса каждый компьютер соединён с сетью одним физическим каналом. Т.е. к коммутатору на 24 порта можно присоединить 24 компьютера. Витая пара физически пронизывает все помещения предприятия — все 24 провода от этого коммутатора тянутся в разные кабинеты. Пусть, к примеру, 17 проводов идут и подсоединяются к 17-ти компьютерам в аудитории, 4 провода идут в кабинет спецотдела и оставшиеся 3 провода идут в только что отремонтированный, новый кабинет бухгалтерии. И бухгалтера Лиду, за особые заслуги, перевели в этот самый кабинет.
Как сказано выше, VLAN можно представлять в виде списка принадлежащих сети портов. К примеру, на нашем коммутаторе было три VLAN-а, т.е. три списка, хранящиеся во flash-памяти коммутатора.
В одном списке были записаны цифры 1, 2, 3… 17, в другом 18, 19, 20, 21 и в третьем 22, 23 и 24. Лидин компьютер раньше был присоединён к 20-ому порту. И вот она перешла в другой кабинет. Перетащили её старый компьютер в новый кабинет, или она села за новый компьютер — без разницы. Главное, что её компьютер присоединили витой парой, другой конец которой вставлен в порт 23 нашего коммутатора. И для того, что бы она со своего нового места могла по прежнему пересылать файлы своим коллегам, администратор должен удалить из второго списка число 20 и добавить число 23. Замечу, что один порт может принадлежать только одному VLAN-у, но мы нарушим это правило в конце этого пункта.
Замечу так же, что при смене членства порта в VLAN, администратору нет никакой нужды «перетыкать» провода в коммутаторе. Более того, ему даже не надо вставать с места. Потому что компьютер администратора присоединён к 22-ому порту, с помощью чего он может управлять коммутатором удалённо. Конечно, благодаря специальным настройкам, о которых будет рассказано позже, лишь администратор может управлять коммутатором.
О том, как настраивать VLAN-ы, читайте в пункте VLAN-ы, практика [в следующей статье].
Как вы, наверное, заметили, изначально (в пункте Построение сетей) я говорил, что компьютеров в нашей сети будет не менее 100. Но к коммутатору можно присоединить лишь 24 компьютера. Конечно, есть коммутаторы с большим количеством портов. Но компьютеров в корпоративной сети/сети предприятия всё равно больше. И для соединения бесконечно большого числа компьютеров в сеть, соединяют между собой коммутаторы по так называемому транк-порту (trunk). При настройки коммутатора, любой из 24-портов можно определить как транк-порт. И транк-портов на коммутаторе может быть любое количество (но разумно делать не более двух). Если один из портов определён как trunk, то коммутатор формирует всю пришедшую на него информацию в особые пакеты, по протоколу ISL или 802.1Q, и отправляет эти пакеты на транк-порт.
Всю пришедшую информацию — имеется в виду, всю информацию, что пришла на него с остальных портов. А протокол 802.
1Q вставляется в стек протоколов между Ethernet и тем протоколом, по которому были сформированные данные, что несёт этот кадр.
В данном примере, как вы, наверное, заметили, администратор сидит в одном кабинете вместе с Лидой, т.к. витая пора от портов 22, 23 и 24 ведёт в один и тот же кабинет. 24-ый порт настроен как транк-порт. А сам коммутатор стоит в подсобном помещении, рядом со старым кабинетом бухгалтеров и с аудиторией, в которой 17 компьютеров.
Витая пара, которая идёт от 24-ого порта в кабинет к администратору, подключается к ещё одному коммутатору, который в свою очередь, подключён к роутеру, о котором будет рассказано в следующих главах. Другие коммутаторы, которые соединяют другие 75 компьютеров и стоят в других подсобных помещениях предприятия — все они имеют, как правило, один транк-порт, соединённый витой парой или по оптоволокну с главным коммутатором, что стоит в кабинете с администратором.
Выше было сказано, что иногда разумно делать два транк-порта. Второй транк-порт в таком случае используется для анализа сетевого трафика.
Примерно так выглядело построение сетей больших предприятий во времена коммутатора Cisco Catalyst 1900. Вы, наверное, заметили два больших неудобства таких сетей. Во первых, использование транк-порта вызывает некоторые сложности и создаёт лишнюю работу при конфигурировании оборудования. А во вторых, и в самых главных — предположим, что наши «как бы сети» бухгалтеров, экономистов и диспетчеров хотят иметь одну на троих базу данных. Они хотят, что бы та же бухгалтерша смогла увидеть изменения в базе, которые сделала экономистка или диспетчер пару минут назад. Для этого нам надо сделать сервер, который будет доступен всем трём сетям.
Как говорилось в середине этого пункта, порт может находиться лишь в одном VLAN-е. И это действительно так, однако, лишь для коммутаторов серии Cisco Catalyst 1900 и старше и у некоторых младших моделей, таких как Cisco Catalyst 2950. У остальных коммутаторов, в частности Cisco Catalyst 2900XL это правило можно нарушить. При настройке портов в таких коммутаторах, каждый пор может иметь пять режимов работы: Static Access, Multi-VLAN, Dynamic Access, ISL Trunk и 802.
1Q Trunk. Второй режим работы именно то, что нам нужно для выше поставленной задачи — дать доступ к серверу сразу с трёх сетей, т.е. сделать сервер принадлежащим к трём сетям одновременно. Так же это называется пересечением или таггированием VLAN-ов. В таком случае схема подключения может быть такой:
Продолжение следует
Вторая часть этой статьи, где рассматривается практическое применение изложенных здесь основ: Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS
Об этой статье
Статья опробована на реальных студентах. Я давал им прочитать часть статьи и оценить на понятность. Затем редактировал и упрощал материал до тех пор, пока он ни стал понятен даже самым отпетым двоечникам.
Протокол TCP/IP или как работает Интернет (для чайников)
Автор: Дубровин Борис, 13 сентября 2007 г. 18:32
В основе работы глобальной сети Интернет лежит набор (стек) протоколов TCP/IP.
Но эти термины лишь на первый взгляд кажутся сложными. На самом деле стек протоколов TCP/IP — это простой набор правил обмена информацией, и правила эти на самом деле вам хорошо известны, хоть вы, вероятно, об этом и не догадываетесь. Да, все именно так, по существу в принципах, лежащих в основе протоколов TCP/IP, нет ничего нового: все новое — это хорошо забытое старое.
Человек может учиться двумя путями:
- Через тупое формальное зазубривание шаблонных способов решения типовых задач (чему сейчас в основном и учат в школе). Такое обучение малоэффективно. Наверняка вам приходилось наблюдать панику и полную беспомощность бухгалтера при смене версии офисного софта — при малейшем изменении последовательности кликов мышки, требуемых для выполнения привычных действий. Или приходилось видеть человека, впадающего в ступор при изменении интерфейса рабочего стола?
- Через понимание сути проблем, явлений, закономерностей. Через понимание принципов построения той или иной системы.
В этом случае обладание энциклопедическими знаниями не играет большой роли — недостающую информацию легко найти. Главное — знать, что искать. А для этого необходимо не формальное знание предмета, а понимание сути.
В этой статье я предлагаю пойти вторым путем, так как понимание принципов, лежащих в основе работы Интернета, даст вам возможность чувствовать себя в Интернете уверенно и свободно — быстро решать возникающие проблемы, грамотно формулировать проблемы и уверенно общаться с техподдержкой.
Итак, начнем.
Принципы работы интернет-протоколов TCP/IP по своей сути очень просты и сильно напоминают работу нашей советской почты.
Вспомните, как работает наша обычная почта. Сначала вы на листке пишете письмо, затем кладете его в конверт, заклеиваете, на обратной стороне конверта пишете адреса отправителя и получателя, а потом относите в ближайшее почтовое отделение. Далее письмо проходит через цепочку почтовых отделений до ближайшего почтового отделения получателя, откуда оно тетей-почтальоном доставляется до по указанному адресу получателя и опускается в его почтовый ящик (с номером его квартиры) или вручается лично.
Все, письмо дошло до получателя. Когда получатель письма захочет вам ответить, то он в своем ответном письме поменяет местами адреса получателя и отправителя, и письмо отправиться к вам по той же цепочке, но в обратном направлении.
На конверте письма будет написано примерно следующее:
Адрес отправителя: От кого: Иванов Иван Иванович Откуда: Ивантеевка, ул. Большая , д. 8, кв. 25 Адрес получателя: Кому: Петров Петр Петрович Куда: Москва, Усачевский переулок, д. 105, кв. 110
Теперь мы готовы рассмотреть взаимодействие компьютеров и приложений в сети Интернет (да и в локальной сети тоже). Обратите внимание, что аналогия с обычной почтой будет почти полной.
Каждый компьютер (он же: узел, хост) в рамках сети Интернет тоже имеет уникальный адрес, который называется IP-адрес (Internet Protocol Address), например: 195.34.32.116. IP адрес состоит из четырех десятичных чисел (от 0 до 255), разделенных точкой.
Но знать только IP адрес компьютера еще недостаточно, т.к. в конечном счете обмениваются информацией не компьютеры сами по себе, а приложения, работающие на них. А на компьютере может одновременно работать сразу несколько приложений (например почтовый сервер, веб-сервер и пр.). Для доставки обычного бумажного письма недостаточно знать только адрес дома — необходимо еще знать номер квартиры. Также и каждое программное приложение имеет подобный номер, именуемый номером порта. Большинство серверных приложений имеют стандартные номера, например: почтовый сервис привязан к порту с номером 25 (еще говорят: «слушает» порт, принимает на него сообщения), веб-сервис привязан к порту 80, FTP — к порту 21 и так далее.
Таким образом имеем следующую практически полную аналогию с нашим обычным почтовым адресом:
"адрес дома" = "IP компьютера" "номер квартиры" = "номер порта"
В компьютерных сетях, работающих по протоколам TCP/IP, аналогом бумажного письма в конверте является пакет, который содержит собственно передаваемые данные и адресную информацию — адрес отправителя и адрес получателя, например:
Адрес отправителя (Source address): IP: 82.146.49.55 Port: 2049 Адрес получателя (Destination address): IP: 195.34.32.116 Port: 53 Данные пакета: ...
Конечно же в пакетах также присутствует служебная информация, но для понимания сути это не важно.
Обратите внимание, комбинация: «IP адрес и номер порта» — называется «сокет».
В нашем примере мы с сокета 82.146.49.55:2049 посылаем пакет на сокет 195.34.32.116:53, т.е. пакет пойдет на компьютер, имеющий IP адрес 195.34.32.116, на порт 53. А порту 53 соответствует сервер распознавания имен (DNS-сервер), который примет этот пакет. Зная адрес отправителя, этот сервер сможет после обработки нашего запроса сформировать ответный пакет, который пойдет в обратном направлении на сокет отправителя 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.ru. А преобразованием доменного имени в цифровой IP адрес занимается сервис доменных имен — DNS (Domain Name System).
Рассмотрим подробнее, как это работает. Ваш провайдер явно (на бумажке, для ручной настройки соединения) или неявно (через автоматическую настройку соединения) предоставляет вам IP адрес сервера имен (DNS). На компьютере с этим IP адресом работает приложение (сервер имен), которое знает все доменные имена в Интернете и соответствующие им цифровые IP адреса. DNS-сервер «слушает» 53-й порт, принимает на него запросы и выдает ответы, например:
Запрос от нашего компьютера: "Какой IP адрес соответствует имени www.ofnet.ru?" Ответ сервера: "82.146.49.55."
Теперь рассмотрим, что происходит, когда в своем браузере вы набираете доменное имя (URL) этого сайта (www.ofnet.ru) и, нажав <enter>, в ответ от веб-сервера получаете страницу этого сайта.
Например:
IP адрес нашего компьютера: 91.76.65.216 Браузер: Internet Explorer (IE), DNS сервер (стрима): 195.34.32.116 (у вас может быть другой), Страница, которую мы хотим открыть: www.ofnet.ru.
Набираем в адресной строке браузера доменное имя www.ofnet.ru и жмем <enter>. Далее операционная система производит примерно следующие действия:
Отправляется запрос (точнее пакет с запросом) DNS серверу на сокет 195.34.32.116:53. Как было рассмотренно выше, порт 53 соответствует DNS-серверу — приложению, занимающемуся распознаванием имен. А DNS-сервер, обработав наш запрос, возвращает IP-адрес, который соответствует введенному имени.
Диалог примерно следующий:
- Какой IP адрес соответствует имени www.ofnet.ru? - 82.146.49.55.
Далее наш компьютер устанавливает соединение с портом 80 компьютера 82.146.49.55 и посылает запрос (пакет с запросом) на получение страницы www.ofnet.ru. 80-й порт соответствует веб-серверу. В адресной строке браузера 80-й порт как правило не пишется, т.
к. используется по умолчанию, но его можно и явно указать после двоеточия — http://www.ofnet.ru:80.
Приняв от нас запрос, веб-сервер обрабатывает его и в нескольких пакетах посылает нам страницу в на языке HTML — языке разметки текста, который понимает браузер.
Наш браузер, получив страницу, отображает ее. В результате мы видим на экране главную страницу этого сайта.
Зачем эти принципы надо понимать?
Например, вы заметили странное поведение своего компьютера — непонятная сетевая активность, тормоза и пр. Что делать? Открываем консоль (нажимаем кнопку «Пуск» — «Выполнить» — набираем cmd — «Ок»). В консоли набираем команду netstat -anи жмем <Enter>. Эта утилита отобразит список установленных соединений между сокетами нашего компьютера и сокетами удаленных узлов. Если мы видим в колонке «Внешний адрес» какие-то чужие IP адреса, а через двоеточие 25-й порт, что это может означать? (Помните, что 25-й порт соответствует почтовому серверу?) Это означает то, что ваш компьютер установил соединение с каким-то почтовым сервером (серверами) и шлет через него какие-то письма.
И если ваш почтовый клиент (Outlook например) в это время не запущен, да если еще таких соединений на 25-й порт много, то, вероятно, в вашем компьютере завелся вирус, который рассылает от вашего имени спам или пересылает номера ваших кредитных карточек вкупе с паролями злоумышленникам.
Также понимание принципов работы Интернета необходимо для правильной настройки файерволла (проще говоря брандмауэра :)). Эта программа (которая часто поставляется вместе с антивирусом), предназначенна для фильтрации пакетов — «своих» и «вражеских». Своих пропускать, чужих не пущать. Например, если ваш фаерволл сообщает вам, что некто хочет установить соединение с каким-либо портом вашего компьютера. Разрешить или запретить?
Ну и самое главное — эти знания крайне полезны при общении с техподдержкой.
Напоследок приведу список портов, с которыми вам, вероятно, придется столкнуться:
135-139 — эти порты используются Windows для доступа к общим ресурсам компьютера — папкам, принтерам.Не открывайте эти порты наружу, т.е. в районную локальную сеть и Интернет. Их следует закрыть фаерволлом. Также если в локальной сети вы не видите ничего в сетевом окружении или вас не видят, то вероятно это связано с тем, что фаерволл заблокировал эти порты. Таким образом для локальной сети эти порты должны быть открыты, а для Интернета закрыты. 21 — порт FTP сервера. 25 — порт почтового SMTP сервера. Через него ваш почтовый клиент отправляет письма. IP адрес SMTP сервера и его порт (25-й) следует указать в настройках вашего почтового клиента. 110 — порт POP3 сервера. Через него ваш почтовый клиент забирает письма из вашего почтового ящика. IP адрес POP3 сервера и его порт (110-й) также следует указать в настройках вашего почтового клиента. 80 — порт WEB-сервера. 3128, 8080 — прокси-серверы (настраиваются в параметрах браузера).
Несколько специальных IP адресов:
127.0.0.1 — это localhost, адрес локальной системы, т.е. локальный адрес вашего компьютера. 0.0.0.0 - так обозначаются все IP-адреса. 192.168.xxx.xxx — адреса, которые можно произвольно использовать в локальных сетях, в глобальной сети Интернет они не используются. Они уникальны только в рамках локальной сети. Адреса из этого диапазона вы можете использовать по своему усмотрению, например, для построения домашней или офисной сети.
Что такое маска подсети и шлюз по умолчанию (роутер, маршрутизатор)?
(Эти параметры задаются в настройках сетевых подключений).
Все просто. Компьютеры объединяются в локальные сети. В локальной сети компьютеры напрямую «видят» только друг друга. Локальные сети соединяются друг с другом через шлюзы (роутеры, маршрутизаторы). Маска подсети предназначена для определения — принадлежит ли компьютер-получатель к этой же локальной сети или нет. Если компьютер-получатель принадлежит этой же сети, что и компьютер-отправитель, то пакет передается ему напрямую, в противном случае пакет отправляется на шлюз по умолчанию, который далее, по известным ему маршрутам, передает пакет в другую сеть, т.
е. в другое почтовое отделение (по аналогии с советской почтой).
Напоследок рассмотрим что же означают непонятные термины:
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>. Результатом будет список установленных соединений между сокетами нашего компьютера и удаленных узлов.
Например получаем:
Активные подключения
| Имя | Локальный адрес | Внешний адрес | Состояние |
| TCP | 0.0.0.0:135 | 0.0.0.0:0 | LISTENING |
| TCP | 91.76.65.216:139 | 0.0.0.0:0 | LISTENING |
| TCP | 91.76.65.216:1719 | 212.58.226.20:80 | ESTABLISHED |
| TCP | 91.76.65.216:1720 | 212.58.226.20:80 | ESTABLISHED |
| TCP | 91.76.65.216:1723 | 212.58.227.138:80 | CLOSE_WAIT |
| TCP | 91.76.65.216:1724 | 212.58.226.8:80 | ESTABLISHED |
...
В этом примере 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 означает, что наша машина обратилась с запросом к веб-серверу (у меня, действительно, открыты страницы в браузере).
В следующих статьях мы рассмотрим, как применять эти знания, например общаясь с техподдержкой.
Базовое справочное руководство по сети TCP/IP
Введение
В этом справочном руководстве рассматриваются основы работы в сети TCP/IP. Хотя это руководство предназначено для пользователей и администраторов Linux, его содержимое в равной степени применимо и к другим операционным системам или сетевым устройствам.
В будущем учебнике будут представлены конкретные команды и файлы, обеспечивающие настройку в системах Linux.
Несмотря на то, что существуют и другие типы сетей, в этом руководстве рассматриваются только сети TCP/IP. Благодаря успеху Интернета сегодня этот протокол используется почти исключительно.
Это в первую очередь нацелено на текущую версию IP 4, хотя включено введение в версию IP 6. Нехватка оставшихся адресов IPV4 способствует более агрессивному продвижению IPV6 в течение следующих нескольких лет.
Сеть TCP/IP
TCP/IP — это аббревиатура от Transmission Control Protocol / Internet Protocol. Это набор протоколов, которые определяют, как два или более компьютеров могут взаимодействовать друг с другом. Протокол фактически представляет собой набор правил, описывающих, как данные передаются между компьютерами. Это открытый стандарт, поэтому его можно реализовать на любом компьютере с соответствующими физическими характеристиками. В сетевом протоколе TCP/IP существует гораздо больше протоколов.
Они обеспечивают различные функции, важные для обмена данными по сетям. Они могут быть неотъемлемой частью работы сети, такой как система доменных имен, или могут быть приложением, использующим сеть, таким как электронная почта (оба они обсуждаются более подробно позже).
Другим родственным протоколом является UDP (протокол пользовательских дейтаграмм), который также работает поверх IP (интернет-протокола). Разница между TCP и UDP заключается в том, что TCP является протоколом, основанным на соединении, тогда как UDP не требует установления соединения. Другими словами, когда используется TCP, между хостами устанавливается сеанс, и передача гарантируется. Для UDP каждый пакет данных отправляется, но нет проверки того, что он был получен, или, в любом случае, повторной отправки внутри сетевых уровней. Приложение может работать поверх UDP и реализовывать собственную проверку получения каждого пакета, но это не то же самое, что оставить его для реализации сетевому стеку.
Обычный способ их сравнения состоит в том, чтобы сравнить TCP с телефонной системой и UDP с почтовой службой.
С помощью телефона, когда вы устанавливаете соединение с другим человеком, вы точно знаете, что пользователь получает сообщение. Если бы вы были отключены во время телефонного разговора, вы бы знали об этом и могли бы снова позвонить другому человеку. С почтовой системой после того, как вы отправите письмо, вы не знаете наверняка, будет ли получено письмо. После того, как вы отправили письмо, оно может быть потеряно или уничтожено по пути к месту назначения. Или, если человек переехал, он может никогда не получить письмо.
Сначала может показаться, что в конце концов нет причин выбирать UDP вместо TCP, если у вас есть дополнительная уверенность, то зачем вам UDP? Причина этого в том, что в TCP задействовано много накладных расходов. Для каждого отправляемого пакета данных должно быть сгенерировано подтверждение, и даже если данные не отправляются, часто будет какой-то сигнал подтверждения активности. В то время как для некоторых менее важных данных вы можете просто захотеть отправить и забыть о них в надежде, что они достигнут другого конца.
Также возможно, что сеанс будет обрабатываться выше по сетевому стеку (но здесь я забегаю вперед).
Модель OSI
Сетевые протоколы часто описываются в связи с моделью OSI. Это модель для описания различных сетевых функций, разработанная Институтом открытых стандартов. Модель OSI разделяет различные функции сети на разные уровни. Описывая сетевые протоколы на уровнях, это позволяет изменять уровень, не затрагивая другие уровни. Например, при использовании другого физического соединения (например, оптоволоконного, а не медного) по кабелю необходимо отправлять разные сигналы, но пока он одинаково взаимодействует с вышележащими уровнями, он все еще может функционировать.
Сетевые модели особенно полезны, поскольку позволяют реализовать протокол в любой системе. Разрешение компьютерам UNIX взаимодействовать как одноранговые с компьютерами Windows или мейнфреймами.
OSI 7-слойная модель
| 7 | Применение |
| 6 | 5 | 40030 5 | 4 | 034 |
| 2 | Канал передачи данных |
| 1 | Физический |
Рис.
Начиная снизу, функции уровней следующие:
Физический уровень — описывает среду, по которой перемещаются данные. Например, это описывает напряжение сигнала 1 или 0 на медном проводе.
Канальный уровень — описывает средства, с помощью которых биты передаются через физический уровень. Например, это может описывать, как указываются начало и конец потока данных.
Сетевой уровень — этот уровень отвечает за маршрутизацию данных по сети. В качестве примера здесь описывается, как маршрутизация может происходить на основе адресов компьютеров.
Транспортный уровень и сеансовый уровень — транспортный и сеансовый уровни обеспечивают сквозную целостность сеанса. Это включает в себя поддержку активности, чтобы гарантировать, что соединение поддерживается.
Уровень представления и уровень приложения — обеспечивают интерфейс для приложения. Например, это может включать использование команды nslookup для преобразования имени хоста в IP-адрес.
Хотя протокол TCP/IP не совсем соответствует 7-уровневой модели OSI, его можно приблизительно сопоставить с ней. На следующей диаграмме показан стек TCP/IP в сравнении с 7-уровневой моделью OSI.
| OSI model | TCP/IP stack | |
|---|---|---|
| 7 | Application | Application |
| 6 | Presentation | |
| 5 | Session | TCP or UDP |
| 4 | Transport | |
| 3 | Network | IP |
| 2 | Data link | Network interface |
| 1 | Physical | Physical |
Figure 2: Стек TCP/IP наряду с 7-уровневой моделью OSI
Эта модель показывает, как протоколы TCP/IP отображаются в 7-уровневой модели. Обратите внимание, что уровни приложения и представления были объединены, а сеансовый и транспортный уровни были объединены.
Различие между этими уровнями не требуется в модели TCP/IP. В приложении NFS есть исключение, поскольку оно находится поверх протокола SUN RPC, который функционирует как уровень представления, однако в большинстве случаев они рассматриваются как один уровень. Кроме того, границы между уровнями в TCP/IP не определены так жестко, как в модели OSI, и функции не обязательно являются прямым соответствием между моделями OSI.
Однако знание уровней сетевой модели может быть полезно при попытке локализовать определенную проблему. Если вы можете определить, что подключение работает на определенном уровне стека, вы можете ограничить будущие исследования оставшимися областями.
Подробнее о TCP/IP
Первоначально протокол TCP/IP был разработан для университетов и военных для обмена идеями и файлами. Разработку TCP/IP инициирует Совет по архитектуре Интернета (IAB), а разработкой стандартов занимается Инженерная рабочая группа Интернета (IETF). Документы, созданные IAB, называются Request For Comment (RFC) и описывают протоколы и соответствующую информацию, полезную для реализации.
Любой может отправить документ в виде RFC, который проверяется перед публикацией в качестве официального RFC. После того, как RFC опубликован и ему присвоен номер RFC, он никогда не пересматривается под тем же номером. Вместо этого необходимо создать новый RFC, который заменяет предыдущую версию.
Схема IP-адресации
Важной частью всех сетевых протоколов является схема адресации. Без возможности найти отдельные машины (или хосты, как их называют) было бы невозможно какое-либо взаимодействие между хостами. Будет использоваться несколько схем адресации, но наиболее важной из них является Интернет-протокол (называемый IP), это важно, поскольку обеспечивает адресацию для каждого конца соединения. Другие схемы адресации эффективно скрыты от пользователя на уровне два или ниже и автоматически обрабатываются сетевым оборудованием. Текущая версия IP называется IP версии 4, но в будущем она будет заменена на IPV6. Когда я говорю об IP, это относится к версии 4, если не указано иное.
Адреса, используемые в Интернет-протоколе, состоят из четырех октетов и имеют длину 32 бита. Адрес хранится в формате, известном как десятичный с точками.
ie.xxx.xxx.xxx.xxx
, где xxx — число от 0 до 255.
Таким образом, пример IP-адреса может быть: 192.168.3.27
Однако большинству пользователей фактически не нужно использовать IP-адрес . Вместо этого они будут обращаться к компьютеру, используя его имя хоста. IP-адрес получается из имени хоста с использованием «системы доменных имен» (DNS). Между именем хоста и IP-адресом нет фактической связи, вместо этого используется таблица поиска. Служба доменных имен будет обсуждаться позже.
Схема IP-адресации предоставляет 232 возможных адреса, которые потенциально могут иметь более 4,2 миллиарда отдельных адресов. Однако проблема заключается в том, что попытка найти каждый из этих адресов через Интернет будет огромной задачей. Поэтому вместо этого адрес делится на сетевую и хостовую части. Идея состоит в том, что разным организациям может быть назначена сеть, которая может иметь от 256 до 16,7 миллионов адресов, доступных для хостов.
Диапазон адресов теперь позволяет использовать до 3,7 миллиарда хостов в 2,1 миллиона сетей.
Для организации разных размеров, которым требуется разное количество адресов узлов, адреса разделены на разные сетевые классы. Существует 5 различных классов, однако обычно используются только 3.
Класс A — для крупных организаций. Сетевая часть имеет длину 8 бит и начинается с двоичного 0. Существует 126 возможных сетей, в каждой из которых может быть до 16,7 миллионов хостов.
Класс B — для организаций среднего размера. Сетевая часть имеет длину 16 бит и начинается с двоичного числа 10. Имеется 16 тысяч сетей, в каждой из которых может быть до 65 тысяч хостов. В действительности определение организации среднего размера было бы очень крупной компанией 9.0005
Класс C — для небольших организаций. Сетевая часть имеет длину 24 бита и начинается с двоичного числа 110. Существует 200 тысяч возможных сетей, в каждой из которых может быть до 254 хостов.
На самом деле даже они довольно велики, поэтому часто разбиваются на части (см. далее).
Класс D — предназначены для многоадресной рассылки, хотя используются редко. Адреса начинаются с двоичного кода 1110.
Класс E — экспериментальные. Адреса начинаются с двоичного кода 1111.
IP -адреса класса. до
представляют хост-часть адреса.
Наблюдательные, математически мыслящие люди заметили, что некоторые из чисел, упомянутых ранее, кажутся неверными. Некоторые из них округляются в меньшую сторону, но другие связаны с тем, что определенные адреса зарезервированы для других целей.
Зарезервированные адреса
| 127.0.0.1 | Относится к Localhost |
| All Host BITS BINGS 0S | . См. Сетеви |
| All HOSE BITS 1S | 3SCASTES31313131313013 гг.
Диапазоны частных адресов (определены в RFC 1918)
| Класс A | 10.0.0.0 | — | 10.255.255.25 9 Класс B | 172.16.0.0 | до | 172.31.255.255 |
| Класс C | 192.168.0.0 | до | 192.168.255555559 |

За исключением диапазонов частных адресов, все другие IP-адреса должны быть зарегистрированы в InterNIC, прежде чем их можно будет использовать.
Маски подсети
Самая большая проблема со схемой IP-адресации заключается в том, что в ней быстро заканчиваются свободные адреса. Долгосрочное решение состоит в том, чтобы перейти с версии IP 4 на версию IP 6, которая предоставит 340 282 366 920 938 463 463 374 607 431 768 211 456 отдельных адресов. Это должно обеспечить все, что когда-либо понадобится Интернету, даже если каждому электронному устройству будет присвоен собственный IP-адрес. Тем временем требовался метод для более эффективного использования адресов, доступных в схеме IP версии 4.
Одна из проблем с текущей адресацией заключается в том, что адреса выдаются большими порциями. Подсети позволяют разделить эти большие блоки адресов на дополнительные сетевые и хост-компоненты. Этот новый сетевой компонент называется подсетью.
Ниже показано, как сетевой адрес класса B можно эффективно разделить на 254 отдельные виртуальные сети класса C:
nnn.
nnn.sss.hhh
nnn = сетевая часть адреса
sss = часть адреса подсети
hhh = хостовая часть адреса
Сетевая часть была исправлена, поэтому все еще остается в виде первых двух октетов. Следующий октет, который обычно является частью адреса хоста, затем используется для обозначения подсети и фактически становится частью сетевого адреса. Последний октет остается в качестве хостовой части адреса.
Если мы изменим, какая часть адреса представляет сеть и хост, нам нужно сообщить об этом компьютеру и любым устройствам маршрутизации. Используемый метод известен как создание маски подсети.
Маска подсети для приведенного выше примера будет 255.255.255.0, поскольку мы видим, что она имеет формат, аналогичный IP-адресу. Чтобы объяснить, как это получается, требуется немного двоичной арифметики. Я попытаюсь кратко объяснить, как это работает, однако не могу посвятить этому большой раздел. Если вам нужны дополнительные пояснения, то существует ряд различных книг, посвященных исключительно TCP/IP, в большинстве из которых значительное внимание уделяется объяснению концепции подсетей.
Хотя IP-адрес обычно представляется в виде десятичных чисел, чтобы его было легче понять людям, компьютер работает с двоичными числами, которые могут представлять только единицу или ноль. Например, следующий адрес показан как десятичный и двоичный с точками.
| 172 | . | 16 | . | 3 | . | 4 |
| 10101100 | 00010000 | 00000011 | 00000100 |
Как видите, каждый раз писать это в двоичном виде было бы очень утомительно и подвержено ошибкам.
Чтобы создать маску подсети, нам нужно использовать двоичную единицу для каждого бита адреса, представляющего сетевую часть, и двоичный ноль для любого бита адреса, представляющего часть хоста.
Это дает нам:
11111111 11111111 11111111 00000000
Мы преобразуем это в десятичное число, чтобы его было легче читать, и это дает нам маску подсети
255 .255 . 255 . 0
Используя простую двоичную арифметику, компьютер может использовать маску подсети для преобразования IP-адреса в его сетевую и хостовую часть. Он будет использовать двоичное И для получения сетевой части. Чтобы получить часть хоста, маска подсети инвертируется (функция НЕ), а затем объединяется по И с IP-адресом.
Чтобы еще больше запутать ситуацию, некоторое оборудование (например, маршрутизаторы Cisco) использует другое обозначение для представления маски подсети. Будет подсчитано количество битов «1» и указано как номер маски подсети. Таким образом, в этом примере маска подсети будет представлена как /24. Это называется нотацией CIDR.
В приведенном выше примере маска подсети показана на границе октета, однако чаще маска подсети находится внутри октета. Например, маска подсети 255.255.255.248 может использоваться для разделения сетевого адреса класса C на 30 частей, каждая из которых содержит 6 хостов.
Расширенная маска будет выглядеть так:
11111111 11111111 11111111 11111000
Принимая только последние восемь битов, часть хоста равна
11111 Это потенциально дает 30 зарезервированных подконцов, исключая единицы и адреса.
Сетевая часть
000 Потенциально может иметь 8 хостов, исключая зарезервированные адреса (все единицы и все нули), дает 6 действительных адресов.
Субтендам присваивается номер, когда вся основная часть равна нулю. Все остальные адреса действительны до той части, где все биты узла равны единицам, что является широковещательным адресом для этой подсети.
Рассматривая только последний октет, в следующей таблице показано, как будут составляться некоторые адреса.
| Subnet Number | First Address | 2nd address | … | Last address | Broadcast |
|---|---|---|---|---|---|
| 8 | 9 | 10 | … | 14 | 15 |
| 16 | 17 | 18 | … | 22 | 23 |
| 24 | 25 | 26 | … | 30 | 31 |
Чтобы попытаться понять это, лучше преобразовать значения в двоичный код, а затем определить хостовую и сетевую части адреса.
Хотя я исключил адрес 0, иногда его можно использовать. Для этого вам может потребоваться убедиться, что ваши маршрутизаторы поддерживают это и что эта функция включена. Однако это не рекомендуется.
Альтернативной маской подсети может быть 255.255.255.224, что даст 6 действительных подсетей, каждая из которых имеет максимум 30 хостов (это может быть полезно для разделения небольшой компании, которая может иметь 6 разных сегментов локальной сети с 30 машинами в каждом) . Возможно, вам будет полезно попытаться вычислить эти значения самостоятельно.
Противоположность подсети называется суперсетью. вместо разделения сетевых диапазонов на подсети несколько подсетей объединяются в суперсеть. Сетевые диапазоны классов A и B почти исчерпаны, поэтому вместо этого несколько сетей класса C сгруппированы вместе для более крупных организаций и интернет-провайдеров.
Вы можете просмотреть краткий справочник по таблице IP-подсетей
Номера сокетов и портов
Хотя IP-адрес обеспечивает подключение к правильному компьютеру, он не может отличить другую требуемую службу.
Порт используется для различения приложения. Это значение от 0 до 65535. Комбинация IP-адреса, порта и протокола называется сокетом и должна быть уникальной для каждой службы. Область номеров портов доступна как для TCP, так и для UDP, и при упоминании в сочетании с IP-адресом она указывает «сокет».
Первые 1000 портов зарезервированы для определенных приложений, и в Linux обычно могут использоваться демоном/приложением с привилегиями суперпользователя. Их называют хорошо известными портами. Некоторые из них определены в RFC 1340, а другие определены IANA.
Сведения о зарезервированных портах перечислены в большинстве систем Linux в файле /etc/services.
Некоторые из общих портов:
20 и 21 FTP 23 Телнет 25 SMTP (простой протокол передачи почты) 53 ДНС 80 Всемирная паутина 110 POP3 (протокол почтового отделения) 144 Новости 6000 X-Windows
Порты выше 1000 можно использовать для любых других целей.
См. также: Номера портов TCP и UDP (/etc/services) Краткий справочник
Другие протоколы адресации
Используются другие протоколы адресации.
Они находятся на более низких уровнях стека протоколов и различаются в зависимости от используемого носителя. Наиболее часто используемым из них является MAC-адрес (управление доступом к среде). Протокол ARP (протокол разрешения адресов) используется для преобразования IP-адресов в MAC-адреса. Следующая диаграмма используется, чтобы показать, как это работает.
Рисунок 4: Схема Ethernet с MAC-адресами
Внизу, на нижних уровнях, физическое соединение Ethernet ничего не знает об IP-адресации. IP-адресация происходит на уровне 3, который выше, чем уровни 1 и 2, на которых работает Ethernet. Вместо этого они используют MAC-адрес, состоящий из 6 цифр, разделенных двоеточиями. Это позволяет передавать через Ethernet различные сетевые протоколы, такие как SNA (используется мейнфреймами IBM) или IPX (формально схема адресации по умолчанию, используемая Novel Netware).
MAC-адрес обычно жестко закодирован в сетевой карте и уникален для каждого производимого устройства.
Это достигается путем выделения блока адресов каждому производителю Ethernet-устройств. Обычно пользователь не знает и не заботится о значении MAC-адреса, поскольку оно прозрачно для пользователя.
Иногда можно вручную изменить MAC-адрес, но это не рекомендуется, если у вас нет особых требований и вы не знаете, что делаете.
Для преобразования между IP-адресами и MAC-адресами в локальной сети Ethernet используется протокол разрешения адресов (ARP).
Например, когда система Sys1 хочет установить связь с другой системой, такой как Sys4, пользователь будет использовать ее IP-адрес 192.168.1.4.
Теперь Sys1 необходимо преобразовать этот адрес в MAC-адрес Sys4. Поэтому он отправляет широковещательную рассылку MAC всем машинам, запрашивая ответ у машины с IP-адресом 192.168.1.4. Sys4 ответит своим MAC-адресом 32:B5:19:C2:00:12.
Затем Sys1 добавляет IP-адрес и MAC-адрес Sys4 в свою таблицу ARP. Sys4 также знает IP-адрес и MAC-адрес Sys1 (поскольку Sys1 включила его IP-адрес в исходную широковещательную рассылку), поэтому добавляет его в свою таблицу ARP.
Теперь в будущем, когда системы захотят обмениваться данными, они просто ищут MAC-адрес в системной таблице ARP.
Если машина не находится в той же локальной сети, то для этого требуется IP-маршрутизация, которая будет объяснена позже.
Система доменных имен (DNS)
Хотя схема IP-адресации позволяет компьютерам взаимодействовать друг с другом, людям не так просто ее запомнить. Что вам будет легче запомнить: www.easytoremember.com или 172.16.35.122?
Имена хостов имеют иерархическую структуру. Имена читаются справа налево, как если бы они спускались по дереву.
Рисунок 5: Пример дерева DNS
Возьмем несколько таких примеров.
- Начиная сверху, первый домен ниже корня называется корневым доменом. В данном случае это ком.
- Следующим является домен компаний или организаций, например, название компании.
- В крупных компаниях они могут затем разделить домен на дополнительные поддомены, например, по местоположениям.
Однако, если вы посмотрите на дерево, не все имена машин должны быть включены в поддомен, они могут заканчиваться на этом уровне (или даже на уровне выше этого, если это необходимо).
Кроме того, для небольших компаний (таких как «другая компания») может не потребоваться дальнейшее разделение на поддомены. - Наконец, имя хоста находится в последней части дерева. Например почтовый сервер.
Окончательное имя этого компьютера (известное как полное доменное имя FQDN) — mail.location1.companyname.com
Ответственность за разделение всех имен ниже названия компании лежит на конечной компании или организации. Однако очевидно, что домены организации должны быть выделены руководящим органом, чтобы гарантировать, что две компании не попытаются использовать один и тот же домен. Этим управляют местные организации, зависящие от домена верхнего уровня. Доменные имена верхнего уровня (TLDN) выделяются IANA. Основные TLDN:
arpa — используется для сопоставления DNS
ком — коммерческий
образование — образовательный
gov — Правительство
мил — Военный
net — Группы поддержки сети или интернет-провайдеры
org — Другие организации (обычно благотворительные)
Интер — Международные организации
Существуют также домены верхнего уровня страны, которые можно использовать для доменов внутри стран, хотя обратите внимание, что нет ограничений на нахождение или работу в этой стране.
Например, домен верхнего уровня для Соединенного Королевства — uk. Некоторые примеры:
ac.uk — Академическое сообщество (образование)
co.uk — Коммерческий
gov.uk — Правительство / Советы
ltd.uk — Компании с ограниченной ответственностью
org.uk — Другие организации (обычно благотворительные)
Объяснить DNS проще всего на примере DNS-запроса
.
Если компьютер хочет связаться с www.penguintutor.com, он сначала свяжется со своим локальным DNS-сервером с помощью nslookup для этого конкретного сайта. Обычно это DNS-сервер, предоставляемый их собственной компанией или их интернет-провайдером. Их локальный DNS-сервер не знает о существовании веб-сайта. Затем этот DNS-сервер может попытаться запросить корневой DNS.
Этот DNS ничего не знает о рассматриваемом компьютере, однако теперь он знает о домене .com и возвращает сведения о DNS-серверах, которым принадлежит домен (в случае доменов верхнего уровня в других странах он ответит DNS-серверами, которые владеть доменом этой страны).
Затем локальный DNS-сервер свяжется с одним из DNS-серверов для домена .com, который вернет DNS-серверы, ответственные за домен penguintutor.com.
Когда локальный DNS-сервер связывается с этим сервером, он имеет записи для этого домена и может предоставить конкретный IP-адрес. В этом случае он известен как авторитетный ответ, поскольку он на 100% уверен, что это IP-адрес, поскольку он отвечает за этот домен. Затем DNS-сервер может ответить запрашивающей стороне IP-адресом.
Другой способ заключается в том, чтобы один из промежуточных DNS-серверов предоставил рекурсивный запрос, посредством чего он идет и запрашивает другой DNS-сервер от имени запрашивающего DNS-сервера. DNS-серверы не обязаны поддерживать рекурсивные запросы, и в этом случае исходный DNS-сервер должен будет сам выполнять поиск.
Это звучит как очень долгий процесс, если его нужно выполнять для каждой машины, к которой нужно получить доступ.
Если бы это было так, то нагрузка на DNS-серверы верхнего уровня была бы чрезмерной.
Чтобы ускорить процесс DNS, многие DNS-машины предоставляют функцию кэширования, в которой они могут сохранять результаты некоторых выполняемых ими поисковых запросов. Кэшированные имена могут относиться либо к конкретным хостам (хотя, за исключением популярных сайтов, они с меньшей вероятностью попадут в кеш).
В качестве альтернативы DNS будет кэшировать адрес другого DNS-сервера, что позволит ему обойти некоторые процессы (например, кэширование com-DNS позволит DNS пропустить корневой запрос для последующих .com-запросов).
Использование кэша DNS настолько важно, что существуют даже DNS-серверы, предназначенные только для кэширования, которые не действуют как зона полномочий для какого-либо домена.
Если сервер доменных имен недоступен, доступ к другим машинам будет невозможен.
Поэтому резервный сервер настраивается как резервный. Они называются вторичными серверами имен, поскольку они могут отвечать на запросы, но не владеют фактическими записями.
Первичный сервер имен передаст свою конфигурацию для любых вторичных серверов имен, которые он настроил как подчиненные.
В Linux файл /etc/resolv.conf содержит сведения о том, какие DNS-серверы следует использовать для поиска DNS.
Процесс DNS обсуждается в RFC 1034 и RFC 1035.
Обработка хостов без DNS-сервера
Если у вас нет доступа к DNS-серверу или вы хотите, чтобы дополнительные записи не хранились на DNS-сервере, тогда их можно настроить непосредственно на локальном компьютере. Это можно реализовать, добавив записи в файл /etc/hosts. Файл хоста представляет собой список имен хостов и их IP-адресов, что позволяет напрямую сопоставлять их. Это может работать для небольшой организации или локальной сети, но если у вас больше нескольких машин, лучше использовать локальный DNS-сервер.
Маршрутизация
Если две машины соединены друг с другом как двухточечное соединение через физическое соединение, то они могут напрямую взаимодействовать друг с другом. Однако, как только мы начнем обмениваться данными с компьютерами в других сетях или через Интернет, потребуется маршрутизация, чтобы данные достигли нужного места назначения.
Устройства, управляющие направлением трафика, называются маршрутизаторами. Эти маршрутизаторы принимают входящий пакет и в зависимости от адреса назначения отправляют его через другой интерфейс либо другому маршрутизатору, либо конечному получателю.
Для обычного хост-компьютера все, что необходимо для управления маршрутизацией всех пакетов, — это определить шлюз по умолчанию. Шлюз по умолчанию — это маршрутизатор, напрямую подключенный к тому же сегменту локальной сети, что и хост, который знает, как направлять пакеты. Затем для любого адреса, который не хранится локально, он перенаправляет пакет на локальный маршрутизатор с просьбой переслать его к месту назначения. В качестве альтернативы для разных сетей система может иметь несколько маршрутов, определенных для разных сетей или хостов, или может участвовать в протоколе динамической маршрутизации.
Затем маршрутизатор перенаправит пакет непосредственно в хост-сеть или на другой маршрутизатор. Всякий раз, когда пакет проходит через маршрутизатор, это называется переходом.
Существует три различных типа маршрутов. Они могут быть неявными, статическими или динамическими. Неявные маршруты — это когда конфигурация TCP/IP указывает, что адрес является локальным для машины (т. е. в том же физическом сегменте локальной сети). Статические маршруты определяются индивидуально (часто это включает маршрут по умолчанию), а динамические — это когда сетевой протокол используется для определения наиболее подходящего маршрута для различных соединений.
Статическая маршрутизация
Для статических маршрутов каждая запись в таблице маршрутизации добавляется с помощью команды route. Обычно это используется для подключения хоста к его сетям, но может использоваться для маршрутизаторов, как правило, в небольших, простых в управлении сетях.
Перенаправления ICMP
Возможно, что когда пакет отправляется с использованием статических маршрутов, он не обязательно будет идти по самому прямому маршруту. Например, если в локальной сети есть два маршрутизатора, один из которых идет напрямую к хосту, а другой должен передать его другому.
Это показано ниже.
Рисунок 6: Пример перенаправления ICMP
Здесь у нас есть Sys1, который находится в сети 0. В одном и том же сегменте локальной сети есть два маршрутизатора, но Sys1 имеет только маршрут по умолчанию, указывающий на маршрутизатор 1. Когда Sys1 хочет связаться с Sys21, он сначала отправляет свой запрос на маршрутизатор Router1. Router1 понимает, что он должен перенаправить его на Router2 и что для Sys1 было бы проще отправить его прямо туда. Он перенаправляет пакет на Router2, чтобы он достиг Sys21, но затем также отправляет сообщение о перенаправлении ICMP на Sys1. Затем Sys1 добавляет маршрут в свою таблицу маршрутизации для отправки любых пакетов для Sys21 на Router2. Затем, когда Sys1 в следующий раз потребуется отправить пакет Sys21, он может отправить его непосредственно на Router2.
Операционная система может обрабатывать эти перенаправления ICMP или игнорировать их, в зависимости от настроек.
Динамическая маршрутизация
Обычно используются три протокола динамической маршрутизации.
Это RIP (протокол информации о маршрутизации), RIP 2 и OSPF (сначала открывайте кратчайший путь). Они работают за счет того, что маршрутизаторы постоянно общаются друг с другом, описывая сеть друг другу.
RIP использует количество переходов (т. е. количество маршрутизаторов, через которые будет проходить пакет), чтобы определить, по какому маршруту следует отправить пакет. OSPF является более сложным и позволяет сетевому администратору устанавливать метрики, указывающие стоимость использования определенного маршрута.
Это позволяет отдавать предпочтение более дорогим каналам (например, коммутируемым соединениям) и более быстрым каналам (например, каналам с более высокой пропускной способностью или меньшим временем задержки).
Это все внутренние протоколы, поскольку они используются в сети. Для подключения к другим сетям используется внешний протокол BGP (Border Gateway Protocol).
Протокол маршрутной информации (RIP)
RIP — это простой протокол, основанный на векторах расстояния.
Он использует алгоритм кратчайшего пути для определения наилучшего маршрута к месту назначения. Это измеряется в прыжках, которые обычно представляют собой количество шлюзов (маршрутизаторов), которые проходят до достижения сети назначения. Демон маршрутизации динамически изучает сеть, используя протокол RIP, и создает свои собственные таблицы маршрутизации.
Скорость линии, надежность или стоимость не учитываются при поиске кратчайшего звена. При использовании RIP максимальное количество переходов равно 15. Любой пункт назначения, удаленный более чем на 15 прыжков, считается бесконечно удаленным и недостижимым. Это необходимая функция протокола RIP, поскольку в противном случае можно было бы получить петли маршрутизации, когда маршрутизаторы, имеющие устаревшие или статические маршруты, передают пакет по непрерывному кругу.
Несмотря на то, что он подходит для малых и средних сетей, он плохо подходит для больших сетей из-за его негибкости и малого количества переходов.
Обновления между маршрутизаторами отправляются с использованием UDP через порт 520. Когда маршрутизатор подключается к сети, он передает другим маршрутизаторам запрос на отправку своих таблиц маршрутизации. После этого маршрутизатор будет объявлять свои таблицы своим соседям каждые 30 секунд. Кроме того, если есть обновление, указывающее на изменение в сети, маршрутизатор отправит его немедленно (почти).
RIP версии 2 (или RIP 2) содержит некоторые усовершенствования протокола RIP. Это задокументировано в RFC 1723. Новые функции включают в себя:
Аутентификация — принимает обновления, только если указан правильный пароль
Тег маршрута — позволяет добавить значение тега, чтобы указать, что ссылка является внешней
Маска подсети — позволяет RIP работать в сетях с переменными подсетями
Next Hop — Max RIP более гибкий при использовании в сети с несколькими протоколами маршрутизации (например, OSPF и RIP)
Многоадресная рассылка. Разрешите маршрутизаторам выполнять многоадресную рассылку обновлений, которая более эффективна, чем широковещательная рассылка.
При использовании OSPF или RIP 2 в системе Linux необходимо запустить демон gated. Для RIP 2 демон gated указывается с пустым файлом конфигурации.
Сначала откройте кратчайший путь (OSPF)
OSPF является протоколом состояния канала, поэтому использует концепцию распределенной карты. Карта сети представляет собой базу данных, справку по каждому узлу и обновления, выполняемые методом «затопления». Все обновления карты должны быть защищены.
В протоколах состояния канала каждый маршрутизатор отвечает за определение личности своих соседей. Маршрутизатор создает пакет состояния канала (LSP), в котором перечислены его соседи и стоимость канала. Это передается на все маршрутизаторы, которые затем сохраняют самый последний LSP, полученный от каждого маршрутизатора. Затем маршрутизаторы создают базу данных пакетов состояния канала, из которой рассчитываются маршруты через сеть.
Маршрутизаторы обычно группируются в области. Маршруты в одной области будут суммировать информацию для отправки в другие области.
Это ограничивает размер базы данных состояния канала и количество рекламных объявлений.
Протокол OSPF обеспечивает быстрое преобразование и множество показателей, позволяющих учитывать пропускную способность, задержку, стоимость и надежность. OSPF также допускает несколько путей к месту назначения, обеспечивая немедленный возврат в случае сбоя. Для маршрутизаторов предусмотрена авторизация (недоступна в RIP версии 1). OSPF также не ограничивает размер сети.
OSPF также позволяет распределять нагрузку по ссылкам. Это чаще встречается в маршрутизаторах, чем в хост-компьютерах.
Интернет-протокол версии 6 (IPV6)
До сих пор мы рассматривали IP версии 4, которая в настоящее время является основной схемой адресации, используемой в Интернете. Количество оставшихся адресов IPV4 очень мало, а количество новых устройств, которым нужны IP-адреса, быстро растет (например, планшеты и мобильные телефоны).
IPv6 заменяет 32-битную схему адресации на 128-битную, что должно обеспечить столько адресов, сколько когда-либо потребуется.
Компьютеры, имеющие только IPv4-адрес, не могут взаимодействовать с другими компьютерами, имеющими только IPv6-адрес, без предварительного прохождения через промежуточный узел (прокси). Однако возможно иметь как IPv4, так и IPv6-адреса на одном компьютере с использованием двойного стека, а также можно туннелировать трафик по другой сети.
Адреса IPv6 записываются в виде восьми групп по четыре шестнадцатеричных цифры, каждая из которых разделена двоеточием. Например: 2176:03df:1311:21da:0000:0000:33ad:0136. Там, где это начальные нули, их можно опустить, а одну или несколько групп последовательных нулей можно заменить двойным двоеточием. Например. вышеприведенное также можно записать как 2176:3df:1311:21da::33ad:136
Дополнительная литература
Документы RFC
Краткий справочник по таблице IP-маски подсети
Краткий справочник по номерам портов TCP и UDP (/etc/services)
Основы работы с сетью: набор протоколов TCP/IP
/IP), протокол, на котором построен Интернет, на самом деле представляет собой не один протокол, а целый набор связанных протоколов.
TCP даже старше, чем Ethernet. Впервые он был задуман в 1969 году Министерством обороны. В настоящее время Internet Engineering Task Force, или IETF, управляет набором протоколов TCP/IP.Пакет TCP/IP основан на четырехуровневой модели организации сети, аналогичной семиуровневой модели взаимодействия открытых систем (OSI). На следующем рисунке показано, как модель TCP/IP согласуется с моделью OSI и какое место в модели занимают некоторые ключевые протоколы TCP/IP.
Как видите, самый нижний уровень модели, уровень сетевого интерфейса, соответствует физическому уровню модели OSI и уровню канала передачи данных. TCP/IP может работать с широким спектром протоколов уровня сетевого интерфейса, включая Ethernet, а также с другими протоколами, такими как Token Ring и FDDI (старый стандарт для оптоволоконных сетей).
Прикладной уровень модели TCP/IP соответствует трем верхним уровням модели OSI, то есть уровням сеанса, представления и уровня приложения. На этом уровне можно использовать множество протоколов.
Одними из самых популярных являются HTTP, FTP, Telnet, SMTP, DNS и SNMP.
ИП
IP — это протокол сетевого уровня, который отвечает за доставку пакетов на сетевые устройства. Протокол IP использует логические IP-адреса для обозначения отдельных устройств, а не физических (MAC) адресов. Протокол, называемый ARP (протокол разрешения адресов), выполняет задачу преобразования IP-адресов в MAC-адреса.Поскольку IP-адреса состоят из сетевой части и части хоста, IP является маршрутизируемым протоколом . В результате IP может пересылать пакет в другую сеть, если узел не находится в текущей сети. (Возможность маршрутизировать пакеты по сетям — вот откуда IP получил свое название. I Интернет — это серия из двух или более подключенных сетей TCP/IP, к которым можно получить доступ с помощью маршрутизации.)
TCP
TCP — это протокол транспортного уровня, ориентированный на соединение. TCP позволяет устройству надежно отправлять пакет другому устройству в той же сети или в другой сети.
TCP гарантирует, что каждый пакет будет доставлен, если это вообще возможно. Он делает это, устанавливая соединение с принимающим устройством и отправляя пакеты. Если пакет не приходит, TCP повторно отправляет пакет. Соединение закрывается только после того, как пакет был успешно доставлен или возникла неисправимая ошибка.
Одним из ключевых аспектов TCP является то, что он всегда используется для связи один-к-одному. Другими словами, TCP позволяет одному сетевому устройству обмениваться данными с другим сетевым устройством. TCP не используется для передачи сообщений нескольким сетевым получателям. Вместо этого для этой цели используется протокол пользовательских дейтаграмм (UDP).
Многие известные протоколы прикладного уровня основаны на TCP. Например, когда веб-браузер запрашивает страницу, браузер использует HTTP для отправки запроса через TCP на веб-сервер. Когда веб-сервер получает запрос, он использует HTTP для выполнения запроса, опять же через TCP. Другие протоколы прикладного уровня, использующие TCP, включают Telnet (для эмуляции терминала), FTP (для обмена файлами) и SMTP (для электронной почты).
УДП
Протокол пользовательских дейтаграмм — это протокол транспортного уровня без установления соединения, который используется, когда служебные данные соединения не требуются. После того, как UDP поместил пакет в сеть (по IP-протоколу), он забывает о нем. UDP не гарантирует, что пакет действительно прибудет к месту назначения. Большинство приложений, использующих UDP, просто ждут любых ответов, ожидаемых в результате пакетов, отправленных через UDP. Если ответ не приходит в течение определенного периода времени, приложение либо отправляет пакет повторно, либо отказывается от него.Вероятно, самым известным протоколом прикладного уровня, использующим UDP, является система доменных имен (DNS). Когда приложению требуется доступ к доменному имени, такому как www.dummies.com, DNS отправляет пакет UDP на DNS-сервер для поиска домена. Когда сервер находит домен, он возвращает IP-адрес домена в другом UDP-пакете.
Об этой статье
Эта статья из книги:
- TCP/IP для чайников,
Об авторах книги:
Кэндис Лейден консультирует по вопросам производительности систем и баз данных, а также по разработке учебных программ для международных курсов.
Маршалл Виленски был консультантом и сетевым менеджером многопротокольных сетей в Высшей школе делового администрирования Гарвардского университета. Оба всемирно известные спикеры.
Эту статью можно найти в категории:
- Общая сеть ,
Основы протокола TCP/IP с диаграммой
Вы когда-нибудь задумывались, как ваш компьютер общается с другими компьютерами в вашей локальной сети или с другими системами в Интернете?
Понимание тонкостей взаимодействия компьютеров является важной частью работы в сети и в равной степени представляет интерес как для системного администратора, так и для разработчика. В этой статье мы попытаемся обсудить концепцию общения с самого базового фундаментального уровня, который должен быть понят всеми.
НАБОР ПРОТОКОЛОВ TCP/IP
Связь между компьютерами в сети осуществляется с помощью протоколов.
Наиболее широко используемым и наиболее доступным набором протоколов является набор протоколов TCP/IP. Набор протоколов состоит из многоуровневой архитектуры, где каждый уровень отображает некоторые функции, которые могут выполняться протоколом. Каждый уровень обычно имеет более одного варианта протокола для выполнения ответственности, которой придерживается уровень. TCP/IP обычно считается четырехуровневой системой. 4 слоя следующие:
- Прикладной уровень
- Транспортный уровень
- Сетевой уровень
- Канальный уровень
1. Прикладной уровень
Это верхний уровень набора протоколов TCP/IP. Этот уровень включает приложения или процессы, использующие протоколы транспортного уровня для доставки данных на конечные компьютеры.
На каждом уровне есть определенные параметры протокола для выполнения задачи, предназначенной для этого конкретного уровня. Таким образом, прикладной уровень также имеет различные протоколы, которые приложения используют для связи со вторым уровнем, транспортным уровнем.
Некоторые из популярных протоколов прикладного уровня:
- HTTP (протокол передачи гипертекста)
- FTP (протокол передачи файлов)
- SMTP (простой протокол передачи почты)
- SNMP (простой протокол управления сетью) и т. д.
2. Транспортный уровень
Этот уровень обеспечивает магистраль для потока данных между двумя хостами. Этот уровень получает данные от прикладного уровня над ним. На этом уровне работает множество протоколов, но два наиболее часто используемых протокола на транспортном уровне — это TCP и UDP.
TCP используется там, где требуется надежное соединение, а UDP используется в случае ненадежных соединений.
TCP делит данные (поступающие с прикладного уровня) на фрагменты надлежащего размера, а затем передает эти фрагменты в сеть. Он подтверждает полученные пакеты, ждет подтверждений отправленных пакетов и устанавливает время ожидания для повторной отправки пакетов, если подтверждения не получены вовремя.
Термин «надежное соединение» используется, когда нежелательно терять какую-либо информацию, которая передается по сети через это соединение. Таким образом, протокол, используемый для этого типа соединения, должен обеспечивать механизм для достижения этой желаемой характеристики. Например, при загрузке файла нежелательно терять какую-либо информацию (байты), поскольку это может привести к повреждению загруженного содержимого.
UDP предоставляет сравнительно более простую, но ненадежную услугу, отправляя пакеты с одного хоста на другой. UDP не предпринимает никаких дополнительных мер для обеспечения того, чтобы отправленные данные были получены целевым хостом или нет. Термин «ненадежное соединение» используется, когда потеря некоторой информации не препятствует выполнению задачи через это соединение. Например, при потоковой передаче видео допустима потеря нескольких байтов информации по какой-либо причине, поскольку это не сильно вредит работе пользователя.
3.
Сетевой уровеньЭтот уровень также известен как Интернет-уровень. Основной целью этого уровня является организация или обработка перемещения данных по сети. Под перемещением данных мы обычно подразумеваем маршрутизацию данных по сети. Основным протоколом, используемым на этом уровне, является IP. В то время как ICMP (используется популярной командой «ping») и IGMP также используются на этом уровне.
4. Канальный уровень
Этот уровень также известен как уровень сетевого интерфейса. Этот уровень обычно состоит из драйверов устройств в ОС и карты сетевого интерфейса, подключенной к системе. И драйверы устройств, и сетевая интерфейсная карта заботятся о деталях связи с носителем, используемым для передачи данных по сети. В большинстве случаев эта среда представляет собой кабели. Некоторые из известных протоколов, которые используются на этом уровне, включают ARP (протокол разрешения адресов), PPP (протокол точка-точка) и т. д.
ПРИМЕР КОНЦЕПЦИИ TCP/IP
Стоит отметить, что взаимодействие между двумя компьютерами по сети через набор протоколов TCP/IP происходит в форме клиент-серверной архитектуры.
Клиент запрашивает службу, пока сервер обрабатывает запрос клиента.
Теперь, когда мы обсудили нижележащие уровни, которые помогают потоку данных от хоста к целевому по сети. Давайте возьмем очень простой пример, чтобы сделать концепцию более понятной.
Учитывайте поток данных при открытии веб-сайта.
Как видно на рисунке выше, информация течет вниз через каждый уровень на хост-компьютере. На первом уровне, поскольку используется протокол http, формируется HTTP-запрос и отправляется на транспортный уровень.
Здесь протокол TCP присваивает некоторую дополнительную информацию (например, порядковый номер, номер исходного порта, номер порта назначения и т. д.) данным, поступающим с верхнего уровня, чтобы связь оставалась надежной, т. Е. Можно было поддерживать отслеживание отправленных и полученных данных. .
На следующем нижнем уровне IP добавляет свою информацию к данным, поступающим с транспортного уровня. Эта информация может помочь в передаче пакетов по сети.
Наконец, уровень канала передачи данных обеспечивает правильную передачу данных на физический носитель и обратно. Здесь снова связь, осуществляемая на канальном уровне, может быть надежной или ненадежной.
Эта информация передается по физическому носителю (например, Ethernet) и достигает целевой машины.
Теперь на целевой машине (в нашем случае это машина, на которой размещен веб-сайт) происходит та же серия взаимодействий, но в обратном порядке.
Пакет сначала получен на канальном уровне. На этом уровне информация (которая была заполнена протоколом уровня канала передачи данных хост-машины) считывается, а остальные данные передаются на верхний уровень.
Аналогичным образом на сетевом уровне информация, установленная протоколом сетевого уровня хост-компьютера, считывается, а остальная информация передается на следующий верхний уровень. То же самое происходит на транспортном уровне, и, наконец, HTTP-запрос, отправленный хост-приложением (вашим браузером), принимается целевым приложением (сервером веб-сайта).
Интересно, что происходит, когда информация, относящаяся к каждому уровню, считывается соответствующими протоколами на целевой машине, и зачем это нужно? Что ж, давайте разберемся с этим на примере протокола TCP, присутствующего на транспортном уровне. На хост-компьютере этот протокол добавляет такую информацию, как порядковый номер, к каждому пакету, отправляемому этим уровнем.
На целевом компьютере, когда пакет достигает этого уровня, TCP на этом уровне записывает порядковый номер пакета и отправляет подтверждение (полученный порядковый номер + 1).
Теперь, если хост TCP не получает подтверждение в течение определенного времени, он повторно отправляет тот же пакет. Таким образом, TCP гарантирует, что ни один пакет не будет потерян. Таким образом, мы видим, что протокол на каждом уровне считывает информацию, установленную его аналогом, для достижения функциональности уровня, который он представляет.
ПОРТЫ, СЕРВЕРЫ И СТАНДАРТЫ
На определенной машине номер порта в сочетании с IP-адресом машины называется сокетом.
Комбинация IP-адреса и порта как на клиенте, так и на сервере известна как четыре кортежа. Эти четыре кортежа однозначно идентифицируют соединение. В этом разделе мы обсудим, как выбираются номера портов.
Вы уже знаете, что некоторые из наиболее распространенных служб, таких как FTP, telnet и т. д., работают на хорошо известных номерах портов. В то время как FTP-сервер работает на порту 21, сервер Telent работает на порту 23. Итак, мы видим, что некоторые стандартные службы, предоставляемые любой реализацией TCP/IP, имеют некоторые стандартные порты, на которых они работают. Эти стандартные номера портов обычно выбираются от 1 до 1023. Хорошо известные порты управляются Управлением по присвоению номеров в Интернете (IANA).
Хотя большинство стандартных серверов (обеспечиваемых реализацией пакета TCP/IP) работают со стандартными номерами портов, клиентам не требуется для работы какой-либо стандартный порт.
Номера клиентских портов называются эфемерными портами.
Под эфемерным мы подразумеваем недолговечность. Это связано с тем, что клиент может подключиться к серверу, выполнить свою работу, а затем отключиться. Поэтому мы использовали термин «короткоживущие», и, следовательно, для них не требуются стандартные порты.
Кроме того, поскольку клиентам необходимо знать номера портов серверов для подключения к ним, большинство стандартных серверов работают со стандартными номерами портов.
Порты, зарезервированные для клиентов, обычно находятся в диапазоне от 1024 до 5000. Номера портов выше 5000 зарезервированы для тех серверов, которые не являются стандартными или широко известными.
Если мы посмотрим на файл «/etc/services», вы найдете большинство стандартных серверов и порт, на котором они работают.
$ кот /etc/services пользователи systat 11/tcp дневное время 13/udp нетстат 15/tcp qotd 17/tcp цитата мсп 18/удп чарген 19/удп ттыц источник ftp-данные 20/tcp фтп 21/ткп SSH 22/TCP ssh 22/udp телнет 23/tcp .
146.49.55
Port: 2049
Адрес получателя (Destination address):
IP: 195.34.32.116
Port: 53
Данные пакета:
...
34.32.116 (у вас может быть другой), Страница, которую мы хотим открыть: www.ofnet.ru.
Не открывайте эти порты наружу, т.е. в районную локальную сеть и Интернет. Их следует закрыть фаерволлом. Также если в локальной сети вы не видите ничего в сетевом окружении или вас не видят, то вероятно это связано с тем, что фаерволл заблокировал эти порты. Таким образом для локальной сети эти порты должны быть открыты, а для Интернета закрыты.
21 — порт FTP сервера.
25 — порт почтового SMTP сервера. Через него ваш почтовый клиент отправляет письма. IP адрес SMTP сервера и его порт (25-й) следует указать в настройках вашего почтового клиента.
110 — порт POP3 сервера. Через него ваш почтовый клиент забирает письма из вашего почтового ящика. IP адрес POP3 сервера и его порт (110-й) также следует указать в настройках вашего почтового клиента.
80 — порт WEB-сервера.
3128, 8080 — прокси-серверы (настраиваются в параметрах браузера).
0.0.1 — это localhost, адрес локальной системы, т.е. локальный адрес вашего компьютера.
0.0.0.0 - так обозначаются все IP-адреса.
192.168.xxx.xxx — адреса, которые можно произвольно использовать в локальных сетях, в глобальной сети Интернет они не используются. Они уникальны только в рамках локальной сети. Адреса из этого диапазона вы можете использовать по своему усмотрению, например, для построения домашней или офисной сети.
..
255 . 255 . 0 