آکادمی برنامه نویسان

لوگو

توضیحات دوره

در تولید و توسعه نرم افزار ها از زمان شروع به آنالیز و طراحی نرم افزار تا خروج نرم افزار از چرخه تولید نرم افزار در هر مرحله چالش های بسیاری وجود دارد که طراحان نرم افزار سعی دارند با کسب دانش در کسب و کار هدف و با استفاده از دانش خود بر هر یک از این چالش ها پیروز گردند. در این میان توسعه دهندگان با بروز نگاه داشتن اطلاعات خود سعی در استفاده از کامپوننت ها و تکنولوژی های جدیدتر دارند تا زمان برنامه نویسی در سطوح پایین تر را با زمان توسعه در کسب و کار هدف جایگزین نمایند. جایگزینی استفاده از کامپوننت ها در توسعه باعث شده است تا بعضی از توسعه دهندگان امروزه از مفاهیم پایه ای مانند مفاهیم سیستم عامل، کامپایلرها و شبکه های کامپیوتری اطلاعات کمتری داشته باشند. مفاهیمی که عدم توجه به آنها میتواند ایرادات اساسی در امنیت ، معماری، توسعه ، تست و در نهایت خروجی محصول نرم افزاری ایجاد کند.

عدم وجود اطلاعات مقدماتی از شبکه های کامپیوتری و برنامه نویسی شبکه در بین توسعه دهندگان ( خصوصا توسعه دهندگان دات نت که با فریم ورک سطح بالا و معماری پیشرفته دات نت تمامی نیازهای خود را برآورده میبینند ) باعث وجود مشکلات زیادی در دسترس پذیری، محرمانگی و تمامیت نرم افزارهای تولیدی در کشور ما شده است. نمونه ی بارز آن پایین بودن امنیت در تولید نرم افزار های داخل و همچنین سیل گسترده ای از نرم افزارهای تحت وب است که با افزایش اندکی بار شبکه از کار افتاده و غیر قابل استفاده میشوند ( بدیهیست که عدم اطلاع از شبکه های کامپیوتری تنها عامل مشکلات این دست از نرم افزارها نیست و مشکلاتی همچون معماری ضعیف و عدم طراحی درست پایگاه داده نیز در آن میتواند دخیل باشد ).

پیش نیازها

مخاطبان این دوره

  • توسعه دهندگانی که علاقمند هستند با افزایش دانش شبکه خود را گسترش داده تا از دانش حاصل شده در برنامه نویسی سطوح پایین  شبکه استفاده کنند
  • توسعه دهندگانی که علاقمند هستند با افزایش دانش شبکه خود برنامه های تحت وب را بهتر و بهینه تر طراحی کنند
  • توسعه دهندگانی که خواهان شرکت در دوره های امنیت کد هستند.

