Numan GOCERI\’s Home Page

Hello World:)

Internet Soketlerinin İki türü

Bu da ne? İki tür Internet soketi mi var? Evet. Şey, aslında hayır. Yalan söyledim. Daha çok var ama sizi korkutmak istemedim. Size sadece iki tür soketten bahsedeceğim. Sadece “Ham Soketler”in (Raw Sockets) çok güçlü olduğunu belirttiğim bu cümle dışında yani, bir ara bunlara da göz atarsanız iyi olur.
Pekala, gelelim şu iki tür sokete. Bir tanesi “Veri Akış Soketleri”; diğeri ise “Veri Paketi Soketleri” ve artık biz bunlara sırası ile “SOCK_STREAM” ve “SOCK_DGRAM” diyeceğiz. Veri paketi soketleri bazen “bağlantısız soketler” olarak da isimlendirilir. (Her ne kadar eğer isterseniz bunlara connect() işlevi ile bağlanabilecek olsanız da. Detaylı bilgi için aşağıdaki connect() maddesine bakın.)
Veri akış soketleri güvenilir iki yönlü iletişim kanallarıdır. Eğer bu tür bir sokete sıra ile “1, 2” bilgilerini gönderirseniz, bunlar kanalın diğer ucundan “1, 2” şeklinde çıkar. Aynı zamanda bu iletişim olası hatalara karşı da korumalıdır. Karşılaşacağınız her türlü hatanın kaynağı sizin karman çorman aklınız olacaktır ve burada bunları tartışmaya niyetim yok.
Stream soketleri gerçek hayatta ne işimize yarar? Hmm, sanırım telnet diye bir program duymuşsunuzdur, değil mi? İşte bu program veri akış soketlerini kullanır. Yazdığınız tüm karakterler sizin yazdığınız sırada iletilmelidir öyle değil mi? Aynı zamanda web tarayıcılar da HTTP protokolü ile iletişim kurarken veri akış soketleri aracılığı ile sayfa bilgilerini çekerler. Gerçekten de eğer bir web sitesine telnet ile 80 numaralı port üzerinden bağlanır ve “GET /” komutunu yollarsanız web sitesi size HTML içeriğini yollayacaktır.
Veri akış soketleri bu kadar sorunsuz bir veri iletişimini nasıl gerçekleştirir? Bunun için “Aktarım Denetim Protokolü” (Transmission Control Protocol) isimli kurallar dizisinden yararlanırlar ki siz bunu “TCP” olarak da duymuş olabilirsiniz (bkz. RFC-793 bu belge TCP ile ilgili çok ayrıntılı bilgi içerir.) TCP yollanan verinin sıralı ve düzgün gitmesini sağlar. “TCP”yi daha önce “TCP/IP” kısaltmasının bir parçası olarak duymuş olabilirsiniz ki “IP” de “Internet Protocol” sözünün kısaltmasıdır (bkz. RFC-791.) IP kurallar dizisi temelde Internet yönlendirme ile ilgilidir, veri bütünlüğünün korunması ile ilgili pek kural içermez.
Harika. Peki veri paketi soketleri? Neden bunlara bağlantısız deniyor? Mesele nedir kısaca? Neden bunların “güvenilmez” olduğu söyleniyor? Bakın, bilmeniz gereken bazı gerçekler var: eğer bir veri paketi yollarsanız bu hedefine ulaşabilir de ulaşmayabilir de. Gönderdiğiniz sırada ulaşması garanti edilemez. Ancak eğer hedefe ulaşırsa paketin içerdiği bilgi hatasız olacaktır.
Veri paketi soketleri de yönlendirme için IP protokolünü kullanırlar ancak TCP’den faydalanmazlar onun yerine “Kullanıcı Veri Paketi Protokokü” (User Datagram Protocol) veya “UDP” isimli protokolü kullanırlar (bkz. RFC-768.)
Neden bağlantısızdırlar? Aslında böyledirler çünkü veri akış soketlerinde olduğu gibi bağlantıyı sürekli açık tutmanız gerekmemektedir. Sadece bir paketi oluşturur, tepesine gideceği adresi söyleyen bir IP başlığı yapıştırır ve onu yollarsınız. Herhangi bir bağlantı açmaya gerek yoktur. Bu tip soketler genellikle paket paket iletilen veri için kullanılır. Bu tip soketleri kullanan örnek uygulamalardan bazıları: tftp, bootp, vs.
“Yeter artık!” diye bağırdığınızı duyar gibiyim. “Eğer veri paketlerinin yolda kaybolma ihtimali varsa nasıl olur da yukarıda saydığın programlar çalışır?!” Bak dünyalı dostum bu saydığım programların hepsi UDP protokolü üzerine kendi protokollerini yerleştirirler. Mesela, tftp protokolüne göre gönderilen her paket için karşı tarafın “aldım!” (bir “ACK” paketi) paketini geri yollaması gerekir. Eğer orjinal paketin göndericisi mesela 5 saniye içinde cevap alamazsa o zaman paketi yeniden yollar, taa ki ACK cevabını alana kadar. İşte bu “aldım” prosedürü SOCK_DGRAM uygulamalarında çok önemlidir.

Sonraki yazı: Düşük Seviye Duyarsızlığı ve Ağ Teorisi
————————
Telif Hakkı ve Dağıtım
Beej’s Guide to Network Programming – Copyright © 1995-2001 Brian “Beej” Hall.
e-mail: beej (at) piratehaven.org

July 17, 2008 - Posted by | Internet Soketlerinin İki türü

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: