Опубликован: 16.09.2004 | Уровень: специалист | Доступ: свободно | ВУЗ: Московский физико-технический институт
Лекция 10:

Семейство протоколов TCP/IP. Сокеты (sockets) в UNIX и основы работы с ними

< Лекция 9 || Лекция 10: 1234567891011
Аннотация: Краткая история семейства протоколов TCP/IP. Общие сведения об архитектуре семейства протоколов TCP/IP. Уровень сетевого интерфейса. Уровень Internet. Протоколы IP, ICMP, ARP, RARP. Internet-адреса. Транспортный уровень. Протоколы TCP и UDP. UDP и TCP сокеты (sockets). Адресные пространства портов. Понятие encapsulation. Уровень приложений/программ. Использование модели клиент-сервер при изучении сетевого программирования. Организация связи между удаленными процессами с помощью датаграмм. Сетевой порядок байт. Функции htons(), htonl(), ntohs(), ntohl(). Функции преобразования IP-адресов inet_ntoa(), inet_aton(). Функция bzero(). Системные вызовы socket(), bind(), sendto(), recvfrom(). Организация связи между процессами с помощью установки логического соединения. Системные вызовы connect(), listen(), accept(). Использование интерфейса сокетов для других семейств протоколов. Файлы типа "сокет".
Ключевые слова: программирование, Unix, сеть, ARPANET, ПО, связь, network controller, protocol, NCP, датаграмма, виртуальное (логическое) соединение, передача данных, семейство протоколов TCP/IP, семейство протоколов, место, OSI, ISO, уровень сетевого интерфейса, уровень Internet, транспортный уровень, уровень приложений/процессов, протокол сетевого интерфейса, адрес, MAC-адрес, media, access control, плата, Ethernet, протокол icmp, протокол IP, протокол arp, протокол rarp, решение обратной задачи, информация, IP, ip datagram, скорость передачи, IP-адрес, адресация, интерфейс, multicast address, класс, идентификатор, Internet, ICANN, адресное пространство, адрес сети, бит, значение, проблема разрешения адресов, компьютер, рабочая станция, запрос, сервер, протокол TCP, протокол UDP, потоковая модель, connection-oriented, socket, разъем, непрямая адресация, сокет, TCP, адрес сокета, UDP-сокет, TCP-сокет, порт, UDP, encapsulation, TFTP, transfer, FTP, smtp, mail, manual, мультиплексирование сообщений, локальный процесс, thread, удаленный процесс, системный вызов, письмо, очередь, почтовый ящик, дерево, сетевой интерфейс, операционная система, деятельность, системный вызов socket(), системный вызов bind(), системный вызов recvfrom(), системный вызов sendto(), байт, порядок байт, представление, endianness, byte, сетевой порядок байт, функция htons(), функция htonl(), функция ntohs(), функция ntohl(), параметр, host, network, short, Функция ntohl, long, функция inet_aton(), функция, функция inet_ntoa(), Функция bzero, family, синоним, protocol family, ссылка, таблица открытых файлов процесса, PIPS, FIFO, дескриптор, указатель, тип данных, шаблон, поле, пользователь, диапазон, константы, длина, буфер, отправка, утилита, память, программа, обмен информацией, обмен данными, системный вызов connect(), очередь соединений, системный вызов listen(), Си, системный вызов accept(), канал связи, connectionless, поток, надежность, SYN, synchronize, минимум, ACK, трехэтапное рукопожатие, пассивный (слушающий) TCP-сокет, присоединенный TCP-сокет, не полностью установленное соединение, полностью установленное соединение, TCP–сокет, зомби-процесс, UNIX Domain протоколы, стек протоколов, права, запись, файл типа "сокет", тип файла, файл, имя файла, макрос

Краткая история семейства протоколов TCP/IP

Мы приступаем к последней теме наших семинарских и практических занятий – введению в сетевое программирование в операционной системе UNIX.

Все многообразие сетевых приложений и многомиллионная всемирная компьютерная сеть выросли из четырехкомпьютерной сети ARPANET, созданной по заказу Министерства Обороны США и связавшей вычислительные комплексы в Стэндфордском исследовательском институте, Калифорнийском университете в Санта-Барбаре, Калифорнийском университете в Лос-Анджелесе и университете Юты. Первая передача информации между двумя компьютерами сети ARPANET состоялась в октябре 1969 года, и эту дату принято считать датой рождения нелокальных компьютерных сетей. (Необходимо отметить, что дата является достаточно условной, так как первая связь двух удаленных компьютеров через коммутируемые телефонные линии была осуществлена еще в 1965 году, а реальные возможности для разработки пользователями ARPANET сетевых приложений появились только в 1972 году.) Эта сеть росла и почковалась, закрывались ее отдельные части, появлялись ее гражданские аналоги, они сливались вместе, и в результате "что выросло – то выросло".

При создании ARPANET был разработан протокол сетевого взаимодействия коммуникационных узлов – Network Control Protocol (NCP), осуществлявший связь посредством передачи датаграмм (см. лекцию 14, раздел "Связь с установлением логического соединения и передача данных с помощью сообщений"). Этот протокол был предназначен для конкретного архитектурного построения сети и базировался на предположении, что сеть является статической и настолько надежной, что компьютерам не требуется умения реагировать на возникающие ошибки. По мере роста ARPANET и необходимости подключения к ней сетей, построенных на других архитектурных принципах (пакетные спутниковые сети, наземные пакетные радиосети), от этого предположения пришлось отказаться и искать другие подходы к построению сетевых систем. Результатом исследований в этих областях стало появление семейства протоколов TCP/IP, на базе которого обеспечивалась надежная доставка информации по неоднородной сети. Это семейство протоколов до сих пор занимает ведущее место в качестве сетевой технологии, используемой в операционной системе UNIX. Именно поэтому мы и выбрали его для практической иллюстрации общих сетевых решений, изложенных в лекции 14.

Общие сведения об архитектуре семейства протоколов TCP/IP

Семейство протоколов TCP/IP построено по "слоеному" принципу, подробно рассмотренному в лекции (лекция 14, раздел "Многоуровневая модель построения сетевых вычислительных систем"). Хотя оно и имеет многоуровневую структуру, его строение отличается от строения эталонной модели OSI, предложенной стандартом ISO. Это и неудивительно, так как основные черты семейства TCP/IP были заложены до появления эталонной модели и во многом послужили толчком для ее разработки. В семействе протоколов TCP/IP можно выделить четыре уровня:

  • Уровень сетевого интерфейса.
  • Уровень Internet.
  • Транспортный уровень.
  • Уровень приложений/процессов.

Соотношение уровней семейства TCP/IP и уровней модели OSI/ISO приведено на рисунке 15–16.1.

Соотношение моделей OSI/ISO и TCP/IP

Рис. 15-16.1. Соотношение моделей OSI/ISO и TCP/IP

На каждом уровне семейства TCP/IP присутствует несколько протоколов. Связь между наиболее употребительными протоколами и их принадлежность уровням изображены на рисунке 15–16.2.

Давайте кратко охарактеризуем каждый уровень семейства.

Основные протоколы семейства TCP/IP

Рис. 15-16.2. Основные протоколы семейства TCP/IP

Уровень сетевого интерфейса

Уровень сетевого интерфейса составляют протоколы, которые обеспечивают передачу данных между узлами связи, физически напрямую соединенными друг с другом, или, иначе говоря, подключенными к одному сегменту сети, и соответствующие физические средства передачи данных. К этому уровню относятся протоколы Ethernet, Token Ring, SLIP, PPP и т.д. и такие физические средства как витая пара, коаксиальный кабель, оптоволоконный кабель и т.д. Формально протоколы уровня сетевого интерфейса не являются частью семейства TCP/IP, но существующие стандарты определяют, каким образом должна осуществляться передача данных семейства TCP/IP с использованием этих протоколов. На уровне сетевого интерфейса в операционной системе UNIX обычно функционируют драйверы различных сетевых плат.

Передача информации на уровне сетевого интерфейса производится на основании физических адресов, соответствующих точкам входа сети в узлы связи (например, физических адресов сетевых карт). Каждая точка входа имеет свой уникальный адресMAC-адрес (Media Access Control), физически зашитый в нее на этапе изготовления. Так, например, каждая сетевая плата Ethernet имеет собственный уникальный 48-битовый номер.

< Лекция 9 || Лекция 10: 1234567891011
лия логовина
лия логовина

организовать двустороннюю поочередную связь процесса-родителя и процесса-ребенка через pipe, используя для синхронизации сигналы sigusr1 и sigusr2.

Макар Оганесов
Макар Оганесов
Сергей Пархоменко
Сергей Пархоменко
Россия, Ростов-на-Дону, ЮФУ (ДГТУ), 2008