Tcp/ip

IP-адрес[править]

Определение:
IP-адрес — уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP.

IPv4-адресправить

IPv4 использует 32-битные адреса, ограничивающие адресное пространство 4 294 967 296 (232) возможными уникальными адресами. У каждого хоста и маршрутизатора в Интеренете есть IP-адрес. IP-адрес не имеет отношения к хосту. Он имеет отношение к сетевому интерфейсу, поэтому иногда хост или маршрутизатор могут иметь несколько IP-адресов.

IP-адреса имеют иерархическую организацию. Первая часть имеет переменную длину и задает сеть, а последняя указывает на хост.

Обычно IP-адреса записываются в виде 4 десятичных чисел, каждое в диапозоне от 0 до 255, разделенными точками (dot-decimal notation). Каждая часть представляет один байт адреса. Например, шестнадцатиричный адрес 80D00297 записывается как 128.208.2.151.

Определение:
Префикс — непрерывный блок пространства IP-адресов, соответствующий сети, в которой сетевая часть совпадает для всех хостов.

Префикс задается наименьшим IP-адресом в блоке и размером блока. Размер определяется числом битов в сетевой части, оставшиеся биты в части хоста могут варьироваться. Таким образом, размер является степенью двойки. Он записывается после префикса IP-адреса в виде слэша и длины сетевой части в битах. В предыдущем примере префикс содержит 28 адресов и поэтому для сетевой части отводится 24 бита. Записывается так: 128.208.2.0/24.

Сетевые адреса, адреса интерфейсов и широковещательные адресаправить

IP адрес может означать одно из трех:

  • Адрес IP сети (группа IP устройств, имеющих доступ к общей среде передаче — например, все устройства в сегменте Ethernet). Сетевой адрес всегда имеет биты интерфейса (хоста) адресного пространства установленными в 0 (если сеть не разбита на подсети);
  • Широковещательный адрес IP сети (адрес для ‘разговора’ со всеми устройствами в IP сети). Широковещательные адреса для сети всегда имеют интерфейсные (хостовые) биты адресного пространства установленными в 1 (если сеть не разбита на подсети).
  • Адрес интерфейса (например Ethernet-адаптер или PPP интерфейс хоста, маршрутизатора, сервера печать итд). Эти адреса могут иметь любые значения хостовых битов, исключая все нули или все единицы — чтобы не путать с адресами сетей и широковещательными адресами.

IPv6-адресправить

Адрес в IPv6 представляется как восемь групп из четырех шестнадцатеричных чисел, разделенных двоеточиями.
При записи адреса используются следующие правила:

  • Если одна и более групп, идущих подряд, равны 0000, то они опускаются и заменяются на двойное двоеточие.
  • Незначащие старшие нули в группах опускаются.
  • Для записи встроенного или отображенного IPv4 адреса последние две группы цифр заменяются на IPv4 адрес.
  • При использовании IPv6 адреса в URL он помещается в квадратные скобки.
  • Порт в URL пишется после закрывающей квадратной скобки.

Типы IPv6 адресовправить

  • Одноадресный (Unicast) — для отправки пакет на конкретный адрес устройства.
    • Global unicast — глобальные адреса. Могут находиться в любом не занятом диапазоне.
    • Link loсal — локальный адрес канала. Позволяет обменивать данными по одному и тому же каналу (подсети). Пакеты с локальным адресом канала не могут быть отправлены за пределы этого канала.
    • Unique local — уникальный локальные адреса. Используются для локальной адресации в пределах узла или между ограниченным количеством узлов.
  • Многоадресный (Multicast) — для отправки пакетов на группу адресов.
    • Assigned — назначенные адреса. Зарезервированные для определённых групп устройств Multicast адреса.
    • Solicited — запрошенные адреса. Остальные адреса, которые устройства могут использовать для прикладных задач.
  • Групповой (Anycast) — для отправки пакета на «любой» индивидуальный адрес. Такой адрес может быть назначен нескольким устройствам. Пакет будет доставлен ближайшему устройству с этим адресом.

Фрагментацияправить

Большинство каналов передачи данных устанавливают максимальную длину пакета (MTU). В случае, когда длина пакета превышает это значение, происходит фрагментация.

Определение:
IP-фрагментация — разбиение пакета на множество частей, которые могут быть повторно собраны позже.

Порт[править]

Сетевой порт — это сетевой ресурс, отображаемый в виде числа (1-65535), которое определяет назначение входящих или исходящих сетевых потоков данных на заданном устройстве.

Если прибегнуть к аналогии, IP адрес — это адрес общежития с вахтёром, а порт — номер комнаты в этом общежитии или фамилия ее жильца.

Согласно IP, в каждом пакете присутствуют IP-адрес узла-источника и IP-адрес узла-назначения. В TCP-пакетах дополнительно указываются порт источника и порт назначения.

Например, почтовое письмо (пакет данных) имеет информацию об отправителе (порт) и информацию о получателе (фамилия или номер комнаты по конкретному адресу).

Узел назначения («вахтер»), получив пакет («письмо»), смотрит на порт назначения («фамилию или номер комнаты») и передает пакет соответствующему у себя приложению («конкретному жильцу»).

Использование портов позволяет независимо использовать TCP протокол («почтовые услуги») сразу многим приложениям на одном и том же компьютере (общежитии).

Клиентом называют приложение, которое пользуется каким-то сервисом, предоставляемым другим приложением — Сервером, обычно на удаленном компьютере. Практически всегда клиент начинает исходящие соединения, а сервер ожидает входящих соединений (от клиентов), хотя бывают и исключения.

Сервер при запуске сообщает Операционной Системе, что хотел бы «занять» определенный порт (или несколько портов). После этого все пакеты, приходящие на компьютер к этому порту, ОС будет передавать этому серверу. Говорят, что сервер «слушает» этот порт.

Клиент, начиная соединение, запрашивает у своей ОС какой-нибудь незанятый порт во временное пользование, и указывает его в посланных пакетах как порт источника. Затем на этот порт он получит ответные пакеты от сервера.

Таким образом, сервер:

  • слушает на определённом порту, заранее известном клиенту
  • занимает этот порт всё время, пока не завершит работу
  • об IP-адресе и номере порта клиента узнаёт из приглашения, посланного клиентом

Клиент:

  • заранее знает IP-адрес и порт сервера
  • выбирает у себя произвольный порт, который освобождает после окончания соединения
  • посылает приглашение к соединению

Транспортный уровень

Протоколы транспортного уровня обеспечивают прозрачную доставку данных меду двумя прикладными процессами. Процесс, получающий или отправляющий данные, с помощью транспортного уровня идентифицируется на этом уровне номером, который называется номером порта.

Таким образом, роль адреса отправителя и получателя на транспортном уровне выполняется номером порта. Анализируя заголовок своего пакета, полученного от межсетевого уровня, транспортный модуль определяет по номеру порта получателя по какому из прикладных процессов направленны данные и передает эти данные к соответствующему прикладному процессу.

Номер порта получателя и отправителя записывается в заголовок транспортным модулем отправляющим данные. Заголовок транспортного уровня содержит также и некоторую другую служебную информацию, и формат заголовка зависит от используемого транспортного протокола.

Средства транспортного уровня представляют собой функциональную надстройку над сетевым уровнем и решают две основных задачи:

  • обеспечение доставки данных между конкретными программами, функционирующими, в общем случае, на разных узлах сети;
  • обеспечение гарантированной доставки массивов данных произвольного размера.

В настоящее время в Интернет используются два транспортных протокола – UDP, обеспечивающий негарантированную доставку данных между программами, и TCP, обеспечивающий гарантированную доставку с установлением виртуального соединения.

Сравнение с моделью OSI

Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP, которая имеет только прикладной уровень над транспортным уровнем. Хотя некоторые чистые приложения протокола OSI, такие как X.400, также объединяют их, нет требования, чтобы стек протокола TCP/IP должен накладывать монолитную архитектуру над транспортным уровнем. Например, протокол NFS-приложений работает через протокол представления данных External Data Representation (XDR), который, в свою очередь, работает по протоколу Remote Procedure Call (RPC). RPC обеспечивает надежную передачу данных, поэтому он может безопасно использовать транспорт UDP с максимальным усилием.

Различные авторы интерпретировали модель TCP/IP по-разному и не согласны с тем, что уровень связи или вся модель TCP/IP охватывает проблемы первого уровня модели OSI (физический уровень) или предполагается, что аппаратный уровень ниже уровня канала.

Несколько авторов попытались включить слои 1 и 2 модели OSI в модель TCP/IP, поскольку они обычно упоминаются в современных стандартах (например, IEEE и ITU). Это часто приводит к модели с пятью слоями, где уровень связи или уровень доступа к сети разделяются на слои 1 и 2 модели OSI.

