Теория:протоколы:tcp
Содержание:
- Что такое TCP/IP
- Сетевые протоколы UDP, TCP, ICMP
- Типы ICMP — сообщений
- Преимущества и применение UDP
- Протокол DNS
- Транспортный уровень
- Известные проблемы
- TCP или UDP?
- Применение TCP
- Когда и почему следует сбрасывать стек TCP/IP
- Адресация
- Типы IP-адресов
- Что такое таблицы маршрутизации
- Принцип работы протокола IPv4
- Специальные типы IP-адресов
Что такое TCP/IP
TCP/IP — это набор протоколов, специальных правил, которые упорядочивают и обеспечивают надежный обмен информацией среди устройств, объединенных в сеть. Это может быть локальная сетка из двух компьютеров, так и глобальная паутина.
Полностью пишется, как, Transmission Control Protocol/Internet Protocol, что в переводе означает — Протокол управления передачи/Интернета.
Позволяет взаимодействовать между собой устройствам, находящимся в разных сетях и с различными операционными системами, например, между Windows, Mac OS, Linux и т.д.
Название данного стека — набора правил сложилось из основных двух:
- Протокол IP — берет на себя задачу по адресации, определяет, где в передаваемых данных: адрес, содержимое.
- Протокол TCP — обеспечивает и контролирует надежную передачу информации и ее целостность.
Также включает в себя и другие, но так, как эти являются базовыми, закрепилось именно такое называние. Как видите, все оказалось довольно просто.
Как работает TCP/IP — принцип работы
У каждого компьютера и ноутбука в сети есть свой уникальный ip адрес. Программы, которые используются на компьютере применяют свой уникальный порт для их идентификации. Порт необходим, чтобы программы различали друг друга, т.к. только по айпи будет не понятно, какой софт запрашивает информацию и куда ее следует отправлять.
Так обмениваются между собой программы по сети:
Программа 1 — отправитель:
IP адрес: 192.168.0.32
Порт: 2054
Программа 2 — получатель:
IP адрес: 192.168.0.34
Порт: 2071
Пересылаемые данные пакета:
— — —
IP — это уникальный адрес компьютера. Порт — это идентификатор приложение установленного на нем. Связка, IP + порт называется — сокет.
Стек протоколов TCP/IP
Стек разделяется на четыре уровня, в каждом из которых свои протоколы. Все они функционируют одновременно, поэтому у каждого есть свои правила, чтобы они работали без перебоев и конфликтов.
1. Прикладной / Для приложений. Это: HTTP, SMTP, DNS, FTP и т.д. Т.е. Веб, почта, передача файлов и прочее.2. Транспортный. Это: TCP, UPD и т.д. Отвечает за связь между компьютерами и за доставку данных.3. Сетевой (межсетевой). IP, IGMP и т.д. Отвечает за адресацию.4. Канальный / Сетевые интерфейсы. Это: Ethernet, Wi-Fi, DSL.
На этом стеке и реализовано все взаимодействие пользователей в IP сетях. Также, существуют и другие стеки: OSI, IPX/SPX, IPX/SPX.
В заключение
Вот вы и узнали, что это такое, постарался объяснить все просто, для «чайников». Следующие материалы также будут посвящены технологии передачи данных в интернете.
Сетевые протоколы UDP, TCP, ICMP
В рамках протокола TCP/IP для передачи данных используются протоколы — TCP и UDP. Многие наверняка слышали, что есть порты как TCP, так и UDP, но не все знают в чем разница и что это вообще. И так..
Передача данных по протоколу TCP (Transmission Control Protocol — Протокол Управления Передачей) предусматривает наличие подтверждений получения информации. «-Ну, мол, — получил? -Получил!» Если же передающая сторона не получит в установленные сроки необходимого подтверждения, то данные будут переданы повторно. Поэтому протокол TCP относят к протоколам, предусматривающим соединение, а UDP (User Datagram Protocol — Протокол Пользовательских Датаграмм) — нет. UDP применяется в тех случаях, когда не требуется подтверждения приема (например, DNS-запросы или IP-телефония (яркий представитель которой, — Skype) ). То есть разница заключается в наличии подтверждения приема. Казалось бы «Всего то!», но на практике это играет важную роль.
Есть еще так же протокол ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений), который используется для передачи данных о параметрах сети. Он включает в себя служебные типы пакетов, таки как ping, distination unreachable, TTL и пр.
Типы ICMP — сообщений
Самое важно в пакете ICMP это тип сообщений. Именно тип, говорит о том, что произошло в сети
Есть 2 вида ICMP сообщений. Первый вид это запрос-ответ.
- Например, тип 0 и тип 8 это эхо-ответ и эхо-запрос, которые используются для проверки доступности компьютера в сети.
- Тип 13 и 14 запрос и ответ отметки времени. Эти запросы используются для проверки быстродействия сети. Другой вид это сообщение без запроса.
- Тип 3 это сообщение об ошибке узел назначения недостижим.
- Тип 5 сообщение о новом маршруте, который позволяет быстрее попасть к необходимой сети.
- Тип 9 сообщение о маршрутизаторе. Маршрутизаторы в сети периодически рассылают такие сообщения, чтобы компьютеры, которые находятся в сети могли узнать, какие есть маршрутизаторы.
- Тип 10 запрос сообщения о маршрутизаторе, если компьютер только что подключился к сети, он может не дожидаться периодического сообщения от маршрутизаторов, отправить такой запрос и маршрутизатор сразу отправит ответ о себе.
- Сообщение с типом 11 используется если маршрутизатор отбросил пакет время жизни которого истекло, как правило такая ситуация возникает, если в сети появилась петля.
- Сообщение с типом 12 — проблемы с параметрами, говорит о том, что в заголовке IP какая-то ошибка и маршрутизатор не может отправить такой пакет.
Преимущества и применение UDP
Преимущество UDP в том, что протокол обеспечивает более высокую скорость работы по сравнению с TCP, так как у него нет накладных расходов на установку и на разрыв соединения.
Ошибки в современных сетях происходят достаточно редко и сетевые приложения способны самостоятельно исправлять такие, редко возникающие ошибки.
Область применения UDP — это системы, которые работают в режиме запрос-ответ и обмениваются между собой короткими сообщениями.
Применение UDP: DNS
В качестве применения UDP рассмотрим систему доменных имен DNS. DNS позволяют определить по доменному имени соответствующий ему IP-адрес. Например к доменному имени www.cisco.com соответствует вот такой IP адрес 184.86.0.170. Система DNS использует протокол UDP, порт 53.
Рассмотрим пример сетевого взаимодействия в DNS. В системе DNS есть сервер, который знает какие IP-адреса соответствуют доменным именам и клиент, который хочет получить такую информацию. Клиент DNS направляет запрос серверу, какой IP у доменного имени www.cisco.com? Сервер DNS получает такой запрос, находит соответствующий IP-адрес и отправляет ответ (184.86.0.170) взаимодействие происходит с использованием протокола UDP и для получения IP-адреса достаточно всего две дейтаграммы.
Если бы для запроса IP-адреса использовался протокол TCP, то необходимо было бы передать гораздо больше сообщений. Перед тем как запрашивать IP-адрес необходимо было бы установить соединение TCP. Для этого нужно 3 сообщения, затем запросить IP-адрес, получить ответ (еще 2 сообщения) и после того, как ответ получен нужно разорвать соединение, для этого нужно 3 или 4 сообщения.
Протокол DNS
Протокол DNS использует модель клиент-сервер, причем в качестве клиента может выступать, как клиент DNS, так и сервер DNS, которые работают в рекурсивном режиме. В этом случае сервер DNS пересылают запросы другим серверам DNS и выступает в качестве клиента. Взаимодействие ведется в режиме запрос-ответ, соединение не устанавливается, используется протокол UDP, номер порта 53.
Формат пакета DNS
Пакет DNS состоит из двух частей заголовок и данные. Заголовок свою очередь состоит из шести полей.
- Первое поле это идентификатор запроса, любое целое число должно быть одинаково в запросе и ответе.
- Поле флаги мы его рассмотрим подробнее.
- И четыре поля, которые указывают сколько у нас данных в пакете. Количество DNS запросов, количество DNS ответов, количество ответов об авторитетных серверах и количество дополнительных ответов.
- В поле данных у нас содержится информация о запросах DNS, где мы указываем доменное имя компьютера для которого хотим узнать ip-адрес.
- Ответов DNS в которых содержится ip-адрес необходимого нам компьютера.
- Поле авторитетные серверы используется ветеративном режиме работы, здесь указываются ip-адреса серверов, которые отвечают за интересующую нас DNS зону.
- И в поле дополнительной информации указываются некоторые дополнительные записи, которые могут быть нам полезны.
В одном и том же DNS пакете может быть несколько запросов DNS и несколько ответов, в том числе несколько ответов на один запрос, если одному доменному имени соответствует несколько ip-адресов.
Флаги
Поле флаги состоит из нескольких полей:
- Поле QR — тип операции запрос (0) или ответ (1).
- Поле OPCODE (4 бита) — тип запроса, но на практике используются только 0-стандартный запрос.
- Флаг AA указывает, является полученный ответ авторитетным (1) или нет (0).
- Флаг TC говорит о том был пакет обрезан (1) или не был (0).
- Флаг RD указывается только в запросах, если этот флаг установлен, клиент просит сервер работать в рекурсивном режиме.
- Флаг RA используется только в ответах, с помощью этого флага сервер сообщает, что он может работать в рекурсивном режиме.
- Флаг Z зарезервирован для будущего использования.
- RCODE (4 бита) последние четыре бита это статус выполнение операции, статус 0 говорит о том что операция прошла успешно, любые другие коды говорят о том что произошла какая-то ошибка.
Формат запроса DNS
Формат DNS запроса очень простой, содержит имя, тип и класс записи.
Например, имя www.yandex.ru, тип записи 1, (запись типа A) отображение доменного имени в ip- адрес. В системе DNS также используются другие типы записей. Класс записи 1 (IN, Интернет) код единица, других классов записей в системе DNS сейчас не используется.
Формат ответа DNS
Формат DNS ответа более сложный, первые три поля точно такие же имя, тип записи и класс записи. Затем указывается время жизни, это время на которые запись может сохранить в кэше DNS resolver, затем указывается длина данных и собственно данные ответа.
Пример, ответа DNS имя www.yandex.ru, запись типа A, класс записи интернет, время жизни 90 секунд, однако администратор DNS resolver может принудительно установить другое время жизни. Длина данных измеряется в байтах, 4 байта и ip-адрес сервера www.yandex.ru.
Транспортный уровень
На транспортном уровне полученная информация обрабатывается как единый блок, вне зависимости от содержимого. Полученные сообщения делятся на сегменты, к ним добавляется заголовок, и все это отправляется ниже.
Протоколы передачи данных:
- TCP;
- UDP.
TCP (Transmission Control Protocol) — самый распространенный протокол. Он отвечает за гарантированную передачу данных. При отправке пакетов контролируется их контрольная сумма, процесс транзакции. Это значит, что информация дойдет «в целости и сохранности» независимо от условий.
UDP (User Datagram Protocol) — второй по популярности протокол. Он также отвечает за передачу данных. Отличительное свойство кроется в его простоте. Пакеты просто отправляются, не создавая особенной связи.
Известные проблемы
Максимальный размер сегмента
TCP требует явного указания максимального размера сегмента (MSS) в случае, если виртуальное соединение осуществляется через сегмент сети, где максимальный размер блока (MTU) менее, чем стандартный MTU Ethernet (1500 байт).
В протоколах туннелирования, таких как GRE, IPIP, а также PPPoE MTU туннель меньше, чем стандартный, поэтому сегмент TCP максимального размера имеет длину пакета больше, чем MTU. Это приводит к фрагментации и уменьшению скорости передачи полезных данных.
Если на каком-либо узле фрагментация запрещена, то со стороны пользователя это выглядит как «зависание» соединений. При этом «зависание» может происходить в произвольные моменты времени, а именно тогда, когда отправитель использовал сегменты длиннее допустимого размера. Для решения этой проблемы на маршрутизаторах применяются правила Firewall-а, добавляющие параметр MSS во все пакеты, инициирующие соединения, чтобы отправитель использовал сегменты допустимого размера.
MSS может также управляться параметрами операционной системы.
Обнаружение ошибок при передаче данных
Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым. Так, в 2008 году ошибка в передаче одного бита, не обнаруженная сетевыми средствами, привела к остановке серверов системы Amazon Web Services.
В общем случае распределенным сетевым приложениям рекомендуется использовать дополнительные программные средства для гарантирования целостности передаваемой информации.
Атаки на протокол
Недостатки протокола проявляются в успешных теоретических и практических атаках, при которых злоумышленник может получить доступ к передаваемым данным, выдать себя за другую сторону или привести систему в нерабочее состояние.
TCP или UDP?
У каждого из этих протоколов есть своя область применения. Она логически обусловлена особенностями работы.
Основное преимущество UDP заключается в скорости передачи. TCP является сложным протоколом с множеством проверок, в то время как UDP представляется более упрощенным, а значит, и более быстрым.
Недостаток кроется в простоте. Ввиду отсутствия проверок не гарантируется целостность данных. Таким образом, информация просто отправляется, а все проверки и подобные манипуляции остаются за приложением.
UDP используется, например, для просмотра видео. Для видеофайла не критична потеря небольшого количества сегментов, в то время как скорость загрузки – важнейший фактор.
Однако если необходимо отправить пароли или реквизиты банковской карты, то необходимость использования TCP очевидна. Потеря даже самой мизерной части данных может повлечь за собой катастрофические последствия. Скорость в этом случае не так важна, как безопасность.
Применение TCP
Из сказанного выше следует, что TCP – это протокол повышенной сложности, работа которого сопровождается большими тратами времени. Причиной этого является механизм синхронизации между узлами. При этом основное преимущество данного протокола заключается в гарантии доставки пакетов, благодаря чему эта функциональность не включается в структуру прикладного протокола.
Кроме того, применение протокола TCP является гарантией надежности доставки. В случае некорректной отправки сообщения пользователь всегда получит соответствующее уведомление в виде окна с информацией о возникшей ошибке.
Когда и почему следует сбрасывать стек TCP/IP
Со временем Windows сохраняет кэш сетевых данных, включая IP-адреса. В системном реестре также есть параметры, которые напрямую связаны с интернет-протоколом. В любой момент они могут быть повреждены, что приведет к невозможности подключения к Интернету, даже если все остальные настройки выполнены правильно.
Повреждение стека может даже быть причиной того, что трафик вашего компьютера направляется на старый IP-адрес и не может обновить новый в кеше.
Иногда недостаточно изменить IP-адрес вашего компьютера или просто перезапустить его. Именно тогда пользователь должен прибегнуть к этому решению и сбросить свои настройки TCP / IP.
Адресация
Для адресации в стеке протоколов TCP/IP используются три типа адресов:
- Локальные.
- Сетевые.
- Доменные имена.
Локальными называются MAC-адреса. Они используются для адресации в таких технологиях локальной сети как, например, Ethernet. В контексте TCP/IP слово «локальные» означает, что они действуют лишь в пределах подсети.
Сетевым адресом в стеке протоколов TCP/IP является IP-адрес. При отправке файла из его заголовка считывается адрес получателя. С его помощью маршрутизатор узнает номер хоста и подсеть и, основываясь на этой информации, прокладывает маршрут к конечному узлу.
Доменные имена – это удобочитаемые адреса веб-сайтов в Интернете. Веб-сервера в сети Интернет доступны по публичному IP-адресу. Он успешно обрабатывается компьютерами, однако для людей представляется слишком неудобным. Для того чтобы избежать подобных сложностей, используются доменные имена, которые состоят из областей, называемых «доменами». Они располагаются в порядке строгой иерархии, от верхнего уровня к нижнему.
Домен первого уровня представляет конкретную информацию. Общие (.org, .net) не ограничены какими-либо строгими границами. Обратная ситуация — с локальными (.us, .ru). Они, как правило, привязаны территориально.
Домены низших уровней – это все остальное. Он может быть любого размера и содержать любое количество значений.
Например, «www.test.quiz.sg» – корректное доменное имя, где «sg» — локальный домен первого (верхнего) уровня, «quiz.sg» — домен второго уровня, «test.quiz.sg» — домен третьего уровня. Доменные имена также могут называться DNS-именами.
DNS (Domain Name System) устанавливает соответствие между доменными именами и публичным IP-адресом. При наборе доменного имени в строке браузера DNS обнаружит соответствующий IP-адрес и сообщит устройству. Устройство обработает этот машинный код и вернет его в виде веб-страницы.
Типы IP-адресов
В IPv4 используется 3 типа адресов:
- Индивидуальный (unicast);
- Групповой (multicast);
- Широковещательный (broadcast).
- Индивидуальный адрес — это адрес конкретного компьютера, именно такие адреса мы рассматривали выше.
- Групповой адрес — это адрес, который используется несколькими ПК. Если вы отправите данные на этот адрес, его получит несколько компьютеров в сети которые входит в эту группу.
- Широковещательный адрес — это такой адрес, который используется для получения данных всеми компьютерами в сети.
Широковещательный адрес
Широковещательный адрес в IP имеют следующий формат: (1.18)
- IP-адрес: 213.180.193.3/24
- Широковещательный адрес: 213.180.193.255
Часть которая относится к адресу сети остается без изменений, а в той части, которая относится к адресу хоста записываются в битовые единицы.
Мы уже встречались с широковещательными адресами в технологии канального уровня Ethernet. Важным отличием широковещательных адресов в сетевом уровне, является то, что широковещательные адреса используются только в пределах в одной подсети.
Маршрутизаторы не передают широковещательные пакеты в другую сеть, иначе можно очень быстро завалить всю глобальную сеть, в том числе весь Интернет, мусорными широковещательными пакетами.
Два широковещательных адреса
В IP используется 2 типа широковещательных адресов подходящих для двух различных сценарий (2.22)
Предположим что у нас есть 2 подсети объединенные между собой маршрутизатором. Если мы хотим отправить широковещательный пакет в рамках одной сети это называется ограниченное широковещание. В этом случае мы может использовать специальный широковещательный адрес, который состоит из всех битовых единиц (255.255.255.255). В этом случае данные получат все компьютеры в сети, а через маршрутизатор данные не пройдут.
Другой сценарий, когда компьютер, который находится за пределами нашей сети, хочет передать широковещательный пакет всем компьютерам, которые находится в нашей сети это называется направленное широковещание. В этом случае широковещательный IP адрес будет выглядеть 192.168.0.255, адрес подсети, в которую мы хотим отправить широковещательный пакет и битовые единицы в той части, которая относится к адресу хоста. Как произойдет обработка такого пакета? Пакет передаётся маршрутизатору и маршрутизатор уже разошлёт этот пакет в широковещательном режиме, но только в передах одной подсети, для которой предназначается этот широковещательный пакет.
Что такое таблицы маршрутизации
И вот мы плавно добрались и до них. И так.. Что же за таблицы такие.
Организация или пользователь может иметь несколько точек подключения к Интернету (например, резервные каналы на случай, если у первого провайдера что-то выйдет из строя, а интернет таки очень нужен) или содержать в своей структуре несколько IP-сетей. В этом случае, чтобы система знала каким путем (через какой шлюз) посылать ту или иную информацию, используются таблицы маршрутизации. В таблицах маршрутизации для каждого шлюза указываются те подсети Интернета, для которых через них должна передаваться информация. При этом для нескольких шлюзов можно задать одинаковые диапазоны, но с разной стоимостью передачи данных: например, информация, будет пересылаться по каналу, имеющему самую низкую стоимость, а в случае выхода его из строя по тем или иным причинам, автоматически будет использоваться следующее доступное наиболее дешевое соединение.
Принцип работы протокола IPv4
Internet Protocol представляет собой датаграмму, содержит заголовок и полезную нагрузку. Заголовок шифрует адреса источника и назначение информационного пакета, в то время как полезная нагрузка переносит фактические данные. В отличие от сетей прямой коммутации канала, критичных к выходу из строя любого транзитного узла, передача данных с помощью интернет-протокола IPv4 осуществляется пакетным способом. При этом используются разные маршруты передачи ip-пакетов. Допустима ситуация, когда пакеты нижнего уровня достигают конечного узла раньше, чем пакеты верхнего. Некоторые из них теряются во время трансляции. В этом случае посылается повторный запрос, происходит восстановление потерянных фрагментов.
Каждый сетевой узел в модели TCP/IP имеет собственный IP-адрес. Это обеспечивает гарантированную идентификацию устройств при установке соединения и обмене данными. В то же время отличают два уровня распределения адресов по протоколу TCP/ IPv4 – публичные и частные. Первые уникальны для всех без исключения устройств, осуществляющих обмен данными в общемировой WEB-сети. Например, IP-адрес 8.8.8.8 принадлежит компании Google и является адресом публичного DNS-сервера компании. При построении локальной подсети Ethernet идентификация внутренних устройств передачи данных осуществляется путем назначения собственных ip-адресов для каждой единицы оборудования. Коммутация осуществляется через порты роутера (маршрутизатора), каждому присваивается отдельный сетевой адрес с возможным дополнительным разделением на подсети за счет использования маски IP-адреса.
Изначально адресация в IP-сетях систематизировалась по классовому принципу путем деления на большие блоки, что делало ее неудобной в использовании как конечными пользователями, так и провайдерами. Ей на смену пришла бесклассовая схема под названием Classless Inter-Domain Routing (CIDR).
Основной атрибут протокола TCP/IPv4, его адрес, состоит из тридцати двух бит (четырех байт) и записывается четырьмя десятичными числами от 0 до 255, которые разделены точками. Есть альтернативные способы записи (двоичное, десятичное, без точки и т.д.), но они не меняют принципа работы протокола. В стандартном формате запись CIDR производится в виде IP-адреса, следующего за ним символа «/» и числа, обозначающего битовую маску подсети: 13.14.15.0/24. В данной комбинации число 24 означает количество битов в маске подсети, имеющих приоритетное значение. Полный IP-адрес состоит из 32 бит, маской являются старшие 24, соответственно, общее количество возможных адресов в сети составит 32 — 24 = 8 бит (256 IP-адресов). В этом диапазоне описываются сети, состоящие из различного количества доступных адресов путем их вариативной комбинации. Одна большая сеть может быть раздроблена на несколько более мелких подсетей нижнего уровня.
Специальные типы IP-адресов
Какие бывают специальные типы IP адресов:
В номере хоста нельзя использовать только битовые 0, и только битовые 1. Если мы укажем только битовые 0, то это получится не адрес хоста, а адрес подсети 213.180.193.0.
А если укажем только битовые 1, то это будет широковещательный адрес. 213.180.193.255.
Часто, маршрутизатору по умолчанию в сети, или шлюзу, через которые все компьютеры сети попадают в интернет, присваивают адрес с номером 1. Однако четких правил нет, так делать не обязательно 213.180.193.1.Адрес который состоит из всех 0.0.0.0 это адрес текущего хоста. Он используется, когда компьютер еще не получил свой IP адрес.
Адрес из всех битовых единиц, 255.255.255.255 это все хосты в текущей подсети (ограниченный широковещательный адрес).
127.0.0.0/8 это обратная петля, специальный диапазон адресов, который выделен для того чтобы отлаживать сетевые приложения, если у вас нет сетевого оборудование или оно настроено не так как вам нужно, в этом случае данные не отправляются в сеть, а приходят обратно на компьютер. Часто из этой сети используется адрес 127.0.0.1 это текущий компьютер (localhost). Однако не обязательно для этой цели использовать адрес с хостом 1, можно использовать 2, 3 или другой любой IP адрес из этого диапазона. IP адреса из подсети 169.254.0.0/16 называются Link-local адреса. Случае если вы не настроили IP адрес на своем ПК вручную или каким либо другим способом, например с помощью протокола DHCP, то операционная система сама может назначить компьютеру адрес из этого диапазона. Такие адреса могут использоваться только в пределах подсети и не проходят через маршрутизатор.