Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix (21.03.12) Сокеты.doc
Скачиваний:
7
Добавлен:
25.08.2019
Размер:
73.73 Кб
Скачать

Unix. Конспекты лекций.

21.03.2012

Теги: история интернета, BSD-сокеты, протокол, сетевая модель OSI, кадр, свитч, хаб, роутеры, маршрутизаторы, Ethernet, TCP/IP, MAC-адрес, IP-адрес, маска подсети, default gateway, пакет, кадр, TCP,UDP, ICMP, ipconfig, loopback-интерфес, sockaddr, socket(), bind(), connect(), accept(), read(),write(),listen(),close().

Краткая история интернета.

История Интернета начинается с проекта 1968 года Министерства обороны США. Оно заказало разработку коммуникационной среды для обеспечения связи между командными пунктами различных войск в случае ядерной войны нескольким университетам . Эта система должна была обладать следующими свойствами: быть надежной, работать на больших расстояниях, быть устойчивой к потерям данных, даже если какие-то узлы выходят из строя, сама сеть должна сохранять работоспособность. Такая сеть была создана примерно в 1971 году. Называлась она ARPANET . Так как делали ее университеты, она быстро стала использоваться для обмена данными между кампусами. Эта сеть быстро превратилась в сеть,связывающую американские университеты. В это же время возникла UNIX. Как известно, Берклиевский университет был разработчиком и ARPANET и UNIX. Естественно появилось желание объединить эти два проекта. Это было сделано в 1974 году, тогда и появился интерфейс под названием BSD-сокеты, появились протоколы TCP IP и так далее. В 1983 году исходные тексты BSD-сокетов стали публично доступны. В это время финансирование функционирования сети интернет происходило за счет министерства обороны США, затем оно передало управление сетью сначала научному фонду NSF, а затем в 89-90-м финансирование пришло к коммерческим организациям. 1990 год - появление технологии WEB, http протокола,языка разметки html, позволившего связать различные документы на различных компьютерах между собой, примерно в это же время появился Linux. Также к началу 90-х число компьютеров в домене .edu сравнялось с числом компьютеров в домене .com. 1994 - появление домена .ru. В развитии сети интернет важную роль сыграл Российский институт исследования сетей (подразделение Курчатовского института). Этапы развития рунета координировались из него.

Понятие протокола.

Когда два компьютера обмениваются какими-то данными часто бывает так,что ПО на одном разработано одним производителем,а ПО на другом - другим разработчиком. Чтобы они могли успешно обмениваться данными им нужно договариваться, в каком порядке какие данные будут передаваться. Структура, наложенная на продаваемые данные, называется протоколом. Большинство протоколов, используемых в интернете, стандартизованы стандартами RFC. Каждый стандарт имеет собственный номер, некоторые из стандартов RFC описаны очень сжато и тяжело читабельны, однако множество документов написаны как учебники, они полезны к прочтению. Почему они называются RFC(Request for comments)? Это связано с тем, как они принимались. Дело в том,что более 20-ти лет интернет развивался без веб страниц, то есть он не ограничивается протоколом http и web технологиями, потому что все эти 20 лет для обмена данными существовал ftp, для электронной почты - POP, для конференций - NNTP, и так далее. То есть есть тогда была большая жизнь за пределами веб-страниц. Как раз в это время существовал специальный список рассылки, в которых люди могли публиковать предложения по развития протоколов, назывались эти документы Request for Comments. Когда все приходили к общему стандарту, они принимались как стандарты. Не все RFC стали стандартами, но тем не менее.

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

Уровни протоколов.

Чаще всего при передачи сообщений от одной программы другой происходит следующая вещь: когда сообщение передается, она передает сообщение сначала одной программе, потом программе более высокого уровня и так далее. То есть какая-то библиотечная функция может вызывать другую функцию, для которой секция данных будет уже содержать структурированную информацию. Секцию данных тоже можно рассматривать как заголовок и данные, то есть сначала будет протокол первого уровня, а потом второго и далее. Получается некая вложенная структура. На заре развития ethernet'а уровни протоколов формировались как карта ляжет. Было решено принять некоторые стандарты для описания. Была создана организация OSI. Они придумали семиуровневую модель OSI и установили,что все протоколы должны распадаться на семь уровней.

Первый уровеньфизический . Физический уровень описывает среду передачи данных, самый распространённая из них - витая пара. Он описывает, к примеру, сколько проводов должно в ней быть, какой уровень сигнала отвечает единице,а какой нулю, как кодировать последовательности байт и бит. Другой пример физического уровня - оптоволокно, уровень описывает на каких частотах передавать сигнал. Ещё пример: телефонные провода.

Второй уровеньканальный . Он имеет дело с последовательностью битов. Канальный уровень предназначен для обработки железом, ПО не используется, примеры: ethernet, token ring, PPP и т. д. Протокол Ethernet используется для обмена данными между сетевыми картами и коммутаторами. Каждой сетевой карте и коммутаторы присваивается 6-ти байтовый MAC-адрес. Он записывается обычно как последовательность шестнадцатиричных цифр, разделенных двоеточиями. Сообщения называются кадрами. Кадр состоит из заголовка и данных, в заголовке указывается адрес получателя (MAC-адрес), длина сообщения и служебная информация. Когда сообщение приходит на карту, карта захватывает сообщение только тогда, когда MAC-адрес в заголовке совпадает с MAC-адресом самой карты. Если сообщение адресовано другому устройству, оно отбрасывается. Есть исключения из правила:

1) адрес получателя указан в виде всех единичек, это широковещательное сообщение, принимаемое любой сетевой картой,

2) Если сетевая карту перевели в режим promiscuous mode, в этот режим карту может перевести только суперпользователь, и мы узнаем какой трафик проходит мимо сетевой карты. Этот режим используется в различных анализаторах трафика.

Две сетевые карты могут быть соединены напрямую витой парой или быть соединены через хабы, либо свитчи. Хаб имеет много входов, соединенных с каждым выходом, таким образом, когда сообщение попадает в какой-то вход, оно автоматически появляется на всех выходах хаба. Свитч (коммутатор второго уровня) устроен сложнее: свитч помнит для каждого входа какие MAC-адреса есть на входе, каждый раз когда проходит какой-то пакет, он запоминает, с какого входа он пришел и соответственно запоминает MAC-адрес, потом составляется табличка: какой где вход и какой MAC-адрес ему соответствует. Когда приходит сообщение, оно передается ровно туда, куда нужно, сразу. Хаб может на одном входе либо принимать,либо передавать данные,однако когда мы говорим о свитче, он может работать в дуплексном режиме. С другой стороны, у хаба, когда данные появляются на входе, они тут же появляются на всех выходах, а на свитче происходит некоторая задержка при передачи данных, вызванная обработкой заголовка. Все компьютеры, соединенные хабами и свитчами, находятся в одном физическом сегмента. Если компьютеры находятся в одном физическом сегменте, это значит,что широковещательный пакет (адрес назначения у которого FF:FF:FF:FF:FF:FF), посланный с одного компьютера, обязательно достигнет всех компьютеров в этом физическом сегменте.