Например, считается, что уровни сеанса и представления пакета OSI включены в прикладной уровень пакета TCP/IP. Функциональность уровня сеанса можно найти в протоколах, таких как HTTP и SMTP, и более очевидна в таких протоколах, как Telnet и протокол инициации сеанса (SIP). Функциональность уровня сеанса также реализована с нумерацией портов протоколов TCP и UDP, которые охватывают транспортный уровень в наборе TCP/IP. Функции уровня представления реализуются в приложениях TCP/IP со стандартом MIME при обмене данными.

Конфликты очевидны также в оригинальной модели OSI, ISO 7498, когда не рассматриваются приложения к этой модели, например, ISO 7498/4 Management Framework или ISO 8648 Internal Organization of the Network layer (IONL). Когда рассматриваются документы IONL и Management Framework, ICMP и IGMP определяются как протоколы управления уровнем для сетевого уровня. Аналогичным образом IONL предоставляет структуру для «зависимых от подсетей объектов конвергенции», таких как ARP и RARP.

Протоколы IETF могут быть инкапсулированы рекурсивно, о чем свидетельствуют протоколы туннелирования, такие как Инкапсуляция общей маршрутизации (GRE). GRE использует тот же механизм, который OSI использует для туннелирования на сетевом уровне.
Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.

К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.

Вот как традиционно протоколы TCP/IP вписываются в модель OSI:

Распределение протоколов по уровням модели OSI
TCP/IP OSI
7 Прикладной Прикладной напр., HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
6 Представления напр., XDR, AFP, TLS, SSL
5 Сеансовый напр., ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP
4 Транспортный Транспортный напр., TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
3 Сетевой Сетевой напр., IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP
2 Канальный Канальный напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP
1 Физический напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение

Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представления и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.

Адреса сетевых сервисов

Для некоторых типов сервисов интернет, можно указывать не только IP адрес, но и порт на котором этот сервис работает. Для этого используются DNS записи типа SRV (Service record). Структуры этой записи достаточно сложны, вместо доменного имени указывается строка с описанием сервисов в специальном формате (_сервис._протокол.имя.-˃ приоритет вес порт имя).

Например, если мы хотим узнать на каком компьютере и на каком порту работает jabber сервер работающий по протоколу tcp в домене example.com мы получим вот такую запись (0 5 5269 xmpp.example.com). Проще всего разбирать её с конца. Сервис работает на компьютере с доменным именем xmpp.example.com порт 5269, приоритет 0, вес 5. Так же как и с почтовыми серверами, чем меньше значение приоритета, тем более высокий приоритет у сервера.

Резервный jabber сервер для этого домена работает на компьютере backup_xmpp.xample.com порт 5269 приоритет 20, вес 0. Вес используются для распределения нагрузки между разными серверами, которые имеют один и тот же приоритет.

Когда нужно использовать VPN

При использовании VPN ваш IP-адрес будет скрыт, а трафик перенаправляется через отдельный сервер, что обеспечивает безопасность работы в сети. Ситуации, когда целесообразно использовать VPN:

При использовании общедоступной сети Wi-Fi

При использовании общедоступной сети Wi-Fi, даже если она защищена паролем, рекомендуется использовать VPN. Если злоумышленники находится в той же сети Wi-Fi, они могут с легкостью отслеживать ваши данные. Базовая система безопасности, используемая в обычной общедоступной сети Wi-Fi, не обеспечивает надежной защиты от других пользователей в этой сети.

Использование VPN повышает уровень безопасности ваших данных, обеспечивает обход провайдера общедоступного Wi-Fi и шифрует все ваши сообщения.

В путешествии

При поездке в другую страну, например, в Китай, VPN обеспечивает доступ к недоступным в этой стране сервисам, например, к заблокированному в Китае Facebook. 

VPN позволяет использовать оплаченные видеосервисы, доступные в вашей стране, но недоступные в других странах из-за проблем с международным доступом. Использование VPN позволяет использовать сервисы, как если бы вы были дома. Путешественники также могут найти более дешевые авиабилеты при использовании VPN, поскольку цены для разных стран могут отличаться.

При удаленной работе

Это особенно актуально во время эпидемии COVID, когда многие работают удаленно. Часто работодатели требуют использования VPN для удаленного доступа к сервисам компании из соображений безопасности. При подключении к серверу вашего офиса, VPN предоставляет вам доступ к внутренним сетям и ресурсам компании, когда вы не в офисе. Такое же подключение возможно к вашей домашней сети, если вы не дома. 

