Стек протоколов tcp/ip: структура, уровни, настройка. интернет-протоколы

TCP протокол

TCP — это транспортный протокол, является частью стека протоколов TCP IP, он выполняет функции управления передачей данных и следит за их сохранностью, считается надежным. Расшифровывается как Transmission Control Protocol (протокол управления передачей).

Это стандарт, который определяет как нужно устанавливать связь и поддерживать ее, чтобы две программы могли обмениваться данными между собой.

Является именно надежным протоколом так как:

1. Использует логическое соединение, благодаря чему обеспечивается надежная доставка данных.2. Пронумеровывает передаваемые пакеты данных и проверяет их доставку, принимающая сторона высылает подтверждение о получении, в случае потери каких-либо пакетов создается повторная передача.3. Делит передаваемые данные на части — пакеты данных, затем передает их нижнему уровню, и собирает их, когда они приходят к получателю.4. Проверяет контрольную сумму передаваемых пакетов, если она отличается — создается новая отправка.5. Проверяет пакеты на дубликаты, в случае обнаружения таковых — уничтожает.6. Контролирует скорость передачи.

Заголовок TCP протокола

Весит 20 байт, если нет дополнительных опций, вот как он выглядит:

У каждого TCP сегмента указывается порт источника и назначения, с помощью которых происходит идентификация отправляющего и принимающего приложения. Эти порты вместе с IP адресами уникально идентифицируют каждое соединение. Комбинация IP и порта — это сокет (socket).

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

Остальные значения можно понять из самой картинки. Разве, что размер окна — он скользящий, т.е. зависит от качества сети. Если много данных теряется он может уменьшаться и наоборот. Он регулирует количество передаваемых байтов.

А флаги: URG, ACK, PSH и т.д. — описывают дополнительные значения сегмента, так, например, флаг FIN применяется для завершения соединения.

Уровни и протоколы TCP/ IP

Протоколы TCP и IP совместно управляют потоками данных ( как входящими, так и исходящими) в сети. Но если протокол IP просто передает пакеты, не обращая внимания на результат, TCP должен проследить за тем, чтобы пакеты прибыли в положенное место. В частности, TCP отвечает за выполнение следующих задач:

o Открытие и закрытие сеанса.

o Управление пакетами.

o Управление потоком данных.

o Обнаружение и обработка ошибок.

Модель TCP/IP

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

Семейство протоколов TCP/IP

Семейство протоколов IP состоит из нескольких протоколов, часто обозначаемых общим термином “TCP/IP”:

o IP – протокол межсетевого уровня;

o TCP – протокол межхостового уровня, обеспечивающий надежную доставку;

o UDP – протокол межхостового уровня, не обеспечивающий надежной доставки;

o ICMP – многоуровневый протокол, упрощающий контроль, тестирование и управление в сетях IP. Различные протоколы ICMP распространяются на межхостовой и прикладной уровни.

Связи между этими протоколами изображены на рисунке.

Протокол IP

Протокол IP (Internet Protocol) является самым распространенным межсетевым протоколом в мире. Функциональность протокола определяется объемом данных, хранящихся в заголовках. Структура заголовков IP, а, следовательно, и его возможности первоначально определялись в серии RFC и других общедоступных документов, которые были опубликованы еще во времена создания группы IETF. Обычно считается, что базовым документом для современной версии IP является RSC 791 («internet protocol», Postel, J.B; 1981).

Благодаря неустанной работе IETF протокол IP постоянно развивается. В последующих RFC (Request for Comments) были добавлены многочисленные новые возможности. Тем не менее, все они строятся на основе, заложенной в RFC 791. С архитектурной точки зрения текущая версия IP имеет номер 4 (Ipv4). Со временем новая версия (Ipv6) постепенно вытеснит Ipv4, но в настоящее время повсеместно поддерживается стандарт Ipv4.

Уровни OSI

Для наглядности процесс работы сети принято разделять на 7 уровней, на каждом из которых работает своя группа протоколов.

Для выполнения разных задач имеется несколько протоколов, которые занимаются обслуживанием систем, например, стек TCP/IP. Давайте здесь внимательно посмотрим на то, каким образом информация с одного компьютера отправляется по локальной сети на другой комп.

Задачи компьютера ОТПРАВИТЕЛЯ:

  • Взять данные из приложения
  • Разбить их на мелкие пакеты, если большой объем
  • Подготовить к передаче, то есть указать маршрут следования, зашифровать и перекодировать в сетевой формат.

Задачи компьютера ПОЛУЧАТЕЛЯ:

  • Принять пакеты данных
  • Удалить из него служебную информацию
  • Скопировать данные в буфер
  • После полного приема всех пакетов сформаровать из них исходный блок данных
  • Отдать его приложению

Для того, чтобы верно произвести все эти операции и нужен единый свод правил, то есть эталонная модель OSI.

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

Разберем их подробнее.

6. Уровень представления (Presentation Layer)

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

5. Сеансовый уровень (Session Layer)

У него много задач.

  1. Установить сеанс связи с получателем. ПО предупреждает компьютер-получатель о том, что сейчас ему будут отправлены данные.
  2. Здесь же происходит распознавание имен и защита:
    • идентификация — распознавание имен
    • аутентификация — проверка по паролю
    • регистрация — присвоение полномочий
  3. Реализация того, какая из сторон осуществляет передачу информации и как долго это будет происходить.
  4. Расстановка контрольных точек в общем потоке данных для того, чтобы в случае потери какой-то части легко было установить, какая именно часть потеряна и следует отправить повторно.
  5. Сегментация — разбивка большого блока на маленькие пакеты.

4. Транспортный уровень (Transport Layer)

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

  • Протоколы, которые ориентированы на соединение — они отслеживают доставку данных и при необходимости запрашивают повторную отправку при неудаче. Это TCP — протокол контроля передачи информации.
  • Не ориентированные на соединение (UDP) — они просто отправляют блоки и дальше не следят за их доставкой.

3. Сетевой уровень (Network Layer)

Обеспечивает сквозную передачу пакета, рассчитывая его маршрут. На этом уровне в пакетах ко всей предыдущей динформации, сформированной другими уровнями, добавляются IP адреса отправителя и получателя. Именно с этого момент пакет данных называется собственно ПАКЕТОМ, у которого есть IP адреса (IP протокол — это протокол межсетевого взаимодействия).

2. Канальный уровень (Data Link Layer)

Здесь происходит передача пакета в пределах одного кабеля, то есть одной локальной сети. Он работает только до пограничного маршрутизатора одной локальной сети. К полученному пакету канальный уровень добавляет свой заголовок — MAC адреса отправителя и получателя и в таком виде блок данных уже называется КАДРОМ.

При передачи за пределы одной локальной сети пакету присваивается MAC не хоста (компьютера), а маршрутизатора другой сети. Отсюда как раз появляется вопрос серых и белых IP, о которых шла речб в статье, на которую была выше дана ссылка. Серый — это адрес внутри одной локальной сети, который не используетс яза ее пределами. Белый — уникальный адрес во всем глобальном интернете.

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

1. Физический уровень (Transport layer)

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

Восстановление после ошибок TCP

Чтобы понять, что делают протоколы транспортного уровня, вы должны вспомнить об уровне выше транспортного уровня, об уровне приложений. Зачем? Каждый уровень предоставляет услуги вышестоящему уровню, например, восстановление после ошибок, предоставляемое протоколом TCP протоколам прикладного уровня.

Например, Роб и Гарри использовали HTTP для передачи домашней страницы с веб-сервера Гарри в веб-браузер Роба (). Но что произошло бы, если бы HTTP-запрос GET Роба был потерян при передаче через сеть TCP/IP? Или что произошло бы, если бы ответ Гарри, в который входил контент домашней страницы, был утерян? Как и следовало ожидать, в любом случае страница не отобразилась бы в браузере Роба.

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

Рисунок 1 – Служба восстановления после ошибок TCP, предоставленная протоколу HTTP

На рисунке 1 показан веб-сервер Гарри, отправляющий веб-страницу веб-браузеру Роба, используя три отдельных сообщения

Обратите внимание, что на этом рисунке показаны те же заголовки HTTP, что и на , а также на нем показаны заголовки TCP. В заголовках TCP показан порядковый номер () каждого сообщения

