Python Ağ(Network) Programlama #1

ByKertenkele

Uzman üye
29 Tem 2017
1,174
8
103
Türkiye'de cidden yeterli kaynak yok PDF olarak veya internet üzerinde yeterli kaynak yok maalesef bunun üzerine konu açtım. İnşallah yararlı olacaktır.
Genel Portlar :
Kod:
21 FTP
22 SSH
23 Telnet
25 SMTP (Mail)
80 HTTP (Web)
110 POP3 (Mail)
119 NNTP (News)
443 HTTPS (web)
Diğer portlar rastgele(random)ola bilir programlar tarafından atanılan.
Kod:
netstat -a
bu komutu cmd veya uçbirim(terminal) de kullanırsanız kullanılan portları göre bilirsiniz.
Veri Aktarımı
Streams (TCP): Pcler birine bağlıdır . Okuma/Yazma gibi ve sürekli bayt akışında dır.
Datagrams (UDP): Her paket, bir bayt koleksiyonu içerir, ancak her biri Paket ayrı ve bağımsızdır.

Soket Temelleri
Python da soket kullanımı(soket oluşturma) :
Kod:
from socket import *
s = socket(addres, soket_türü)
#Ayrınıtılı bir şekilde anlatacağım
Addressler:
AF_INET Internet protocol (IPv4)
AF_INET6 Internet protocol (IPv6)
Soket tür'ü:
SOCK_STREAM Connection based stream (TCP)
SOCK_DGRAM Datagrams (UDP)
Örnek :
Kod:
from socket import *
s = socket(AF_INET, SOCK_STREAM
#TCP :
s = socket(AF_INET, SOCK_STREAM)
#UDP:
s = socket(AF_INET, SOCK_DGRAM)
Yukarıda "s" adında değişken oluşturduk daha sonra socket() diyerek soket oluşturduk . Bu socket() komutu pythonda soket oluşturmak için kullanılır daha sonra parantesin içine ilk olarak Adres yazılır örnekiğin AF_INET bu AF_INET ipv4 içindir eğer AF_INET6 dersek ipv6 için kullanılır daha sonra "," koyarak hemen SOCK_STREAM veya SOCK_DGRAM yazarız SOCK_STREAM TCP bağlantısı sağlar SOCK_DGRAM dersek UDP bağlantısı sağlar . Hemen Tekrar soket oluşturalım hatalarınana deyinerekten.
Doğru bir şekilde soket oluşturma :
Kod:
soketim = socket(AF_INET, SOCK_DGRAM)
şu şekilde asla olmaz :
Kod:
soketim = s(AF_INET, SOCK_DGRAM)
bu yanlıştır!.
NOT : Pythonda soket kütüphanesini içe katarmayı unutmayın!
Kod:


.connect() komutu soket'e bağlanma işe yarar ama ondan önce 2 adet değişken oluşturmamız lazım. Bunlardan birsi host adresini barındırması lazım diğeri ise port adresini hemen oluşturalım :
Kod:
import socket
host = "www.google.com"
port = 80
soketim = socket(AF_INET, SOCK_STREAM)
Çok güzel şimdi soket'e bağlantı gerçekleştirelim.
Kod:
soketim.connect((host,port))
soketim.connect(host,port) komutu sayesinde soketim adında ki değişkene connect() komutunu sayesinde soket'e bağlan dedik ardından ilk her zaman host beli edilir ve bizde öyle yaptık daha sonra port'u beli edip hosy adında ki değişken senin host adresindir port değişkeni ise port değerindir diyip bağlanmasını sağladık.
Bu şekilde basit bir bağlantı sağlanılmış oldu.

.close()

bu komut sayesinde bağlanılan soketden bağlantıyı sonlandırılmasını gerçekleştiriz .
Kod:
import socket
host = "www.google.com"
port = 80
soketim = socket(AF_INET,SOCK_STREAM)
soketim.connect((host,port))
soketim.close()
"()" içine host,port ' u eklemeyiz.


.send ve .recv()

.send() komutundan anlaşıllıcağı gibi veri yollar .
Kod:
soketim.send("GET /index.html HTTP/1.0\n\n")
Kod:
from socket import *
s = socket(AF_INET,SOCK_STREAM)
s.connect(("www.python.org",80)) 
s.send("GET /index.html HTTP/1.0\n\n") 
s.close()
Bu şekilde kullanılır .
.recv() komutu ise veri alır .
Kod:
veri =  s.recv(10000)
Bu .recv() komutunu send den sonra kullanın bu komut send etiğiniz yani verdiğiniz data verisnin karşıdan gelen tepkimeyi alır. Örnek kod:
Kod:
from socket import *
s = socket(AF_INET,SOCK_STREAM)
s.connect(("www.python.org",80))
s.send("GET /index.html HTTP/1.0\n\n")
veri = s.recv(10000)
print veri
s.close()
DEVAMI GELİCEKTİR...
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.