سرفصل دوره

  • یادآوری مقدمات C#
    • کلاسها و شی گرایی
    • رشته ها در سی شارپ
    • ساختمان داده
    • چند نخی و برنامه نویسی آسنکرون
    • مدیریت خطاها
    • استفاده از توابع WINDOWS API
    •  .Net و PowerShell
  • مقدمات شبکه
    • انواع دستگاه های شبکه
      • هاب
      • ریپیتر
      • مودم
      • NIC
      • بریج
      • سوئیچ
      • فایر وال
      • DHCP  سرورها
      • IDS/IPS  
      • Load Balancer
      • سرورهای DNS
      • سرور های پروکسی
    • IP در شبکه های کامپیوتری
      •  پروتکل TCP/IP
      • آدرس IP  ها در شبکه های عمومی و شبکه های خصوصی
      • مفهوم Broadcast  در آدرس ها
      • نکته هایی درباره IPV6
      • IP Sub netting
      • NAT
      • IP Routing
      • DNS   و IP
        • SOA
        • A Record
        • NS
        • CNAME
        • HINFO
        • MX
        • PTR
    • ابزار شبکه
      • ابزار اسنیف شبکه
        • شناسایی انواع پروتکل های معروف
        • آنالیز مقدماتی پکت ها
        • فیلتر کردن انواع پروتکل
      • پورت اسکنر ها
      • هرکیولس
  • مقدمات برنامه نویسی شبکه در C#
    • بدست آوردن IP   شبکه با کد
      • با استفاده از رجیستری
      • با استفاده از  WMI
      • با استفاده از DNS
    • کلاس IPAddress و IPEndPoint
    • انواع سوکت کلاینت و اتصالات
    • ارتباط سوکت با سرور
    • مدیریت خطا ها در سوکت
    • برنامه نویسی ساده تر سوکت ها استفاده از Helper ها
    • مدیریت DNS   
      • کوئری های nslookup
      • Windump
      • Wireshark
    • مدیریت DNS  با کلاس Dns دات نت
      • بررسی توابع کلاس
  • پیاده سازی  Connection Oriented
    • تست برنامه های بر پایه سوکت TCP با استفاده از نرم افزار
      • تست کلاینت ها
      • تست سرور ها
    • مشکلات برنامه نویسی سوکت
      • انتخاب اشتباه بافر ها
      • انتخاب اشتباه تقدم و تاخر ارسال و دریافت
      • راه حل جلوگیری از انتخابات اشتباه
    • مدیریت stream  ها در TCP
      • کلاس NetworkStream
      • کلاس StreamReader
      • کلاس StreamWriter
      • مدیریت Stream  ها در سمت سرور و کلاینت
  • برنامه نویسی سوکت در UDP
    • مزایای پروتکل های Connectionless
    • سوکت کلاینت  و سرور در UDP
    • تست برنامه های UDP با استفاده از ابزارها
    • آنالیز پکت های UDP  با استفاده از برنامه
    • مشکلات UDP
      • از بین رفتن داده ها
      • جلوگیری از گم شدن داده ها
      • جلوگیری با استفاده از مدیریت خطا
      • جلوگیری با استفاده از ارسال مجدد
    • UDP  با استفاده از کلاسهای Helper
  • انتقال انواع داده در شبکه
    • انتقال داده های عددی
    • تبدیل داده های دریافتی
    • انتقال داده های زمانی
    • ارسال کلاس با استفاده از سوکت
    • مشکلات و مزایای انتقال داده ها
  • برنامه نویسی آسنکرون در شبکه
    • سوکت های کلاینت آسنکرون
    • سوکت سرور آسنکرون
    • ارسال داده در برنامه نویسی سوکت
    • مدیریت DNS  با استفاده از کلاس های آسنکرون
  • متدهای Non-blocking در سوکت ها
    • استخر کانکشن ها
    • انواع توابع استخر کانکشن ها
    • مدیریت منابع در انواع استخرها
  • چند نخی در برنامه نویسی شبکه
    • بررسی توابع کلاس Proccess
    • استفاده از چند نخی در سرور
    • استفاده از چند نخی در ارسال و دریافت اطلاعات
  • IP Multicasting
    • ارسال/دریافت برودکست در کلاینت
    • ارسال/دریافت برودکست در سرور
  •  پروتکل ICMP
    • بررسی پکت های ICMP
    • ایجاد و ارسال پکت های ICMP
  • پروتکل HTTP
    • کلاس WebClient
    • بررسی هدرها در پروتکل HTTP
    • آپلود داده با استفاده از استریم ها در HTTP
    • مدیریت کوکی ها
  • وب سرویس ها
    • ایجاد وب سرویسها
  • مدیریت Active Directory
    • مقدمات Active Directory
    • دسترسی به Active Directory  با کد
    • تغییرات در AD
    • تغییرات در اشیاء AD
    • جستجو در ND
  • امنیت در برنامه نویسی وب
    • گروه های امنیتی
    • Permission Sets
    • دسترسی برای سوکت ها
    • رمزگذاری داده ها
    • برقراری ارتباط با سوکت با استفاده از SSL/TSL

اهداف این آموزش

  • یادآوری مفاهیم اولیه مهم در برنامه نویسی
  • آموزش شبکه مخصوص توسعه دهندگان شامل معرفی لایه های مختلف شبکه و مفاهیم شبکه و  پروتکل های ارتباطی
  • آموزش شبکه مخصوص توسعه دهندگان سیستم عامل ویندوز شامل معرفی شبکه های ویندوزی و زیر ساخت آنها
  • آموزش برنامه نویسی شبکه تحت پروتکل های معروف شبکه با زبان برنامه نویسی سی شارپ
  • آنالیز پکت های شبکه و نحوه ایجاد و برنامه نویسی آنها با زبان برنامه نویسی سی شارپ
  • مدیریت اکتیو دایرکتوری و سرویس های تحت شبکه ویندوز با زبان برنامه نویسی سی شارپ