PDA

View Full Version : تعریف پروتکل



phantasm
سه شنبه 13 مرداد 1388, 11:19 صبح
آیا میشه توی سی شارپ یه پکت IP با Protocol Number تعریف نشده مثلا مقدار 250 ساخت ؟

Sociant
سه شنبه 13 مرداد 1388, 12:40 عصر
بعید میدونم بشه تو سی شارپ مستقیما پکت ساخت. چون وقتی شما بوسیله کلاسهای TCPClient,TcpListener,UdpClient و Socket بین دو نقطه پایانی ارتباط برقرار می کنین، براساس شماره پورتی که مشخص میکنین این کلاسها خودشون هنگام ارسال دیتا شماره پورت رو داخل پکت های IP قرار میدن

tdkhakpur
سه شنبه 13 مرداد 1388, 14:15 عصر
سلام
یعنی میخواهید داده ها را بدون استفاده از لایه ها روی خط ارسال کنید؟

Unknownlive
سه شنبه 13 مرداد 1388, 15:51 عصر
نمیشه اما می تونی از کامپوننت IP Worker که در این زمینه کامله استفاده کنی !!!

phantasm
سه شنبه 13 مرداد 1388, 22:57 عصر
یعنی نمیشه یک پکت با پروتکل خودمون تعریف کنیم ؟ اصلا این کار توی ویندوز شدنیه ؟
با IP Worker میشه چیکار کرد ؟
من میخوام یک پکت با پروتکلی که خودم تعریف میکنم بفرستم .پسProtocolType.Unknown یا ProtocolType.Unspecified به چه دردی میخوره ؟

tdkhakpur
سه شنبه 13 مرداد 1388, 23:57 عصر
من میخوام یک پکت با پروتکلی که خودم تعریف میکنم بفرستم .پسProtocolType.Unknown یا ProtocolType.Unspecified به چه دردی میخوره ؟

سلام
فقط محض مطالعه به عرض شما برسانم شما برای اینکه پروتکلی را بسازید یا اینکه سخت افزار را خودتان طراحی کنید یا اینکه با خارج کردن پروتکل جاری - سرویس خودتان که که همان پروتکل را همراه داره پیاده سازی کنید.
به طور کلی اگر با سخت افزار کنونی دارید کار میکنید و در آینده هم کار خواهید کرد باید از پروتکل جاری استفاده کنید و پروتکل غیر استانداردی که شما بیان میکنید به هیچ وجه قابل اجرا و عملی نیست.
دلیلش هم این هست که برای انتقال و یا هر نوع عملیات با شبکه احتیاج به رعایت قوانین دارید مثلا داخل لایه اینترنت همیشه بصورت استاندارد ورژن و Ip و port و سایر اقلام که مخصوص هدر پاکت محسوب میشود قرار دارد که پروتکل شما هم باید این قوانین را داشته باشد تا به لایه بعدی که بسته بندی و دیگر عملیات روی داده ها انجام میشود ارسال شود.
خوب شما میتوانید با پروتکل جاری پروتکل مخصوص خودتان را به صورت داده و توسط یک ساختار توضیح داده شده توسط TCP/IP ارسال و دریافت کنید.

phantasm
چهارشنبه 14 مرداد 1388, 02:25 صبح
منظور من از تعریف پروتکل ، در لایه 3یا کلا بر بر روی پروتکل IP بود .همونطور که میدونید بسته های IP یه ساختاری دارن ؛ که درون فیلد Payload اونها داده هایی قرار میگیره که توی لایه بالاتر (مثل پروتکل TCP) یا توی همون لایه (مثل ICMP) ساخته شدن و اصولا وقتی بسته ها پایین میرن توی لایه های شبکه پروتکل های زیرین به محتوای داده هایی که از بالا میان کار ندارن .
حالا توی این پروتکل IP کذایی یه فیلدی وجود داره به اسم Protocol که هشت بیتی تشریف دارن .و محتوای اون نشون میده که این بسته IP توی خودش داده هایی از چه پروتکلی رو حمل میکنه ، مثلا برای TCP این مقدار 6 و برای ICMP مقدار یک داره .حالا خود این پروتکل IP گفته که مقادیر 140 تا 252 UNASSIGNED هستند یا 255 Reserved است ، حالا من قصد دارم یه ساختاری مثلا به صورت زیر :


struct MyProtocol
{
public byte type;
public byte Parameters;
public ushort checksum;
public ushort id;
}
تعریف کنم و واسش مقدار مثلا 250 رو انتخاب کنم و بفرستم بره .حالا اگه راهنمایی بفرمایید ممنون میشم .

tdkhakpur
چهارشنبه 14 مرداد 1388, 12:47 عصر
ببینید خوب میگویید بفرستم بره - میخواهید از کدام ابزار برای ارسال استفاده کنید مگه شما با Port سخت افزاری آشنایی دارید یا اینکه میتوانید لایه ها را خودتان ایجاد کنید و به سخت افزار مخصوص ارسال داده کنید؟
منظور از فیلدی که مخصوص نوع پروتکل هست این نیست که شما بتوانید پروتکل شخصی را جایگزین کنید این فیلد یک نوع تعرف برای سخت افزار هست نه طراحی شخصی...

phantasm
چهارشنبه 14 مرداد 1388, 13:49 عصر
ابتدا بگم که من میدونم این کار حداقل توی ویندوز و با استفاده از کلاسهای موجود System.Net.Sockets و System.Net شدنی نیست ولی باید خدمت جنابعالی و دوستانی که اینجا رو مطالعه میکنند باید عرض کنم صحبتهای شما درست نیست ؛
اصلا چه ربطی به پورت سخت افزاری داره موضوع ؟ شما عرایض قبلی من رو بخونید ! نه من و نه هیچ موجود دیگه ای توی این کره خاکی نمیتونه حتی با طراحی تمام لایه های شبکه پکتی بر اساس اون رو ارسال کنه مگر اینکه تمام زیرساخت فیزیکی شبکه از اون طراحی تبعیت کنند ، خوب من که گفتم چیکار میخوام بکنم و شما گفتید "میخواهید از کدام ابزار برای ارسال استفاده کنید مگه شما با Port سخت افزاری آشنایی دارید یا اینکه میتوانید لایه ها را خودتان ایجاد کنید و به سخت افزار مخصوص ارسال داده کنید؟"

حالا قسمت دوم بیانات شما ، سخت افزار مطلقا از لایه سه به بالا رو کار نداره ، پس این حرف شما :" منظور از فیلدی که مخصوص نوع پروتکل هست این نیست که شما بتوانید پروتکل شخصی را جایگزین کنید این فیلد یک نوع تعرف برای سخت افزار هست نه طراحی شخصی..." از نظر علمی کاملا نادرسته !
این که نمیتونم این کار رو بکنم برمیگرده به ساختار کلاسهای سوکت و عدم حمایت ویندوز .
از توجه شما ممنونم .
موفق و پیروز باشید.

tdkhakpur
پنج شنبه 15 مرداد 1388, 00:25 صبح
این که نمیتونم این کار رو بکنم برمیگرده به ساختار کلاسهای سوکت و عدم حمایت ویندوز .
از توجه شما ممنونم .

سلام
من منظورم این نیست که فاصله علمی از هم داریم ولی به طور کلی شما باید از رابطهای آماده برای ارسال پروتکل شخص خودتان استفاده کنید همانطور که خودتان استحضار دارید روز به روز شرکتهایی که برای کار بر روی شبکه ها فعالیت دارند اقدام به ارتقا و ایجاد لایه های جدید میکنند اگر میتوانستند و برایشان هزینه کمتری داشت سیستم لایه بندی و مخصوصا فیلد ip را که منجر به کمبود فضای آدرس شده را از اول اصلاح و پروتکل جدیدی را جایش قرار میدادند پس هر کاری عملی هست اما به جیب هم باید نگاه کرد.(البته IPV6 هست ولی اجرا نشده و ما همنچنان بار آدرس را روی port قرار دادیم.)
ولی آنچه که شما میخواهید بطور آشکار توضیح ندادید که منظورتان از این کار چی هست.
به هر حل همان ساختار خودتان را میتوانید با همین TCP/IP ارسال و دریافت کنید و پروتکل شخصی خودتان را داشته باشید که هیچ کس ازش نمیتواند اطلاع هم داشته باشد.