Когда хочется конфиденциальности

Использование VPN полезно, даже если вы находитесь дома и пользуетесь интернетом в повседневных целях. При каждом входе на веб-сайт, сервер, к которому вы подключаетесь, регистрирует ваш IP-адрес и связывает его с другими данными о вас, которые есть на сайте: привычкам просмотра, переходам, времени, затрачиваемом на просмотр конкретных страниц. Эти данные затем могут быть проданы рекламным компаниям и использоваться для подбора персонализированной рекламы, поэтому реклама в интернете иногда кажется такой подозрительно личной. IP-адрес также можно использовать для отслеживания местоположения, даже если вы отключили сервис геолокации. Использование VPN не позволяет оставлять следы в сети.

Не забывайте и о мобильных устройствах. У них тоже есть IP-адреса и, вероятно, они используются в большем количестве мест, чем домашний компьютер, включая общие точки доступа Wi-Fi. Рекомендуется использовать VPN на мобильном устройстве при подключении к сети, которая не является полностью доверенной.

2021: Уязвимости в стеках TCP/IP затрагивают миллионы промышленных и IoT-устройств

13 апреля 2021 года стало известно о том, что исследователи безопасности из компании ForeScout совместно с экспертами JSOF обнаружили ряд уязвимостей в стеках TCP/IP, затрагивающий миллионы серверов, промышленных и «умных» устройств.

Уязвимости, получившие название NAME:WRECK, связаны с тем, как стеки TCP/IP обрабатывают DNS-трафик. Эксплуатация уязвимостей позволяет вызвать состояние «отказа в обслуживании» (DoS) или удаленно выполнить код (RCE). Таким образом злоумышленники могут отключить целевые устройства или перехватить контроль.

В общей сложности эксперты выявили девять уязвимостей в семи из пятнадцати стеков TCP/IP. Результаты анализа других восьми стеков показали, что FNET, cycloneTCP, uC/TCP-IP, FreeRTOS+TCP, Zephyr и OpenThread безопасно реализуют сжатие сообщений, в то время как Nut/Net и lwIP вовсе не поддерживали сжатие сообщений, и по умолчанию не были уязвимы.

Эксперты сообщили о своих находках разработчикам стеков, однако только FreeBSD, Nucleus NET и NetX получили исправления. IPNet все еще содержит уязвимости NAME:WRECK.

По словам специалистов, хотя выпуск исправлений может показаться обнадеживающим, на самом деле ситуация нет проста. Установка исправлений для «умных» устройств и промышленного оборудования обычно влечет за собой длительный период ожидания, в течение которого производители устройств должны будут интегрировать исправления и выпускать собственные обновления прошивки.

Большая часть оборудования может находится в удаленных местах и не поддерживать механизм обновления прошивки по воздуху (firmware-over-the-air, FOTA). Многие устройства, использующие уязвимые стеки TCP/IP, скорее всего, останутся уязвимыми к атакам в течение многих лет, в то время как другое оборудование может оставаться уязвимым до тех пор, пока оно не будет выведено из эксплуатации, полагают эксперты.

2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G

В 2015 году несколько операторов мобильной связи выявили проблемы с технологиями на основе TCP/IP, применяемыми в 4G. Сложности связаны с неэффективным использованием спектра в результате добавления функций мобильности, безопасности, качества обслуживания и других к протоколу, который никогда для них не разрабатывался. Последующие исправления и обходные пути, предназначенные для решения этих проблем, сами стали приводят к увеличению затрат, задержкам и большему энергопотреблению. Поэтому TCP/IP был признан не оптимальным для более продвинутых услуг 5G.

Группа по протоколам следующего поколения (ISG NGP) проанализировала проблемы и предложила альтернативные решения. По результатам работы были определены требования к технологиям-кандидатам, которые заключались в сильном уменьшении размеров заголовков, времени обработки пакетов и задержки на сети, но, кроме этого, в совместимости с текущими сетями TCP/IP, SDN и MPLS.

Надежность

Конструкция набора Интернет-протоколов придерживается принципа сквозного соединения , концепции, адаптированной из проекта CYCLADES . В соответствии с принципом непрерывности, сетевая инфраструктура считается ненадежной по своей природе на любом отдельном сетевом элементе или среде передачи и является динамичной с точки зрения доступности каналов и узлов. Не существует централизованного мониторинга или средства измерения производительности, отслеживающего или поддерживающего состояние сети. В целях снижения сложности сети интеллектуальные ресурсы сети намеренно размещаются в конечных узлах .

