информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяВсе любят медАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Даже и не знаю куда запостить... connect() в сокетах. 14.09.02 16:59  
Автор: PS <PS> Статус: Elderman
Отредактировано 15.09.02 00:31  Количество правок: 1
<"чистая" ссылка>
тут случайно увидел...
Под виндами простейшая программа пытающаяся открыть коннект (ессно используя сокеты) по порту, который ни кем не прослушивается. И что мы видим в tcpdump ? мы видим ТРИ попытки ! Причем с одним и тем же сиквенсом.
Проверил то же самое под линухом: все в порядке - попытка только одна.
И нафига спрашивается ломиться лишних два раза ? Интересно, это так и было задуманно или очередной баг у майкрософта ?

Что бы не быть голословным, привожу тестовые программки и дампы.

Это Windows программка:

#include <stdio.h>
#include <winsock2.h>

void main()
{
	WORD wVersionRequested;
	WSADATA wsaData;	
	int err;
	
	wVersionRequested = MAKEWORD( 2, 2 );
 
	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 ) 
	{		
		return;		
	}
	
 
	struct sockaddr_in server;
	server.sin_family = AF_INET;
	server.sin_port   = htons( 4000 );
	server.sin_addr.s_addr = inet_addr( "192.92.7.1" );

	SOCKET s = socket( AF_INET, SOCK_STREAM, 0 );

	if( connect( s, (struct sockaddr*)&server, sizeof(struct sockaddr_in) ) == -1 )
	{
		printf( "connect faild\n" );
		return;		
	}

	return;


}

---

Вот что показывает tcpdump:

00:12:24.412629 192.92.7.2.2301 > 192.92.7.1.4000: S 2604852891:2604852891(0) win 16384 <mss 1460,nop,nop,sackOK> (DF)
00:12:24.412629 192.92.7.1.4000 > 192.92.7.2.2301: R 0:0(0) ack 2604852892 win 0 (DF)
00:12:24.852629 192.92.7.2.2301 > 192.92.7.1.4000: S 2604852891:2604852891(0) win 16384 <mss 1460,nop,nop,sackOK> (DF)
00:12:24.852629 192.92.7.1.4000 > 192.92.7.2.2301: R 0:0(0) ack 1 win 0 (DF)
00:12:25.352629 192.92.7.2.2301 > 192.92.7.1.4000: S 2604852891:2604852891(0) win 16384 <mss 1460,nop,nop,sackOK> (DF)
00:12:25.352629 192.92.7.1.4000 > 192.92.7.2.2301: R 0:0(0) ack 1 win 0 (DF)

---

А это та же программка запущенная из под Linux:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{
	int sock;
	struct sockaddr_in server = {AF_INET, htons(4000)};
	
	sock = socket( AF_INET, SOCK_STREAM, 0 );
	server.sin_addr.s_addr = inet_addr( "192.92.7.1" );
	if( connect( sock, (struct sockaddr*)&server, sizeof( struct sockaddr_in)) != -1 )
		printf( "OK\n" );
	else
		printf( "FAILD\n" );

	return 1;
}

---

И её tcpdump:
00:20:52.202629 192.92.7.2.32771 > 192.92.7.1.4000: S 4233571007:4233571007(0) win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 0> (DF)
00:20:52.202629 192.92.7.1.4000 > 192.92.7.2.32771: R 0:0(0) ack 4233571008 win 0 (DF)

---
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach