• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

سوالات دشوار من

MD66

Registered User
تاریخ عضویت
13 جولای 2008
نوشته‌ها
2,669
لایک‌ها
205
محل سکونت
400 City
سلام
مختصر و مفید بگم
1-چجوری میشه مستقیما با درایور یک کارت LAN کار کرد یعنی درایورش نصب باشه ما خودمون پکتهارو ارسال کنیم منظور اینه که روی کارهایی که لایه های مختلف شبکه انجام میدن هم دخالت کنیم
2- چجوری میشه خودمون درایورش رو هم بسازیم
3- آیا میشه مثل کار با پورت ها که شماره میدادیم برای کارت شبکه هم داد؟ یه جا گفته بود فرق میکنه
4-کلا راهی برای ارسال اطلاعات در بستر شبکه در سطح پایین لایه ها هست؟

5- چه شدنی باشه چه نشدنی(بخاطر سطح دسترسی یوزر) باید بشه :blink: حتی شده آدم با داس بیاد بالا ..:blink:


با تشکر
 

webdev

Registered User
تاریخ عضویت
21 آگوست 2006
نوشته‌ها
148
لایک‌ها
3
سلام
مختصر و مفید بگم
1-چجوری میشه مستقیما با درایور یک کارت LAN کار کرد یعنی درایورش نصب باشه ما خودمون پکتهارو ارسال کنیم منظور اینه که روی کارهایی که لایه های مختلف شبکه انجام میدن هم دخالت کنیم
2- چجوری میشه خودمون درایورش رو هم بسازیم
3- آیا میشه مثل کار با پورت ها که شماره میدادیم برای کارت شبکه هم داد؟ یه جا گفته بود فرق میکنه
4-کلا راهی برای ارسال اطلاعات در بستر شبکه در سطح پایین لایه ها هست؟

5- چه شدنی باشه چه نشدنی(بخاطر سطح دسترسی یوزر) باید بشه :blink: حتی شده آدم با داس بیاد بالا ..:blink:


با تشکر

سلام،
یک ماهی از ارسال آخرین پست می گذره ولی فکر کنم خالی از لطف نباشه دو خط پای این تاپیک اضافه کنم.

1- کتابخانه ای هست بنام libpcap که API لازم برای این کار رو در اختیارتون میگذاره. برای اطلاعات بیشتر به Wikipedia مراجعه کنید.

2- باید پشته TCP/IP و همه پروتکل های دیگری که نیاز دارید رو پیاده سازی کنید. این مسائل در سیستم عامل پیاده سازی شده و بخشی از سیستم عامل هست و تو ویندوز و امثالهم اصلاً فکرش رو نباید کرد. یک زمانی دنبال پروژه ای بودم که بنده خدایی روی FreeBSD یک کارهایی در همین رابطه کرده بود اما کدش رو به اشتراک نگذاشته بود.

3- با pcap میشه. یعنی به برنامه میگید این بسته ای که می خوام بفرستم روی کدوم کارت شبکه بره. مقصود کارت شبکه کامپیوتر مقصد نیست ها، شما بسته رو assemble می کنید بعد میگید بره رو کارت شبکه شماره فلان.

4- راه هست اما تا چه سطحی پایین می خواهید برید؟ اگر از RAW Socket ها استفاده کنید 99% امکان پذیره (البته در لینوکس ها و ویندوزهای قبل از XP، در ویندوز XP برنامه کامپایل میشه اما چون RAW socket ها رو به دلایل امنیتی ساپورت نمیکنه جواب نمیگیرید.) اما اگر میخواهید حتی پایین تر از اون برید و مستقیم با خود کارت شبکه صحبت کنید کار خیلی سخت تر میشه. واقعیت امر بعد از دو هفته صرف وقت و topic زدن تو یکی دو تا فروم جواب نگرفتم. تنها یکی دو تا از sample های خود pcap کار کرد و کوچیکترین تغییر در اونها باعث عدم ارسال بسته میشد. فوق العاده حساس هست، حتی یک بیت جا بجا بشه کل بسته بخاطر checksum نادرست drop میشه.

5- برای اینجور کارها اصلاً دنبال ویندوز نباشید. البته اگر قصد استفاده از RAW Socket ها رو دارید ویندوز 2000 رو پیشنهاد می کنم. Linux یک مقدار دست شما رو بازتر میگذاره تا هر کاری می خواهید انجام بدید اما به این راحتی ها هم نیست. روی Ubuntu چندین بار سعی کردم با libpcap بسته ای رو بفرستم اما تا بسته برای ارسال به سیستم عامل تحویل داده میشد یک سری از فیلد های هدر رو تغییر می داد و بسته رو خراب می کرد. شاید روی سیستم عاملی مثل FreeBSD جواب بگیرید.

موقع کد نویسی چنین برنامه هایی هم WireShark واقعاً برای debug کردن لازمه.

موفق باشید
 
Last edited:

MD66

Registered User
تاریخ عضویت
13 جولای 2008
نوشته‌ها
2,669
لایک‌ها
205
محل سکونت
400 City
ممنون از راهنماییهاتون:rolleyes::rolleyes:
خدا رو شکر یه فرد حرفه ای یافت شد:دی

هدف اینه که یکسری داده رو هر چه سریعترین بصوریت اولویت بندی شده به مقصد بفرستیم
و مقصد هم بتونه این داده هارو بگیره
تو مایه های تعریف پروتکل جدید!
سرعت و اینکه مثلا به دلیل کالیژن و برخورد داده با تاخیر ارسال نشه برامون مهمه
مثلا یه کامپیوتر که وظیفش مهمتره وقتی داده برای ارسال داشت خط رو قبضه کنه و هر چی داده رو خط هست رو بزاره کنار
تو مایه های شبکه های can bus
 
Last edited:
بالا