تاریخچه سوکت ها:
در ادامه سوکت ها با اینترنت که در دهه 1990 جهانی شد، به کار خود ادامه دادند و کلید برنامه نویسی شبکه رقم خورد. سرورهای وب و مرورگرها تنها برنامه هایی بودند که با استفاده از سوکت ها به شبکه متصل شدند. شایع ترین کاربرد سوکت ها، برنامه مشتری - سرور است که در آن یک طرف به عنوان سرور عمل میکند و منتظر ارتباط از مشتریان است.
تعریف آرپانت و سوکت برکلی:
پس از پرتاب نخستین ماهواره اتحاد جماهیر شوروی به فضا و هنگامی که رقابت سختی از نظر تسلیحاتی بین دو ابر قدرت آن زمان جریان داشت و دنیا در دوران جنگ سرد به سر می برد، وزارت دفاع آمریکا در واکنش به این اقدام رقیب نظامی خود، آژانس پروژه های تحقیقاتی پیشرفته یا آرپا (ARPA) را تاسیس کرد. یکی از پروژه های مهم این آژانس، تامین ارتباطات در زمان جنگ جهانی احتمالی بود.
بیشتر بخوانید:
پایتون خاکستری، یک روش معکوس برای هکر ها
این شبکه آرپانت نامگذاری شد. در سال 1965 نخستین ارتباط راه دور بین دانشگاه MIT و یک مرکز دیگر نیز برقرار شد. تا این سال ها شبکه آرپانت به امور نظامی اختصاص داشت، اما در سال 1967 به عموم معرفی شد. Switching بستههای اطلاعات در آرپانت، بر اساس طرحی از دانشمند بریتانیایی دونالد دیویس و لارنس رابرت از آزمایشگاه لینکلن بود. در این سال ها حرکتی غیر انتفاعی به نام MERIT که چندین دانشگاه بنیانگذار آن بوده اند، مشغول توسعه روش های اتصال کاربران ترمینال ها به کامپیوتر مرکزی شدند.
نخستین شبکه از این نوع که چندین ایالت را به هم متصل می کرد Michnet نام داشت. روش اتصال کاربران به کامپیوتر میزبان در آن زمان به این صورت بود که یک نرم افزار خاص روی کامپیوتر مرکزی اجرا می شد و ارتباط کاربران را برقرار می کرد اما در سال 1976 نرم افزار جدیدی به نامHermes عرضه شد که برای نخستین بار به کاربران اجازه می داد از طریق یک ترمینال به صورت تعاملی ، مستقیماً به سیستم MERIT متصل شوند.
از وقایع مهم تاریخچه شبکه های کامپیوتری، ابداع روش سوئیچینگ بسته ای است. قبل از معرفی شدن این روش از سوئیچینگ مداری برای تعیین مسیر ارتباطی استفاده می شد؛ اما در سال 1974 با پیدایش پروتکل ارتباطی TCP/IP این پروتکل جایگزین پروتکل NCP شد و به پروتکل استاندارد برای آرپانت تبدیل شد. با این تغییر و تحول، شبکه های زیادی به بخش تحقیقاتی این شبکه متصل شدند و آرپانت به اینترنت تبدیل شد.
آرپانت مخفف عبارت شبکهی آژانس پروژههای تحقیقاتی پیشرفته (Advanced Research Projects Agency Network) است. این شبکه یکی از اولین شبکههای ارتباطی بر اساس ارسال و دریافت Packet بود و از پروتکل TCP/IP استفاده میکرد. هر ۲ فناوری استفاده شده در این شبکه، پایههای توسعهی اینترنت بودند. توسعهی شبکهی آرپانت توسط آژانس پروژههای تحقیقاتی پیشرفتهی وزارت دفاع ایالات متحدهی آمریکای پشتیبانی میشد. با پیشرفت پروژهی آرپانت، استانداردها و نیازها برای اتصال شبکههای متعدد به یکدیگر نیز توسعه یافتند. در سالهای بعد استانداردها و پروتکلهای اینترنت به مرور تدوین شدند و در نهایت در سال ۱۹۹۰، شبکهی آرپانت بازنشسته و تعطیل شد.
بیشتر بخوانید:
داده کاوی با پایتون، برای سفر به اعماق داده آماده ای؟
سوکتها چه هستند؟
یک پردازش پیام های ارسالی و یا دریافتی خود را از طریق یک نرم افزار واسط شبکه که اصطلاحا به آن سوکت گفته میشود از درون شبکه عبور می دهند. با یک بیان ساده میتوان گفت که سوکت به ترکیب یک آدرس ماشین (IP) و یک شماره درگاه (Port) گفته میشود. در برقراری ارتباط بین کامپیوترها در یک شبکه دو چیز بسیار مهم است:
-
آدرس ماشینی که میخواهیم اطلاعاتی از آن بگیریم یا به آن ارسال کنیم
-
برنامهای از آن ماشین که درخواست اطلاعات کرده یا اینکه میخواهیم اطلاعاتی از آن برنامه کسب کنیم.
HTTP و FTP و SMTP و POP3 چه هستند؟
اینها پروتکل هستن. یعنی قراردادها و استانداردهایی که تعیین میکنند برنامه های مختلف چطور با هم صحبت کنند. پروتکل مثل زبان است. مثلا زبان عربی، فارسی و غیره و سوکت یه دستگاه ارتباطی مثل تلفن است.
چه پروتکل هایی برای ارتباط سوکت استفاده می شود؟
پیش نیاز های برنامه نویسی سوکت در زبان پایتون
نحوه تعریف سوکت در پایتون چیست؟
Import socket
s= socket.socket (socket family,socket type,protocol=0)
-
socket_family: این مورد نوع آدرس دهی برای ارتباط را مشخص میکند. این ورودی، یک مقدار عددی است اما میتوان مقادیر ثابت موجود در کتابخانه socket را نیز استفاده کرد
-
socket_type: مشخص کننده نوع سوکت است. این ورودی، یک مقدار عددی است و میتوان برای تعریف آن از مقادیر ثابت موجود در کتابخانه استفاده کرد. نوع سوکت در اصل نشان دهنده نحوه اتصال بین دو نود خواهد بود. معمولاً از مقدار socket.SOCK_STREAM برای ارتباط TCP و از socket.SOCK_DGRAM برای اتصال UDP استفاده میشود.
توابع مربوط به سوکت سرور
-
bind
-
listen
-
accept
توابع سوکت کلاینت
-
connect
توابع اصلی سوکت
-
recv
به عنوان ورودی اول ،تابع recv() یک مقدار عددی دریافت میکند؛ این عدد (buffer size) نشان دهنده تعداد حداکثر بایت هایی است که باید از خروجی بخواند. یعنی مشخص میکنیم حداکثر چند بایت از پیام دریافت شده را بخواند. خروجی تابع به صورت byte است؛ پس اگر بخواهیم آن را به عنوان یک رشته استفاده کنیم، بهتر است تابع decode() را روی آن صدا بزنیم.
-
send
-
recvfrom
- sendto
-
Close
ساخت برنامه چت با پایتون
ایجاد سوکت سرور و اتصال به سرور
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 14200))
s.listen(1)
#Waiting For a Connection
connection, client = s.accept()
همچنین در سمت مشتری (client) نیز یک سوکت ایجاد کرده و تلاش میکنیم تا به مقصد localhost و پورتی که در سرور تعریف کرده ایم (در اینجا 14200) متصل شویم.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#connectings.connect(("localhost", 14200))
ارسال و دریافت پیام در شبکه
message = "Hello"
s.send(message.encode())
data = s.recv(32)
print(data.decode())
#Connection Closed
s.Close()
print(client, 'Connected')
data = connection.recv(32)
print('Received "' + data.decode() + '"')
connection.send("Message Received!".encode())
connection.close()
کدهای سرور چت با پایتون:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 14200))
s.listen(1)
#Waiting For a Connection
connection, client = s.accept()
print(client, 'Connected')
data = connection.recv(32)
print('Received "' + data.decode() + '"')
connection.send("Message Received!".encode())
connection.close()
کدهای کلاینت چت پایتون
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#connecting
s.connect(("localhost", 14200))
message = "Hello"
s.send(message.encode())
data = s.recv(32)
print(data.decode())
#Connection Closed
s.close()
ماژول های برنامه نویسی تحت شبکه برای پایتون:
در زیر لیستی از ماژول های مهم و پرکاربرد پایتون در زمینه ی برنامه نویسی تحت شبکه را مشاهده می کنید.
ماژول پایتون
|
شماره ی درگاه یا پورت
|
کاربرد و موارد استفاده | پروتکل |
---|---|---|---|
httplib, urllib, xmlrpclib
|
80
|
برای اپلیکیشن های تحت وب/پروتکل ارسال اطلاعات بین
سرور، کلاینت |
HTTP
|
nntplib
|
119
|
پروتکل دسترسی به گروه های خبری
|
NNTP
|
ftplib, urllib
|
20
|
انتقال فایل
|
FTP
|
smtplib
|
20
|
ارسال ایمیل
|
SMTP
|
poplib
|
110
|
واکشی ایمیل
|
POP3
|
imaplib
|
143
|
واکشی ایمیل
|
IMAP4
|
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.