
- •4.1. Создание, изменение и удаление учётных записей
- •4.1.1. Введение
- •4.1.2. Добавление пользователя
- •4.1.3. Изменение параметров пользовательской учётной записи
- •4.1.4. Удаление учётной записи
- •6.1. Определение существующих установок tcp/ip
- •Комментарий
- •6.1.1. Ifconfig(8) — настройки сетевых интерфейсов
- •6.1.2. Netstat(1)
- •6.1.2.1. Таблица маршрутизации
- •6.1.2.2. Статистика
- •6.1.2.3. Работающие интернет сервисы и открытые сокеты
- •6.1.2.3.1. Открытие tcp соединения (тройное рукопожатие)
- •6.1.2.3.2. Закрытие tcp соединения
- •6.1.3. Route(8)
- •6.1.4. /Etc/resolv.Conf(5)
- •6.2.2.1. Изменение настроек физического уровня
- •6.2.2.2. Изменение настроек канального уровня
- •6.2.2.2.1. Изменение mac-адреса:
- •6.2.2.2.2. Смена флагов канального уровня
- •6.2.2.3. Изменение настроек сетевого уровня
- •6.2.2.3.2. Ip, маска подсети, широковещательный адрес
- •6.2.2.3.4. Другие протоколы сетевого уровня
- •6.2.3. Route(8) — настройка таблицы маршрутизации
- •6.2.4. Resolv.Conf(5) — настройка клиента dns
- •6.2.5. Hosts(5) — локальная база имён
- •6.2.6. Как сохранить установленные сетевые параметры
- •6.2.6.1. FreeBsd
- •6.3. Определение какие tcp или udp порты открыты в системе
- •Комментарий
- •6.3.1. Fstat(1)
- •6.3.2. Sockstat(1)
- •6.3.3. Lsof(1)
- •6.3.4. Nmap(1)
- •6.4. Проверка доступности tcp/ip сервиса
- •Комментарий
- •6.4.1. Ping(8)
- •6.4.2. Traceroute(1)
- •6.4.3. Hping(8)
- •6.4.4. Telnet(1), nc(1)
6.1.2.3.1. Открытие tcp соединения (тройное рукопожатие)
Пусть клиент открывает соединение с сервером. Тогда говорят, что клиент осуществляет активное открытие соединения, а сервер пассивное открытие соединения. Изначально сервер находится в состоянии LISTEN.
Клиент посылает запрос на открытие соединения и переходит в состояние SYN-SENT.
Сервер получает этот запрос и отправляет в одном пакете два сообщения: 1) подтверждение получения запроса на открытие соединения, 2) свой собственный запрос на открытие соединения. При этом сервер переходит из состояния LISTEN в состояние SYN-RECEIVED.
Клиент получает подтверждение на запрос об открытии соединения и запрос на открытие соединения, посланные в одном пакете. В ответ он посылает подтверждение серверу. После этого клиент уже может посылать данные. Он может начать посылать данные сразу, в одном пакете со своим подтверждением. Таким образом он переходит из состояния SYN-SENT в состояние ESTABLISHED. Сервер получив от него подтверждение начинает принимать данные и тоже переходит в состояние ESTABLISHED (из состояния SYN-RECEIVED).
Теперь стороны могут обмениваться данными в обе стороны, в состоянии ESTABLISHED, обе стороны высылают друг другу пакеты с данными, время от времени присылая подтверждения о получении этих пакетов, причём в одном подтверждении может подтверждаться получение большого числа пакетов.
Процесс открытия соединения часто называется тройным рукопожатием, так как происходит обмен тремя пакетами в обеих направлениях. (См. так же Раздел B.1.4.3.2, «Открытие соединения TCP, тройное рукопожатие».)
6.1.2.3.2. Закрытие tcp соединения
Пусть клиент закрывает соединение с сервером. Тогда говорят, что клиент выполняет активное закрытие, а сервер пассивное закрытие. Изначально оба хоста пребывают в состоянии ESTABLISHED.
Клиент посылает запрос на закрытие соединения и переходит в состояние FIN-WAIT-1
Сервер получил этот запрос и выслал подтверждение о его получении. Теперь он перешёл в состояние CLOSE-WAIT
Клиент получил подтверждение и перешёл из FIN-WAIT-1 в FIN-WAIT-2. Говорят, что это соединение «полузакрыто»: клиент не может посылать данные серверу, но сервер может посылать данные клиенту, ведь он ещё не закрыл соединение. Клиент сказал, что разговор окончен, а сервер ответил, что он услышал, но сервер ещё не сказал, что разговор окончен, он может продолжать посылать данные.
Сервер дозрел и тоже стал закрывать соединение. Он посылает клиенту запрос на закрытие соединения и переходит из CLOSE-WAIT в LAST-ACK
Клиент получил этот пакет и послал подтверждение. При этом он перешел в состояние TIME-WAIT. Если подтверждение посланное клиентом недошло до сервера, сервер вновь пошлёт запрос на закрытие соединения и клиент снова на него отреагирует. А если со стороны сервера ничего не пришло, значит он получил подтверждение. Время для TIME-WAIT выбирается такое, в течение которого пакеты заведомо успевают пройти в обе стороны. Когда сервер получает подтверждение на свой запрос, он переходит из состояния LAST-ACK в CLOSED (или снова LISTEN). Клиент, переходит из TIME-WAIT в CLOSED если в течение указанного периода времени он не получил никаких ответов.