Вследствие такой конструкции Интернет-протокол обеспечивает доставку только с максимальной эффективностью, а его услуги характеризуются как ненадежные . На языке сетевой архитектуры это протокол без установления соединения , в отличие от связи с установлением соединения . Могут возникнуть различные неисправности, такие как повреждение данных , потеря пакетов и дублирование. Поскольку маршрутизация является динамической, что означает, что каждый пакет обрабатывается независимо, и поскольку сеть не поддерживает состояние на основе пути предыдущих пакетов, разные пакеты могут направляться в один и тот же пункт назначения по разным путям, что приводит к неупорядоченной доставке в адрес. приемник.

Все неисправные состояния в сети должны обнаруживаться и компенсироваться участвующими конечными узлами. Протоколы верхнего уровня набора Интернет-протоколов отвечают за решение проблем с надежностью. Например, хост может буферизовать сетевые данные, чтобы гарантировать правильный порядок, прежде чем данные будут доставлены в приложение.

IPv4 обеспечивает защиту, гарантирующую, что заголовок IP-пакета не содержит ошибок. Узел маршрутизации отбрасывает пакеты, не прошедшие проверку контрольной суммы заголовка . Хотя протокол управляющих сообщений Интернета (ICMP) обеспечивает уведомление об ошибках, узел маршрутизации не требуется уведомлять любой конечный узел об ошибках. IPv6, напротив, работает без контрольных сумм заголовков, поскольку предполагается , что текущая технология канального уровня обеспечивает достаточное обнаружение ошибок.

Установление соединения TCP

Давайте теперь посмотрим, как устанавливается TCP-соединения. Предположим, что процесс, работающий на одном хосте, хочет установить соединение с другим процессом на другом хосте. Напомним, что хост, который инициирует соединение называется «клиентом», в то время как другой узел называется «сервером».

Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).

  • Запрашивающая сторона (которая, как правило, называется клиент) отправляет SYN сегмент, указывая номер порта сервера, к которому клиент хочет подсоединиться, и исходный номер последовательности клиента (ISN).
  • Сервер отвечает своим сегментом SYN, содержащим исходный номер последовательности сервера. Сервер также подтверждает приход SYN клиента с использованием ACK (ISN + 1). На SYN используется один номер последовательности.
  • Клиент должен подтвердить приход SYN от сервера своим сегментов SYN, содержащий исходный номер последовательности клиента (ISN+1) и с использованием ACK (ISN+1). Бит SYN установлен в 0, так как соединение установлено.

После установления соединения TCP, эти два хоста могут передавать данные друг другу, так как TCP-соединение является полнодуплексным, они могут передавать данные одновременно.

Internet Layer

An internet layer is a second layer of TCP/IP layes of the TCP/IP model. It is also known as a network layer. The main work of this layer is to send the packets from any network, and any computer still they reach the destination irrespective of the route they take.

The Internet layer offers the functional and procedural method for transferring variable length data sequences from one node to another with the help of various networks.

Message delivery at the network layer does not give any guaranteed to be reliable network layer protocol.

Layer-management protocols that belong to the network layer are:

  1. Routing protocols
  2. Multicast group management
  3. Network-layer address assignment.

The Network Interface Layer

Network Interface Layer is this layer of the four-layer TCP/IP model. This layer is also called a network access layer. It helps you to defines details of how data should be sent using the network.

It also includes how bits should optically be signaled by hardware devices which directly interfaces with a network medium, like coaxial, optical, coaxial, fiber, or twisted-pair cables.

A network layer is a combination of the data line and defined in the article of OSI reference model. This layer defines how the data should be sent physically through the network. This layer is responsible for the transmission of the data between two devices on the same network.

История

Протокол управления передачей ранее был известен как «Программа управления передачей». Создание интернета, хотя многие утверждают, что он был изобретен, в основном можно отнести на счет Винт Серфа и Боба Хана. Одним из других примечательных имен в Интернет-технологиях является Джон Постел, который представил концепцию «стека протоколов», который также используется в протоколах TCP/IP. Это относится к их опубликованной в мае 1974 года работе под названием «Программа для взаимодействия по пакетным сетям». Он был опубликован Институтом инженеров электротехники и электроники при спонсорской поддержке Министерства обороны Соединенных Штатов Америки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector