Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание": 1.1 Сети, пакеты и протоколы

Оглавление
Английский оригинал Перевод на русский

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

1.1 Сети, пакеты и протоколы

prefer211 15.05.12 в 02:07

0

Компьютерная сеть состоит из устройств, соединенных посредством коммуникационных каналов. Мы называем эти устройства хостами и роутерами. Хосты - это компьютеры, на которых запускаются приложения, такие как Ваш веб-браузер, ваш клиент обмена быстрыми сообщениями или программа для расшаривания файлов. Прикладные программы, запущенные на хосте, и есть реальные "пользователи" сети. Роутеры (также могут называться шлюзами) - это устройства, чья работа - передавать или перенаправлять информацию с одного коммуникационного канала в другой. Они могут запускать программы, но обычно не могут запускать прикладные программы. Для наших целей, коммуникационный канал - это средства передачи последовательностей байтов от одного хоста к другому; он может быть проводным (например Ethernet), беспроводным (например WiFi) или оптическим (например оптическая связь прямого распространения).

prefer211 15.05.12 в 03:32

0

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

prefer211 15.05.12 в 17:04

0

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

prefer211 15.05.12 в 17:18

0

Протокол - это соглашение об обмене пакетами поддерживающими связь программами. Он определяет структуру пакетов - к примеру, где в пакете должна находиться информация о пункте назначения пакета, какого размера она должна быть и как ее интерпретировать. Протокол обычно разрабатывается для решения специфических проблем, используя данные средства и возможности. К примеру, HTTP (HyperText Transfer Prоtocоl — протокол передачи гипертекста) решает проблему передачи гипертекстовых объектов между серверами, где они хранятся или генерируются, и веб-браузером, который делает эти объекты визуальными и употребительными для пользователей. Протоколы передачи мгновенных сообщений решают проблему предоставления возможности двум или более пользователям обмениваться короткими текстовыми сообщениями.

prefer211 15.05.12 в 17:24

0

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

prefer211 17.05.12 в 05:09

0

Ведущими протоколами в TCP/IP являются интернет-протокол (Internet protocol - IP), протокол управления передачей (Transmission Control Protocol - TCP) и протокол пользовательских дейтаграмм (User Datagram Protocol - UDP). Оказывается практичным организовывать протоколы в слои (уровни); TCP/IP и практически все другие наборы протоколов пошли именно этим путем. Рисунок 1.1. показывает взаимодействия между протоколами, приложениями и Sockets API в хостах и роутерах, а также поток данных из одного приложения (используя TCP) к другому.

prefer211 17.05.12 в 07:37

0

Блоки, подписанные TCP и IP показывают реализацию этих протоколов. Такая реализация характерно присуща в операционной системе хосту. Приложения получают доступ к сервисам, предоставляемым UDP и TCP через Sockets API, изображенного в виде пунктирной линии.

prefer211 17.05.12 в 07:45

0

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

IamSadist 16.05.12 в 18:18

0

Рисунок 1.1: Сеть TCP/IP

prefer211 15.05.12 в 19:59

0

В TCP/IP нижний уровень состоит из лежащих в основе каналов связи - к примеру, Ethernet или соединение по Dual-Up модему. Эти каналы используются сетевым уровнем, который занимается проблемой передачи пакетов к месту назначения (то есть то, что делают роутеры). На сетевом уровне в стеке протоколов TCP/IP находится Internet Protocol (IP); он решает проблему создания последовательности каналов связи и маршрутизаторов (роутеров) между любыми двумя хостами, имитируя один канал между хостами (host-to-host).

prefer211 17.05.12 в 08:09

0

Internet Protocol обеспечивает дейтаграмный сервис: каждый пакет обработанный и доставленный сетью независим, как письма или посылки, посланные с помощью почтовой службы. Чтобы сделать эту работу, в каждый IP-пакет включен адрес его пункта назначения, как каждое письмо, которое вы отправляете по почте кому-либо. (Мы вскоре поговорим подробнее об адресах.) Несмотря даже на то, что большинство служб доставки гарантируют доставку писем, IP - наилучший протокол - он пытается доставить каждый пакет, но он может (а иногда так и происходит) терять, повторять или дублировать пакеты при передаче по сети.

prefer211 17.05.12 в 08:25

0

Уровень выше IP называется транспортным уровнем. Он предлагает выбор между двумя протоколами - TCP и UDP. Каждый из них опирается на услуги, предоставляемые IP, но они по-разному релизуют различные виды транспорта, которые используются протоколами приложений с различными потребностями. TCP и UDP имеют одну общую функцию - адресацию. Напомним, что IP доставляет пакеты на хост; должно быть понятным, точная детализация адреса доставки необходима для получения пакета определенной прикладной программой, вполне возможно одной из многих использующих сеть на этом хосте. TCP и UDP используют адреса, называемые номерами портов, для определения приложений в структуре хоста. Оба этих протокола называют сквозными (end-to-end) транспортными протоколами, потому что они передают данные от одной программы до другой (в товремя как IP только передает данные от одного хоста к другому).

prefer211 17.05.12 в 08:29

0

TCP разработан для обнаружения и восстановления в случае потерь, дублирования и других ошибок, которые могут возникнуть в канале передачи данных между хостами, предоставленном IP. TCP обеспечивает надежный канал потока байтов, так что приложения не должны иметь дела с этими проблемами. Это протокол с установлением соединения: прежде чем его использовать для передачи информации, две программы должны первым делом установить TCP-соединение, используя механизм "рукопожатия" (handshake) между реализациями TCP на сообщающихся компьютерах.

prefer211 18.05.12 в 01:40

0

Использование TCP во многом похоже на файл ввода/вывода (Input/Output - I/O). В самом деле, файл, записанный одной программой, и читаемый другой - это адекватная модель обмена данными посредством TCP-соединения. UDP, с другой стороны, не пытается исправлять ошибки, которые могут возникать при передаче данных посредством IP; он просто расширяет функционал IP передачи дейтаграм так, что он может работать между прикладными программами, а не между хостами. Таким образом, приложения, использующие UDP должны быть готовы к потерям, переупорядочиванию и так далее.

prefer211 18.05.12 в 02:13

0
Минутку...