Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба по КС_5.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
143.36 Кб
Скачать

2.2.2. Протокол tcp

Протокол TCP лежит на одном уровне с UDP и работает поверх IP (для отправки данных используется IP). Именно поэтому прото­колы TCP и IP часто объединяют одним названием TCP/IP, так как TCP неразрывно связан с IP.

В отличие от UDP протокол TCP устраняет недостатки своего транспорта (IP). В этом протоколе заложены средства установления связи между приемником и передатчиком, обеспечение целостности данных и гарантии их доставки.

Когда данные отправляются в сеть по TCP, то на отправляющей стороне включается таймер. Если в течение определенного времени приемник не подтвердит получение данных, то будет предпринята еще одна попытка от­правки данных. Если приемник получит испорченные данные, то он сооб­щит об этом источнику и попросит снова отправить испорченные пакеты. Благодаря этому обеспечивается гарантированная доставка данных.

Когда нужно отправить сразу большую порцию данных, не вмещающихся в один пакет, то они разбиваются на несколько TCP-пакетов. Пакеты отправляются порциями по несколько штук (зависит от настроек стека). Когда сервер получает порцию пакетов, то он восстанавливает их очередность и собирает данные вместе (даже если пакеты прибыли не в том порядке, в ко­тором они отправлялись).

Из-за лишних накладных расходов на установку соединения, подтверждения доставки и повторную пересылку испорченных данных протокол TCP намного медленней UDP. Зато TCP можно использовать там, где нужна га­рантия доставки и большая надежность. Хотя надежность нельзя назвать сильной (нет шифрования и есть возможность взлома), но она достаточная и намного больше, чем у UDP. По крайней мере, тут спуфннг не может быть реализован так просто, как в случае с UDP, и в этом вы скоро убеди­тесь, когда прочтете про процесс установки соединения.

Соединения в протоколе TCP

Протокол TCP обеспечивает надежность соеди­нения следующим способом. Все начинается еще на этапе попытки соединения двух компью­теров:

  1. Клиент, который хочет соединиться с сервером, отправляет запрос на сервер, указывая номер порта, к которому он хочет присоединиться, и специальное число (чаше всего случайное).

  2. Сервер отвечает своим пакетом, содержащим специальное число сервера. Он также подтверждает приход пакета от клиента с исполь­зованием АСК-ответа, где специальное число, отправленное клиентом увеличено на 1.

  3. Клиент должен подтвердить приход пакета от сервера с использованием АСК — специальное число сервера плюс 1.

Получается, что при соединении клиента с сервером они обмениваются специальными числами. Эти числа и используются в дальнейшем для обес­печения целостности и защищенности связи. Если кто-то другой захочет вклиниться в установленную связь (с помощью спуфинга), то ему надо бу­дет подделать эти числа. Но так как они большие и выбираются случайным образом, то такая задача достаточно сложна, хотя и разрешима. Стоит еше отметить, что приход любого пакета подтверждается АСК-ответом, что обеспечивает гарантию доставки данных.

2.2. Порты

Что такое порт? Каждая сетевая программа при старте открывает для себя любой свободный порт. Есть программы, которые открывают заведомо оп­ределенный порт, например, для FTP это 21-й порт, HTTP— 80-й порт и т. д. Теперь представим себе ситуацию, что на сервере запушено два сер­виса: FTP и WEB. Это значит, что на сервере работают две программы, к которым можно присоединиться по сети. Скажем, вы хотите присоеди­ниться к FTP-серверу и посылаете запрос по адресу ХХХ.ХХХ.ХХХ.ХХХ на порт 21, Сервер получает такой запрос и по номеру порта определяет, что ваш запрос относиться именно к FTP-серверу, а не WEB.

Получается, что сетевые порты - это что-то виртуальное, что увидеть не­возможно, а точнее сказать — это просто число, по которому программы и ОС определяют, кому пришли данные по сети. Если бы не было портов, то компьютер не смог определить, для кого именно пришел сетевой запрос. Следует помнить, что порты разных протоколов отличаются друг от друга. Например, порт 137 tcp и порт 137 udp – не одно и то же, несмотря на совпадение номера порта.

Зачем нужно сканировать порты? Если знать, какие порты открыты, то можно понять, какие программы запушены на удаленном компьютере. Так, например, если на компьютере открыт 21-й порт, то значит, на нем работает FTP-сервер, и к нему можно попытаться присоединиться с помошью про­граммы FTP Client.

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

Примечание: В файле C:\WINDOWS\system32\drivers\etc\services содержатся номера портов для стандартных служб.

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