logo
Unix (28

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

28.03.2012

Теги:протоколы транспортного уровня, адрес сокета, привилегированные порты, глобально и локально маршрутизируемые IP-адреса, broadcast-адрес, мультикастовые адреса, Telnet, telnet-клиент, telnet-сервер, порт 25, протокол http, порт 80, GET, POST, сетевой порядок байтов, big-endian, little-endian, realpath.

IP-сокеты.

Два основных протокола, используемых в интернете, TCP и UDP — протоколы транспортного уровня (о чём идёт речь, ищи в предыдущей лекции). UDP протокол передает сообщения (пакеты) между двумя компьютерами независимо друг от друга. TCP протокол ориентирован на соединения, то есть сообщения передаются не отдельными сообщениями, а как единый поток данных. В отличие от UDP, TCP никогда не теряет пакеты, а если пакет потерялся, он будет передан заново. Пакеты всегда приходят в том порядке, в котором они были посланы и каждый пакет приходит ровно один раз. То есть соединение в протоколе TCP — непрерывный поток байтов. У соединения есть фаза установления соединения, фаза передачи данных и фаза завершения соединений. Посмотреть, в каком состоянии находится соединение можно с помощью команды netstat

netstat -a ← показывает также соединения в состоянии listen

Пример работы:

Active Internet connections (including servers)

Proto Recv-Q Send-Q Local Address Foreign Address (state)

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.12204 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.5936 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.61434 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.50991 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.34580 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.38364 ESTABLISHED

tcp4 0 52 172.21.240.250.ssh 144.206.250.37.55637 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.26666 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.55044 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.60172 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.9216 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.32582 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.57154 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.62741 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.250.37.3594 ESTABLISHED

tcp4 0 0 172.21.240.250.ssh 144.206.178.45.29880 ESTABLISHED

tcp4 0 0 172.21.240.250.http *.* LISTEN

tcp4 0 0 localhost.smtp *.* LISTEN

netstat –n ← покажет имена.

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

Для того, чтобы произошло соединение между компьютерами, и можно было послать сообщение, отправитель может иметь возможность найти получателя. Для этого используется адрес сокета. И в TCP, и в UDP в качестве адреса сокета используется два числа: первое — IP-адрес компьютера, второе — номер порта. IP-адрес позволяет найти компьютер, которому адресовано сообщение, порт позволяет найти среди всех программ, выполняемых на компьютере ту, которой сообщение адресовано.

Порты — 16-ти битное целое число. В некотором смысле порт привязывается к программе с помощью bind(). Пара IP-адрес + порт и есть адрес сокета.

Какие бывают порты:

Привилегированные порты (от 0 до 1023). Использовать их может только

суперпользователь (то есть только он может привязывать их к программе). Когда мы

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

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

протоколу соответствует свой номер порта: html – 80, ssh – 22, ftp – 21, telnet – 23,

sntp– 25, POP3 – 110.

Какие бывают ip-адреса:

Ip-адреса бывают двух видов: глобально маршрутизируемые и локально маршрутизируемые.

    1. Глобально маршрутизируемые адрес (или «белый») — адрес, маршрут для

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

маршрутизируемые адреса уникальны.

    1. Локально маршрутизируемые адреса (или «серые)— это такие адреса, которые

используются внутри какой-то организации. В разных организациях может так

случиться,что компьютеры имеют одинаковый локально маршрутизируемый адрес.

Для обоих типов адресов выделены специальные подсети, которые описаны в RFC 3330 (или более раннем RFC 1918). Для каждого адреса в этих RFC указано его предназначение, но нас интересует таблица в RFC1918, в которой описывается, что для локально маршрутизируемых адресов выделены три подсетки: сетки размером 2^24, 2^20 и 2^16. Они приведены ниже. Здесь и далее запись XXX.XXX.XXX.XXX/YYY означает IP-адрес, а число после слеша количество единиц в маске. Таким образом маску легко и коротко можно записать одним числом.

10.0.0.0 - 10.255.255.255 (10/8 prefix)

172.16.0.0 - 172.31.255.255 (172.16/12 prefix)

192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

Какие ещё есть подсетки? Каждый сетевой интерфейс имеет IP-адрес и маску. Если наложить маску на IP-адрес, то мы получим адрес сети, таким образом любой IP-адрес сетевого интерфейса состоит из двух частей: адреса сети и адреса компьютера внутри сети.

Где проходит граница, определяется сетевой маской. У всех компьютеров, у которых одинаковый адрес сети, есть broadcast-адрес, у которого на месте адреса компьютера стоят единички, что позволяет принимать сообщение по этому адресу всем компьютерам из подсети. IP-адрес, у которого везде нули, где у маски нули, это фактически адрес сети. Компьютерам этот адрес не присваивается. Таким образом первый и последний адрес не используется.

Ещё один выделенный адрес 255.255.255.255 используется для рассылки сообщений компьютерам широковещательных сообщений в одном физическом сегменте.

Важная подсеть 127.0.0.0/8 – это адрес loopback-интерфейса.

Подсеть 169.254.0.0/16 используется для назначения IP-адреса компьютеру, если он не смог получить его другим способом.

224.0.0.0/4 и 240.0.0.0/4мультикастовые адреса. Когда используется адрес из этой подсетки это значит,что когда передаются сообщения, то они адресуются сразу нескольким компьютерам. Обычно они используются для передачи мультимедия данных (IP-телевидения, радио и так далее).