Третий уровень протокола обрабатывается не аппаратно,а программно - это сетевой уровень. Сетевой уровень обычно обрабатывается ядром операционной системы, пример: IP-протокол. В течений многих десятилетий в интернете используется IP протокол версии 4, хотя скорее всего 4-я версия будет вытеснена IPv6 версией в скором времени. Третий пример, помимо IPv4 и Ipv6, это IPx, разработанный Novell. Сетевой уровень устроен так: каждому компьютеру, используемому в IP сети, присваивается свой IP-адрес, он присваивается программно администратором, это 4-х байтовое(в IPv4, т.  к. в IPv6 это число 16 байтовое. Здесь и далее речь идёт именно о IPv4) целое число в основании 256. Например, 1.2.3.4. Означает 1*256^3 + 2*256^2+3*256+4. Другой пример IP-адреса: 123.456.789.012 не может им быть, потому что число в 256 основании должно быть меньше 256. На самом деле IP-адрес присваивается сетевым интерфейсом, а не компьютером. Обычно каждой карте соответствует 1 или больше сетевых интерфейсов. Кроме IP-адреса на каждый интерфейс должна быть наложена маска, это четырехбайтовое целое число, устроенное примерно следующим образом :много единиц, потом все нули. Пример: 11111111 11111111 11111111 00000000 (что эквивалентно 255.255.255.0). Пример: 255.255.255.0 устроен так: 24 единицы, а затем нули. Другой пример: 256.255.255.25 представляет из себя много единиц, потом 00001101, что лажа, потому что после единиц должны быть нули. Ещё пример: 255.255.255.224. Также компьютеру назначается default gateway. Когда мы передаем сообщение, мы указываем IP получателя и отправителя. Чтобы передать сообщение надо понять, находятся ли они в одном физическом сегменте. Для этого нужно проверить совпадают ли адреса по маске, то есть надо наложить на отправителя маску,и на получателя, сделав логическое "и". Если они в одной подсети, то это значит, что сообщение можно передать непосредственно. Однако IP протокол позволяет передавать сообщения между компьютерами в разных физических сегментов. Для этого используются роутеры или маршрутизаторы (коммутаторы третьего уровня. Эти устройства обладают несколькими сетевыми интерфейсами, причем хотя бы два из них смотрят в разные физические сегменты, также устройство должно уметь перебрасывать пакеты с одного интерфейса на другой. Пакет устроен следующим образом: заголовок+ данные. В заголовке IP-адрес отправителя, получателя и служебная информация,описывающая длину данных, какой протокол более высокого уровня используется и контрольная сумма. Используется таблица маршрутизации, которая позволяет найти для каждой подсети то, через какой маршрутизатор должно пройти сообщение, если подсеть не находится, используется маршрутизатор по умолчанию и пакет отправляется на него. Он делает точно так же и так продолжается до тех пор, пока пакет не достигнет получателя.

Четвертый уровень - транспортный, самый распространенный - TCP(Transport Control Protocol). Довольно часто также используется протокол UDP. Они отличаются тем,что первый используется для организации соединений, то есть процесс работы очень похож на телефонную связь, устанавливается соединение и т д. Когда передаются данные, он следит за тем,чтобы если какой-то пакет потерялся, он будет послан заново и это будет продолжаться до тех пор, пока пакет не дойдет до получателя. Если произошло дублирование, то TCP отбрасывает дублированный пакет. Пакеты приходят в том же порядке,в котором они были посланы. TCP обеспечивает надежность соединений. UDP ориентирован на сообщения, которые передаются в нем независимо друг от друга. Поэтому никто не гарантирует,что сообщения будут приходить в том же порядке,в котором они были посланы. Он нужен для того,чтобы снизить большие накладные расходы, возникающие при использовании TCP

Очередной пример протокола транспортного уровня: - ICMP(Internet Control Message Protocol). Он нужен для передачи служебных сообщений. Используя ICMP модно проверить доступен ли тот или другой узел или нет (с помощью ping). Ещё одно применение - проверка на зацикливание. Представим,что таблица маршрутизации устроена так, что после прохождения цепи маршрутизаторов сообщение возвращается. Таким образом происходит зацикливание, чтобы этого не произошло, как раз и используется IMCP. Каждое сообщение в этом протоколе имеет собственный тип, то есть номер. В нем есть следующие типы сообщений: 8 - эхо запрос, 0 - эхо ответ и ещё несколько, суть которых не очень-то важна.

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

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

Седьмой уровень - прикладной. Прикладной уровень предназначен для специфической прикладной программы и описывает соответствующий протокол: hhtp, smtp, pop и так далее.

Все протоколы, используемые в ethernet, используют пять уровней вместо семи: физический, канальный, сетевой, транспортный и прикладной, потому что их разработчики львы толстые. Обычно сетевой и транспортный объединяют в одни и получается 4 уровня организации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]