В данном примере в сети возникла проблема, и сеть не может доставить сообщение TCP (называемое сегментом) с порядковым номером 2. Когда Роб получает сообщения с порядковыми номерами 1 и 3, но не получает сообщение с порядковым номером 2, он понимает, что сообщение 2 было потеряно. Эта реализация TCP-логики заставляет Роба отправить TCP-сегмент обратно Гарри с просьбой снова отправить сообщение 2.

IP-адреса: сети и узлы

IP-адрес — это 32-разрядный номер, однозначно определяющий узел (компьютер или другое устройство, например, принтер или маршрутизатор) в сети TCP/IP.

IP-адреса обычно выражаются в точечно-десятичном формате с четырьмя числами, разделенными точками, например 192.168.123.132. Чтобы определить, как маски подсети используются для различения между узлами, сетями и подсетями, изучите IP-адрес в двоичном формате.

Например, IP-адресом с десятичным обозначением 192.168.123.132 является (в двоичном формате) 32-разрядным числом 110000000101000111101110000100. Это значение может быть очень сложное, поэтому разделите его на четыре части из восьми двоичных цифр.

Эти 8 битные разделы называются октетами. После этого пример IP-адреса становится 11000000.10101000.01111011.10000100. Это значение только в большей степени имеет смысл, поэтому для большинства применений двоичный адрес преобразуется в точечно-десятичный формат (192.168.123.132). Десятичные числа, разделенные точками, — это октеты, преобразованные из двоичного формата в десятичное.

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

Чтобы этот процесс работал, IP-адрес состоит из двух частей. Первая часть IP-адреса используется в качестве сетевого адреса, последней части в качестве адреса узла. Если вы передаете пример 192.168.123.132 и разделяете его на эти две части, вы получаете 192.168.123. Network. 132 Host или 192.168.123.0 — сетевой адрес. 0.0.0.132 — адрес узла.

Подсети

Сеть A, B или C с классом A, B или C можно дополнительно разделить (подгрузку) системным администратором. Это становится необходимым при согласовании логической адресной схемы Интернета (абстрактного мира IP-адресов и подсетей) с физическими сетями, используемыми в реальной среде.

Системный администратор, которому размещается блок IP-адресов, может администрировать сети, которые не будут легко распосутствовать в этих адресах. Например, у вас есть глобальная сеть с 150 узлами в трех сетях (в разных городах), подключенных маршрутизатором TCP/IP. У каждой из этих трех сетей есть 50 узлов. Вы выделили 192.168.123.0 для сети класса C. (Для иллюстрации этот адрес фактически относится к диапазону, который не выделен в Интернете.) Это означает, что вы можете использовать адреса 192.168.123.1 для 192.168.123.254 для узлов 150.

Два адреса, которые не могут использоваться в вашем примере, — 192.168.123.0 и 192.168.123.255, так как двоичные адреса с ведущим сегментом всех и нулей являются недопустимыми. Нулевой адрес является недопустимым, так как он используется для указания сети без указания узла. Адрес 255 (в двоичном формате с адресом узла все) используется для рассылки сообщения на каждый узел в сети. Просто помните, что первый и последний адреса в любой сети или подсети не могут быть назначены какому бы то ни было отдельному узлу.

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

В этом случае сеть разделяется на четыре подсети, используя маску подсети, которая увеличивает сетевой адрес и уменьшает возможный диапазон адресов узлов. Другими словами, вы позаимствованы некоторые биты, используемые для адреса узла, и используете их для части адреса в сети. Маска подсети 255.255.255.192 предоставляет четыре сети для каждого сервера 62. Это работает, так как в двоичной нотации 255.255.255.192 — то же самое, что и 1111111.11111111.1111111.11000000. Первые две цифры последнего октета становятся сетевыми адресами, поэтому вы получаете дополнительные сети 00000000 (0), 01000000 (64), 10000000 (128) и 11000000 (192). (Некоторые администраторы будут использовать только две подсети с помощью 255.255.255.192 в качестве маски подсети. Для получения дополнительной информации по этой теме, ознакомьтесь со статьей RFC 1878.) В этих четырех сетях последние 6 двоичных цифр можно использовать для адресов узла.

Используя маску подсети 255.255.255.192, сеть 192.168.123.0 становится четырьмя сетями 192.168.123.0, 192.168.123.64, 192.168.123.128 и 192.168.123.192. Эти четыре сети будут иметь допустимые адреса узла:

192.168.123.1 — 62 192.168.123.65 – 126 192.168.123.129 – 190 192.168.123.193 – 254

Помните, что двоичные адреса узла со всеми или нулевыми нулями недопустимы, поэтому нельзя использовать адреса с последним октетом 0, 63, 64, 127, 128, 191, 192 или 255.

Вы можете узнать, как это работает, взглянув на два адреса узла, 192.168.123.71 и 192.168.123.133. Если вы использовали маску подсети класса C по умолчанию 255.255.255.0, оба адреса находятся в сети 192.168.123.0. Тем не менее, если вы используете маску подсети 255.255.255.192, они находятся в разных сетях; 192.168.123.71 находится в сети 192.168.123.64, 192.168.123.133 находится в сети 192.168.123.128.

Сколько всего портов TCP?

Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 216-1=65 535.

Соединение TCP

Чтобы установить соединение между двумя процессами на разных компьютерах сети, необходимо знать не только интернет-адреса компьютеров, но и номера тех ТСР-портов (sockets), которые процессы используют на этих компьютерах. Любое TCP-соединение в сети Интернет однозначно идентифицируется двумя IP-адресами и двумя номерами ТСР-портов.

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

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

Сокеты TCP

Активные TCP соединения с интернетом (w/o servers)

# netstat -nt
Proto Recv-Q Send-Q Local Address Foreign Address State      
tcp        0      0 192.26.95.251:56981     10.161.85.55:22        ESTABLISHED
tcp        0      0 10.26.95.251:44596      10.26.95.226:2193       ESTABLISHED

Для сокетов TCP допустимы следующие значения состояния:

CLOSED 	        Закрыт. Сокет не используется.
LISTEN 	        Сокет ожидает входящих соединений.
SYN_SENT 	Активно пытается установить соединение. Cокет в процессе установки соединения.
SYN_RECEIVED (SYN_RCVD)	Идет начальная синхронизация соединения. Был принят запрос установки соединения из сети.
ESTABLISHED 	Соединение установлено.
CLOSE_WAIT 	Удаленная сторона отключилась; ожидание закрытия сокета.
FIN_WAIT_1 	Сокет закрыт; соединение закрывается.
CLOSING 	Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения.
LAST_ACK 	Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения.
FIN_WAIT_2 	Сокет закрыт; ожидание отключения удаленной стороны.
TIME_WAIT 	Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки
UNKNOWN         Статус сокета неизвестен.

Что такое TCP RST?

TCP RST – это сегмент TCP (обратите внимание, что TCP посылает сообщения сегментами, а НЕ пакетами, что часто неправильно употребляется в среде сетевых администраторов), который показывает, что с соединением что-то не так. RST посылается в следующих случаях:

  • Посылается SYN для несуществующего сервера.
  • TCP хочет прервать соединение.
  • Получен сегмент, для которого не существует соединения.

TCP-клиент. Класс TcpClient

Для создания клиентской программы, работающей по протоколу TCP, предназначен класс TcpClient.

Для подключения к серверу TCP, в этом классе определен метод , которому передается название хоста и порт:

TcpClient tcpClient = new TcpClient ();
tcpClient.Connect ("www.microsoft.com", 80);

Чтобы взаимодействовать с сервером TcpClient определяет метод , который возвращает объект NetworkStream.
Через данный объект можно передавать сообщения серверу или, наоборот, получать данные с сервера.

NetworkStream netStream = tcpClient.GetStream();

После окончания работы с TcpClient его надо закрыть методом .

tcpClient.Close();

Для отправки данных у потока используется метод :

NetworkStream stream = tcpClient.GetStream();
string response = "Hello world!"
byte[] data = System.Text.Encoding.UTF8.GetBytes(response);
stream.Write(data, 0, data.Length);

Для чтения используется метод класса NetworkStream:

NetworkStream stream = tcpClient.GetStream();
byte[] data = new byte;
int bytes = stream.Read(data, 0, data.Length); // получаем количество считанных байтов
string message = Encoding.UTF8.GetString(data, 0, bytes)

При этом в обоих случаях нам надо учитывать тип кодировки: он должен совпадать с кодировкой, в которой сервер отправляет или получает сообщения.
В данном случае используется кодировка UTF8.

Полноценный код клиента, выполняющий чтение из потока, мог бы выглядеть так:

using System;
using System.Net.Sockets;
using System.Text;

namespace TcpClientApp
{
    class Program
    {
        private const int port = 8888;
        private const string server = "127.0.0.1";

        static void Main(string[] args)
        {
            try
            {
                TcpClient client = new TcpClient();
                client.Connect(server, port);
				
                byte[] data = new byte;
                StringBuilder response = new StringBuilder();
                NetworkStream stream = client.GetStream();
				
                do
                {
                    int bytes = stream.Read(data, 0, data.Length);
                    response.Append(Encoding.UTF8.GetString(data, 0, bytes));
                }
                while (stream.DataAvailable); // пока данные есть в потоке
			
                Console.WriteLine(response.ToString());

                // Закрываем потоки
                stream.Close();
                client.Close();
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: {0}", e.Message);
            }

            Console.WriteLine("Запрос завершен...");
            Console.Read();
        }
    }
}

В данном случае предполагается, что по локальному адресу 127.0.0.1 на порту 8888 запущен tcp-сервер.

Мы ожидаем, что сервер будет передавать строку в кодировке UTF8, и для создания строки определяется объект StringBuilder.

Для считывания данных создаем массив байтов: . Однако поскольку данные могут иметь больший размер,
то считываем их из потока в цикле do..while. При этом проверяется значение на наличие данных в потоке.

НазадВперед

Минимум, необходимый для общего понимания TCP StreamGraph

  • TCP (Transmission Control Protocol) — протокол транспортного уровня, отвечающий за гарантированную доставку данных от одного узла сети к другому. Поверх TCP работают протоколы прикладного уровня, такие как HTTP, FTP, SMTP, TELNET и другие.
  • Гарантированность доставки в TCP достигается за счет использования механизмов подтверждений и повторов.
    После передачи порции данных отправитель ждет подтверждения от получателя о доставке. Если подтверждение не приходит, выполняется повторная отправка.
  • Данные, подлежащие отправке, на уровне TCP представляются потоком байт, где каждый байт последовательно пронумерован. TCP делит поток на части — — и передает их на более низкий (сетевой) уровень для отправки получателю. В заголовке сегмента указывается его номер (Sequence number, Seq) — номер первого байта сегмента в общем потоке.
  • Получатель принимает сегменты и собирает из них исходный непрерывный поток байт, отправляет подтверждения.
    В заголовке указывает номер подтверждения (Acknowledgment number, Ack) — порядковый номер следующего сегмента, ожидаемого от отправителя. Значение Ack означает, что вся непрерывная последовательность байт с первого до Ack-1 приняты успешно. Согласно спецификации, подтверждение для каждого сегмента не требуется. Одно подтверждение может отправляться сразу на несколько полученных сегментов.
  • Получатель не только подтверждает входящие данные, но и управляет интенсивностью их поступления.
    В заголовке подтверждения указывается размер окна приема (Window, Win).
    Отправитель передает сегменты с данными, объем которых не превышает размера Win.
    Если получатель сообщает о нулевом Win, передача данных приостанавливается, пока не будет указан больший размер.
  • Передаче данных между двумя сетевыми приложениями предшествует установка TCP-соединения.
    По завершении обмена соединение закрывается.
    Соединение уникально идентифицируется парой значений IP-адреса хоста, номер порта приложения.
    Приложение, инициирующее соединение (клиент), каждый раз получает в ОС произвольный номер порта и освобождает его после завершения сеанса передачи данных.
    Приложение, ожидающее соединений (сервер), всегда использует постоянный номер порта, пока не завершит свою работу.

Selective acknowledgmentv4.speedtest.reliableservers.comcurl ‘http://v4.speedtest.reliableservers.com/10MBtest.bin’tcp contains «10MBtest.bin»tcp.stream==5

Что такое 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.

В заключение

Вот вы и узнали, что это такое, постарался объяснить все просто, для «чайников». Следующие материалы также будут посвящены технологии передачи данных в интернете.

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

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

Adblock
detector