|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать » Как работает TCP-соединение |
|
Как работает TCP-соединение
|
Старожил Сообщения: 483 |
Здравствуйте! Подскажите, пожалуйста, не получается усвоить материал касающийся TCP-соединений. Я не очень понял то, как это в этой статье описано. TCP-пакет не содержит никакой информации о IP-адресе источника и приёмника, она есть в IP-пакете в который TCP-пакет вложен. Ключевой информацией в заголовке TCP-пакета являются номера портов источника и приёмника и, что наиболее интересно - флаги.
Вот написано, что для установления соединения клиент посылает серверу TCP-пакет с флагом SYN. В случае, если сервер может ответить на такой запрос, он отсылает клиенту SYN+ACK, если не может - то отсылает RST. Далее написано, что при передаче данных периодически идут пакеты с флагами SYN и ACK, а завершается соединение либо отсылкой пакета с флагом FIN, либо по таймауту. Что мне непонятно в описании: 1. SYN это всегда запрос, а ACK это всегда ответ, либо бывают ответы с флагом SYN. В общем непонятно, как при помощи фаерволла можно запрещать хосту входящие соединения, фильтруя пакеты по флагам. Какие именно флаги при этом нужно отфильтровывать? 2. Допустим, что это HTTP-соединение. Клиент серверу шлёт GET-запрос, сервер клиенту высылает запрашиваемый файл. И файл и запрос в один пакет не поместятся, речь идёт о последовательности пакетов. Так вот, флаги SYN и ACK установлены только на первом пакете в последовательности или во всех? 3. Ещё раз про HTTP. а) Сначала на клиенте браузер выбирает произвольный свободный порт, номер которого выше 1024 и начинает его слушать. б) Потом браузер шлёт SYN-пакет серверу, указав портом источника этот самый выбранный порт, а портом приёмника 80. Начало GET-запроса как раз в этом самом SYN-пакете будет? в) Дальше непонятно, но об этом я уже в пунктах 1 и 2 задал. Какие флаги должны будут стоять на пакетах, когда запрашиваемая страница придёт к клиенту и как должен вести себя фаерволл, чтобы не допустить в открытый порт пакеты не от общающегося сервера, а от какого-то левого хоста? г) Какой механизм используется, чтобы отставить соединение открытым, чтобы браузер потом мог запросить изображения, таблицы стилей и другие компоненты веб-страницы? |
|
Отправлено: 21:08, 11-03-2013 |
Старожил Сообщения: 483
|
Профиль | Отправить PM | Цитировать up!
|
Отправлено: 18:33, 16-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать Цитата RasKolbas:
Цитата RasKolbas:
Однако! Есть один нюанс. Многие протоколы устанавливают сразу несколько соединений. К примеру, FTP в активном режиме. Причем эти соединения инициируются сервером, а не клиентом. Поэтому простая проверка флагов TCP-пакета заодно заблокирует и все подобные протоколы, начиная с активного режима FTP и заканчивая torrent'ом. Цитата RasKolbas:
Цитата RasKolbas:
Цитата RasKolbas:
Цитата RasKolbas:
Поскольку пакеты от "левых узлов" имеют другой ip отправителя, они легко отсеиваются брандмауэром. Цитата RasKolbas:
Поэтому никакого механизма "чтобы отставить соединение открытым" не существует в природе. Существует прямо обратный механизм - закрытия сессии. До тех пор, пока он не применен, сессия будет оставаться открытой (если не прервется по таймауту). |
|||||||
------- Отправлено: 19:14, 16-03-2013 | #3 |
Ветеран Сообщения: 1024
|
Профиль | Отправить PM | Цитировать RasKolbas, Протокол TCP
Протокол TCP/IP или как работает Интернет . How TCP/IP Works. How TCP/IP Works™ .com Lecture Series. Ускорение доступа в Internet с помощью функции Traffic Shaping. Обновлено: Цитата RasKolbas:
|
|
------- Последний раз редактировалось prosto user, 11-04-2013 в 19:53. Отправлено: 14:17, 17-03-2013 | #4 |
Старожил Сообщения: 483
|
Профиль | Отправить PM | Цитировать prosto user, к сожалению мне ваши ссылки не помогли, я пока только только собираюсь через два месяца на курсы английского пойти. А в последней ссылке - просто принципы функционирования сети даны, я это ещё 4 года назад проходил.
AMDBulldozer, не совсем понял и статью в википедии, и ваш ответ. Или и там, и там недостаточно подробно алгоритм описан. Интересуюсь не просто так, а для потому что для дипломной работы нужно написать экспертную систему, которая будет закрывать порты и защищать от атак типа SYN flood. На счёт понятия сессии вроде понятно. Сессия открывается трехэтапным процессом установления соединения. То есть браузер должен сначала открыть сессию (убедиться что на удалённом сервере сокет перешёл в состояние ESTABLISHED), а только потом посылать GET-запрос, я правильно понял? И меня больше интересуеют настройки клиента. Правила сетевой безопасности рекомендуют блокировать входящие соединения на хосте, если он не является сервером. В то же время нельзя просто взять и заблокировать весь входящий трафик, потому как хост должен работать как клиент (принимать входящие пакеты, являющиеся ответом в созданные им исходящие соединения). Понять является ли пакет ответом или попыткой приконнектиться можно только посмотрев на его флаги. То есть, если я заблокирую все пакеты содержащие единственный флаг SYN, я при этом отключу на хосте возможности сервера, оставив возможности клиента или как? То есть при помощи брадмауэра netfilter, входящего в состав ядра Linux это так делается? iptables -t filter -A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK,FIN SYN -j DROP iptables -t filter -A INPUT -i eth0 -p tcp -j ACCEPT Какой вариант более правильный? |
|
Отправлено: 03:10, 21-03-2013 | #5 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата RasKolbas:
TCP (русский) Одна из атак на TCP Сканирование портов TCP rfc 793 (оригинал) Статья про стандарты интернета От себя хочу добавить. Стандарты - крайне интересная вещь, если "распробовать". Есть риск провалиться в них и потерять время. Цитата RasKolbas:
Если дробить:
|
||
------- Отправлено: 08:49, 21-03-2013 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - [решено] Как отключить одно TCP соединение с помощью командной строки? | 4pok | Microsoft Windows 2000/XP | 7 | 13-10-2013 00:39 | |
Разное - не работает сеть по протоколу TCP/IP | akalibr | Microsoft Windows 2000/XP | 4 | 27-06-2011 23:05 | |
Интерфейс - Не работает диалоговое окно при смене настроек TCP\IP | Ar4ers | Microsoft Windows 7 | 0 | 03-03-2010 22:07 | |
Прочее - "Ошибка tcp/ip или соединение закрыто" | zsa | Сетевые технологии | 3 | 11-08-2009 06:59 | |
Как закрыть tcp соединение средствами Windows | VladimirET | Microsoft Windows 2000/XP | 4 | 13-06-2006 06:56 |
|