Протокол ip

IPv4[править]

IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет протокола (IP). Описан в IETF в статье RFC 791 (сентябрь 1981 года). Это один из самых используемых интернет протоколов. Был введен в использование в ARPANET в 1983 году.

Функция протокола — передавать дейтаграммы по множеству соединенных сетей.

Структура пакетаправить

Рассмотрим формат IPv4-дейтаграмм.

Дейтаграмма состоит из заголовка и основной части (данных). Биты передаются слева направо и сверху вниз (big-endian порядок). В настоящее время ясно, что лучше было бы использовать обратный (little-endian) порядок, но во время создания протокола это не было очевидно. Так на Intel x86 требуется программное преобразование, как при передаче, так и при приеме.

Рассмотрим структуру заголовка:

Структура заголовка IPv4
1 2 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Версия IHL Дифференциальное обслуживание (Тип службы) Полная длина
Идентификатор Флаги Смещение фрагмента
Время жизни Протокол Контрольная сумма заголовка
IP-адрес источника
IP-адрес назначения
Опции Остаток
  • Версия: 4 бита
  • IHL: 4 бита
  • Дифференциальное обслуживание (Тип службы): 8 битов
  • Полная длина: 16 бит
  • Идентификатор: 16 бит
  • Флаги: 3 бита
    • Бит 0: зарезервированное значение, должны быть равно 0.
    • Бит 1 (DF): Не фрагментировать (англ. Don’t Fragment). 0 — можно фрагментировать, 1 — нельзя. Также может использоваться при определении путевого значения MTU, которое равно максимальному размеру пакета, передаваемого по пути без фрагментации. Пометив этот бит, отправитель гарантирует, что либо дейтаграмма дойдет единым блоком, либо отправитель получит сообщение об ошибке.
    • Бит 2 (MF): Продолжение следует (англ. More Fragments). 0 — в последнем фрагменте, 1 — в предыдущих.
  • Смещение фрагмента: 13 битов
  • Время жизни: 8 битов
  • Протокол: 8 битов
  • Контрольная сумма заголовка: 16 бит
  • IP-адрес источника: 32 бита.
  • IP-адрес получателя: 32 бита.
  • Опции: переменная длина
    • В начале поля всегда располагается однобайтный идентификатор. Иногда за ним может располагаться также однобайтное поле длины, а затем один или несколько информационных байтов. Размер этого поля должен быть кратен 4 байтам. Поле опции имеет следующий формат:
      • 1 бит — флаг копирования. Показывает, если опция скопирована во все фрагменты.
      • 2 бита — класс опции. Могут быть следующие классы: 0 — control, 2 — debugging и измерение, 1 и 3 — зарезервированы на будущее.
      • 5 бит — номер опции.
    • Приведем примеры опций:
      • Безопастность — указывет уровень секретности дейтаграммы. Но на практике все его игнорируют.
      • Строгая маршрутизация от источника — задает полный путь следования дейтаграммы.
      • Свободная маршрутизация от источника — задает список маршрутизаторв, которыенельзя миновать.
      • Запомнить маршрут — требует от всех маршрутизаторов добавлять свой IP-адрес.
      • Временной штамп — требует от всех маршрутизаторв добавлять свой IP-адрес и текущее время.
    • Обычно маршрутизаторы либо игнорируют опции, либо обрабатывают неэффективно, отодвигая в стороны как нечто необычное.
  • Остаток (Padding): переменная длина

Уровни OSI

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

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

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

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

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

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

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

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

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

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

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

Ваше мнение — WiFi вреден?

Да
22.92%

Нет
77.08%

Проголосовало: 32051

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/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 – протокол межхостового уровня, обеспечивающий надежную доставку;

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

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

В OSI различают три начальных уровня – приложения, представления и сеансовый, – когда как в TCP/IP все это выделяется в прикладной уровень.

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

Режимы адресации протокола версии IPv4

Протокол IPv4 поддерживает три режима адресации:

  1. Одноадресный. При использовании данного режима данные передаются только на один сетевой узел, причем каждый из них может являться как отправителем, так и получателем. Поле адреса назначения содержит 32-битный IP-адрес устройства-получателя. Одноадресный режим используется чаще всего при обращении к интернет-протоколу.
  2. Широковещательный. При его использовании все устройства, подключенные к сети с множественным доступом, имеют возможность получения и обработки датаграмм, передаваемых по протоколу TCP/IPv4. Для этого поле ip-адреса назначения включает в себя специальный широковещательный код идентификации.
  3. Многоадресный. Согласно правилам обработки данных по протоколу IPv4, сюда входят адреса в диапазоне от 224.0.0.0 до 239.255.255.255. Режим объединяет два предыдущих, определяется наиболее значимой моделью 1110. В этом пакете адрес назначения содержит специальный код, который начинается с 224.x.x.x и может использоваться более чем одним узлом.

Для домашних сетевых устройств, будь то компьютер, смартфон или холодильник с функцией контроля через соединение Wi-Fi, назначается один общий ip-адрес. Согласно протоколу IPv4 он присваивается провайдером и закрепляется на уровне сетевого коммуникационного оборудования – роутера. Данный IP-адрес может быть статическим (неизменным) либо динамическим, меняющимся при отключении роутера от сети.

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

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

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

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

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

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

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

Уровни эталонной модели

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

Взаимодействие между уровнями организовано следующим образом:

  • по вертикали — внутри отдельно взятой ЭВМ и только с соседними уровнями.
  • по горизонтали — организовано логическое взаимодействие — с таким же уровнем другого компьютера на другом конце канала связи (то есть сетевой уровень на одном компьютере взаимодействует с сетевым уровнем на другом компьютере).

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

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

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

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

Помимо термина «данные» (data), которое используется в модели OSI на прикладном, представительном и сеансовом уровнях, используются и другие термины на других уровнях модели OSI, чтобы можно было сразу определить на каком уровне модели OSI выполняется обработка.

В стандартах ISO для обозначения той или иной порции данных, с которыми работают протоколы разных уровней модели OSI, используется общее название — протокольный блок данных (Protocol Data Unit, PDU). Для обозначения блоков данных определенных уровней часто используются специальные названия: кадр (frame), пакет (packet), сегмент (segment).

Модель TCP/IP vs. модель OSI

Модель TCP/IP старше модели OSI. На следующем рисунке показана соответствующая взаимосвязь их уровней.

Рисунок 4: модель OSI vs модель TCP/IP и набор протоколов TCP/IP.

Сравнивая слои TCP/IP-модели, и модели OSI, прикладной уровень протокола TCP/IP-модели аналогичен комбинации слоев 5, 6, 7 модели OSI, но TCP/IP-модель не имеет отдельного уровня представления и сеансового уровня. Транспортный уровень протокола TCP/IP включает в себя функции транспортного уровня OSI и некоторые функции сеансового уровня модели OSI. Уровень доступа сети модели TCP/IP охватывает канальный и физический уровни модели OSI

Обратите внимание, что сетевой уровень TCP/IP не использует преимущества служб последовательности и подтверждения, которые могут присутствовать на канальном уровне передачи данных модели OSI. Это ответственность транспортного уровня в модели TCP/IP

Учитывая значения двух моделей, модель OSI является концептуальной моделью. Она в основном используется для описания, обсуждения и понимания отдельных сетевых функций. Однако, TCP/IP в первую очередь сконструирована для того чтобы разрешить специфический круг проблем, а не действовать как описание поколения для всех сетевых взаимодействий как модель OSI. Модель OSI является общей, независимой от протокола, но большинство протоколов и систем придерживаются ее, в то время как модель TCP/IP основана на стандартных протоколах, которые разработал интернет. Другой момент, который следует отметить в модели OSI заключается в том, что не все уровни используются в более простых приложениях. В то время как уровни 1, 2, 3 являются обязательными для любой передачи данных, приложение может использовать какой-то уникальный интерфейс уровня вместо обычных верхних уровней в модели.

Сетевые протоколы TCP/IP, NWLink IPX/SPX, NetBEUI

Давайте начнем с того, что вообще такое сетевой протокол и с чем его едят.Сетевой протокол — это набор программно реализованных правил общения между компьютерами. Этакий язык, на котором компьютеры разговаривают друг с другом и передают информацию. Ранее компьютеры были, так сказать, многоязычны и в старых версиях Windows использовался целый набор протоколов, — TCP/IP, NWLink IPX/SPX, NetBEUI. Ныне же пришли к общей договоренности, и стандартом стало использование исключительно протокола TCP/IP, а посему речь далее пойдет именно о нем.

Когда говорят о TCP/IP, то обычно подразумевают под этим именем множество различных.. правил или, скажем, стандартов, которые прописаны с использованием (или под использование) этого протокола. Так, например, есть правила, по которым осуществляется обмен сообщениями между почтовыми серверами и есть правила, по которым конечный пользователь получает в свой ящик письма. Имеются правила для проведения видео-конференций и правила для организации «телефонных» переговоров по Интернету. Фактически, это даже не то чтобы правила.. Скорее этакая грамматика, что ли. Ну знаете, в английском одна структура построения диалогов, в французском другая.. Вот и в TCP/IP нечто подобное, т.е. некая связка различных грамматических правил представляет собой как раз цельный протокол TCP/IP или, точнее говоря, стек протоколов TCP/IP.

Концептуальное понимание:

  • IP: Протокол сетевого уровня; (шоссе)
  • TCP и UDP: Протокол транспортного уровня; (грузовик)
  • TCP/IP: Означает Протокол управления передачей / Интернет-протокол и относится к серии протоколов. Модель TCP / IP была упрощена на основе модели OSI и стала четырьмя уровнями снизу вверх: уровень сетевого интерфейса, сетевой уровень, Транспортный уровень, прикладной уровень.
  • SOCKET: Сокет, API сети TCP / IP. (Портовый терминал / станция) Сокет — это промежуточный уровень абстракции программного обеспечения для связи между прикладным уровнем и семейством протоколов TCP / IP, представляющий собой набор интерфейсов. Сокет — это уровень абстракции между прикладным уровнем и транспортным уровнем, который абстрагирует сложные операции уровня TCP / IP в несколько простых уровней поставки интерфейса для вызова реализованных процессов для связи в сети.
  • HTTP: Соглашение прикладного уровня; (товары). HTTP (Hypertext Transfer Protocol) — это протокол, который использует TCP для передачи информации между двумя компьютерами (обычно веб-сервером и клиентом). Клиент использует веб-браузер, чтобы инициировать HTTP-запрос к веб-серверу, и веб-сервер отправляет запрошенную информацию клиенту.
  • WebSocketПротокол WebSocket — это новый протокол HTML5. Он реализует полнодуплексную связь между браузером и сервером. Начальное рукопожатие должно быть завершено с помощью HTTP-запросов. WebSokcet Цель: обмен мгновенными сообщениями вместо опроса. Обмен мгновенными сообщениями на сайте очень распространен, например, QQ веб-страниц, системы чата и т. д. Согласно предыдущим техническим возможностям, это обычно решается с помощью опроса и технологии Comet. HTTP-протокол является непостоянным односторонним сетевым протоколом. После установления соединения браузер может только отправлять запросы на сервер, прежде чем сервер сможет вернуть соответствующие данные. Когда требуется обмен мгновенными сообщениями, браузер отправляет запрос на сервер через определенный интервал времени (например, 1 секунду), а затем возвращает последние данные в браузер. Наиболее очевидным недостатком этого метода является то, что он должен отправлять запросы непрерывно, и, как правило, заголовок HTTP-запроса очень длинный. Для передачи небольшого количества данных ему необходимо заплатить огромную цену, что является очень неэкономичным и требует большого количества широкополосной связи. Недостатки: это вызовет слишком много ненужных запросов, тратит трафик и ресурсы сервера. Каждый запрос и ответ тратят определенное количество трафика на одну и ту же информацию заголовка. Однако появление WebSocket может восполнить этот недостаток. В WebSocket только сервер и браузер должны выполнить рукопожатие по протоколу HTTP, а затем отдельно установить канал связи TCP для передачи данных.

Восстановление после ошибок 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

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

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. При этом проверяется значение на наличие данных в потоке.

НазадВперед

Межсетевой уровень

Межсетевой уровень IPv4 состоит из всех протоколов и процедур, позволяющих потоку данных между хостами проходить по нескольким сетям. Следовательно, пакеты, в которых передаются данные, должны быть маршрутизируемыми. За маршрутизируемость пакетов отвечает протокол IP (Internet Protocol).

Межсетевой уровень должен поддерживать маршрутизацию и функции управления маршрутами. Эти функции предоставляются внешними протоколами, которые называются протоколами маршрутизации. К их числу относятся протоколы IGP (Interior Gateway Protocols) и EGP (Exterior Gateway Protocols).

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

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

Adblock
detector