| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Сетевые технологии > Вопрос прос SYN, SYN/ACK и ACK |
| Автор: Nookie 26.11.2008, 01:44 | ||||
| пишу прогрмму, которая создает соединение с помощью ROW сокетов, то есть SYN, SYN/ACK и ACK. В общем написал ее и начал тестировать, разобрался с SEQ_NUM, вроде все правильно.. вот только соедниение не создается, а мне в ответ сразу прилетает RST пакет, типа ты неправильно сделал что-то.... вот не пойму в чем неправильность. МОжет кто подскажет в чем еще ньюансы есть, кроме как SEQ_NUM и ACK_NUM?? Жду ответа. Еще проанализировал пакеты, например если создает соединение другая прога
Это то что получилось например с Оперой, при подключении к Серверу. А вот что выдает моя программа
Но на это все в итоге получаю RST пакет о разрыве соединения... Жду помощи, очень хочется разобраться в этом. |
| Автор: Nookie 26.11.2008, 02:33 |
| Это все я экспериментировал на полигоне, который построил на VMwere. Попробывал на внешнем IP, соединение создается.. а вот что за фигня с моей сетью не пойму.... |
| Автор: Олег2005 26.11.2008, 15:36 |
| Опера шлет окно размером Window :5840 = 1460*4 (MSS=1460 для эзернета) Вы шлете: Window :65535 При этом в Опере есть опция MSS - (длина TCP-хедера 40 байт) и еще какие-то а у вас его в SYN-сегменте нет - длина TCP-хедера 20 байт. - а значит MSS по умолчанию - 576 байт, а окно - огого..... Вот сервер и считает наверно это дело непонятным - и рвет соединение. |
| Автор: Nookie 26.11.2008, 19:10 | ||
попробывал tcpdump проверить что я шлю и что браузер... в итоге отличается на вот это
ты не в курсе как добавить это програмно? или хотябы что почитать по этому поводу. В инете мало чего можно найти про реализацию соединения на основе RAW сокетах. |
| Автор: Олег2005 26.11.2008, 19:40 |
| Все правильно - в SYN-сегменте всегда шлем MSS - ну а остальное уж по установкам в регистрах - например SACK и время и тд Просто в TCP-хедере надо прописать все эти опциии - тогда и офсет будет другой - хедер то увеличится.. |
| Автор: Nookie 26.11.2008, 19:59 |
| не пойму.. а почему это не кажется странным внешниму айпи? а только для моей машинки ВМВаре? |
| Автор: Олег2005 26.11.2008, 20:22 |
| Сказать трудно Может у ВМ какой-то свой вариант модулей TCP IP? Или она эмулирует стек? Или использует оригинальным каким-то образом? Сие науке неизвестно........а мне и подавно Видимо причина в ВМ |
| Автор: Nookie 26.11.2008, 21:49 |
| Вообще спасибо за ответы, очень помогли ;) можно закрыть тему ;) Всему виной ВМваре ;) |
| Автор: Nookie 28.11.2008, 14:08 |
| Все таки не пойму.. ка кна программном уровне делать что-то с MSS??/ Добавлено через 1 минуту и 8 секунд И еще вопрос такой, когда отправляю последний ACK, то уже в нем присеть мой запрос? ну например запрос GET для HTTP? |
| Автор: Nookie 28.11.2008, 14:58 | ||||
Ну вот к примеру заголовок TCP
Как сюда впихнеть MSS? я просто чуток не понимаю... Добавлено @ 15:10 заполняем так
Может надо структура по-новому определить? |
| Автор: Nookie 28.11.2008, 15:19 | ||
Можно наверное и так определить
|
| Автор: Олег2005 30.11.2008, 14:56 |
Конечно структура будет другая - увеличится на поле для MSS и поле для дополнения с помощью nop |