Soket Programlama Opera PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

1 SokeI ProgramIama

4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm


Socket Programlama
Gven KKDAMAR (guven.kokdamartudent.comu.edu.tr)
anakkale Onsekiz Mart niversitesi,
Bilgisayar Mhendisligi Blm
06/10/2003 v.0.1 Bu begede, socket programamanin mantigi ve teme socket programama sistem agriari anatimitir.
indekiler

1. Giri
1.1. TCP/P Hakknda Genel Bilgiler
2. Transmission Control Protokol (TCP)
3. Port ve Soket Kavramlar
4. User Datagram Protokol (UDP)
5. Socket Programlama
5.1. Socket Programlama Nedir?
5.2. Socket Trleri
5.3. Uygulamadaki Temel Prensipler
5.4. Socket Programlamada Kullanlan Veri Yaplar ve Veri Trleri
5.5. Veri Trlerinin Dnmleri
5.6. Socket Programlama Sistem agrlar
5.6.1. socket();
5.6.2. bind();
5.6.3. connect();
5.6.4. listen();
5.6.5. accept();
5.6.6. send(); ve recv();
5.6.7. sendto(); ve recvfrom();
5.6.8. close(); ve shutdown();
5.6.9. getpeername();
5.6.10. gethostname();
5.6.11. gethostbyname();
5.6.12. select();
5.7. send() Sistem agrs Sorunlar
5.8. RAW Socket ler
6. rnek Program Kodu
6.1.rnek Sunucu Program
6.2.rnek stemci Program
7. Kaynaklar
8. Yasal Aklamalar
2 SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
8. Yasal Aklamalar

1. Giriy
1.1. TCP IP HAKKINDA GNL BILGILR
TCP-P (Transmission Control Protocol - nternet Protokol), internette, bilgisayarlar aras iletiimi saglayan protokol
grubudur. Bilgisayarlar arasnda bilgi alverii P paketleri araclgyla yaplr. Bilgisayar A, bilgisayar B ye gndermek
istedigi veriyi paketler halinde gnderir. Bu paketler ierisinde A' nn ve B' nin adresleri vardr. A'nn gnderdigi paketlere P-
Paketleri, A'nn adresine P-Adresi denir. Gnderilen paketler, B'nin adresini tadg iin bilgisayar aglar arasnda kullanlan
Router lar araclyla dogru bilgisayara iletilir.
P paketleri birbirinden bagmsz olarak gnderilir. B' nin grevi tm P paketlerini alp, A' nin gnderdigi veriyi
kazanmaktr. Gnderilen baz P paketleri B'ye ulamayabilir. Her paketin iinde, gnderilecek paket says hakknda bilgi
oldugu iin, B, ka tane P paketi almas gerektigini bilir. Eksik olan paketler A'dan tekrar istenir. TCP nin grevi, gnderilen
P paketlerini denetlemektir. TCP eksik olan paketleri tespit eder ve A tarafndan tekrar gnderilmesi iin gerekli ilemleri
yapar.
Subnet tiplerini ve subnet iinde yer alacak bilgisayar miktarn tespit etmek amacyla P-numaralar A, B, C, D, E
snflarna ayrilir. Burada A, B, C snflar incelenmitir. Snflar arasnda ayrm ilk 8 bit (byte) zerinde yaplr. Snflarn
hangi adres alanlarna sahip olduklarn aagdaki tabloda yer alyor.
Sinif Sistem 1. byte 2. byte 3. byte 4. byte
A
desimal
dual
0-127
0xxx xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
B
128-191
10xx xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
C
192-223
110x xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
0-255
xxxx xxxx
Sinif A: 1.0.0.0 - 127.0.0.0
Net-id: lk byte 0-127 rakamlarn verecek ekilde seilir: 0000 0000 - 0111 1111
Host-id: Geri kalan 3 byte (24bit = 2^24 = 16777216) bilgisayar Host-id olarak kullanlr.
A snf subnet says: 1. byte tan 7 bit, 2^7= 128
A snfndan subnetler teorik olarak 16777216 adet bilgisayar barndrabilirler. Bu kadar sayda bilgisayar bir subnet
iinde barndrmak mmkn degildir. Ayrca dnya apnda sadece 127 adet A snf P-numaralar verilebilir, daha dogrusu
verildi ve A snf P-numaralar artk verilmiyor.
Sinif B: 128.0.0.0 - 191.255.0.0
Net-id: lk iki byte 128.0-191.255 rakamlarn verecek ekilde seilir: 1000 0000.0000 0000 - 1011 1111.1111 1111
Host-id: Geri kalan 2 byte (16bit = 2^16 = 65536) bilgisayar Host-id olarak kullanlr.
B snf subnet says: 1.byte tan 6, 2. byte tan 8, 2^14=16384
Sinif C: 192.0.0.0 - 223.255.255.0
Net-id: lk byte 192.0.0-223.255.255 rakamlarn verecek ekilde seilir: 1100 0000.0000 0000.0000 0000 - 1101
1111.1111 1111.1111 1111
Host-id: Geri kalan 1 byte (8bit = 256) bilgisayar Host-id olarak kullanlr.
C snf subnet says: 1.byte tan 5, 2. byte tan 8, nc byte tan 8, 2^21=2.097.152
Aritmetiksel olarak dnya apnda 128 + 16384 + 2.097.152 = 2.113.664 adet subnet oluturulabilir. Bu subnetler
kendi aralarnda tekrar subnetlere ayrlabilir. Bu rakam cok byk grnse de, aslnda internetin son zamanlarda ok hzl
3 SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
gelimesinden dolay, bos net-id kalmamtr. Bu sebepten dolay 1995 ylndan beri Pv6 isminde bir adresleme zerinde
allmaktadr. Pv6 16 byten oluur.
16 byte = 128 bit = 2^128 = 3.402823669209e+38 . Pv6 su anda kullanlan Pv4 standartna uygun ekilde
tasarlanmaktadr. Bu yzden iki standart paralel alstrmak mmkn hale gelecek. Belli bir zaman sonra, tamamiyle Pv6
sistemine gecilmis olacak.

2. Aktarm KontroI ProtokoI [Transmission ControI ProtokoI
(TCP)]
TCP, P nin bir st katmannda alan iki aktarm katman protokolnden birisidir.
TCP, gvenilir ve sanal devre zerinden alan bir protokoldr. Ayn ag zerinde ya da farkl aglar zerinde iki hostun
birbirleriyle gvenilir bir ekilde haberlemesini saglar.
TCP nin balca zellikleri unlardr:
Bir baglantnn (connection) kurulmas ve sonlandrlmas
Gvenilir (Reliable) paket dagtmnn saglanmas
Ak kontrol (flow control) olanag ile hostlarda veri tamasnn (overflow) nlenmesi
Bozulmu ya da ikilenmi verinin dzeltilmesi (error recovery)
Alc host ierisinden birok uygulama arasnda demultiplexing yaplmas
TCP istemci host zerinde alan baz uygulama katman protokolleri:
TELNET
Dosya Aktarm Protokol [File Transfer Protocol (FTP)]
Temel Posta Aktarm Protokol [Simple Mail Transfer Protocol (SMTP)]
TCP, P den hizmet alan bir protokoldr. P, TCP nin sagladg olanaklarla gvenli veri dagtm yapar. P nin TCP ye
sagladg ana hizmetler unlardr.
Farkl aglar zerindeki kaynak ve hedef istasyonlarn adreslenmesi
nternet zerinde veri paketlerinin ynlendirilmesi
Aglar arasnda kk boyutlu paketleri iletebilen aglarda daha sonra birletirilmek zere paket paralama
(fragmentation) fonksiyonunun yerine getirilmesi
P paketinin protokol numarasna bakarak bu paketleri st katmana ynlendirme iinin yaplmas
Yaam Sresi [Time to Live (TTL)] alanna yerletirilen degerle paketin internet zerinde mrnn snrlandrlmas
Bir TCP Paketi rnegi
4 SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
TC nin Temel levleri
TCP nin zerinde altg farkl hostlar arasnda gvenilirlige sahip, baglant tabanl paket dagtmn saglar.
TCP, internet ortamnda u ilevleri saglar:

Temel Veri Aktarm (Basic Data Transfer)
Gvenilirlik (Reliability)
Utan Uca Ak Kontrol (End to end flow control)
ogullama (Multiplexing)
Baglantlar (connections)
Tam ift Ynl lem (full duplex process)
Temel Veri Transferi (Basic Data Transfer):
Haberleen TCP hostlar zerinde bu katmanlar aras segment aktarm yoluyla haberleme saglanr. TCP veri akn
baytlar sralandrp segment gruplar halinde iletir. Eger bir paralama gerekliligi ortaya kmadysa her segment bir P
paketine konarak iletilir.
Gvenilirlik (Reliability):
TCP, zarara ugram, bozulmu, ikilenmi verinin dogru olarak elde edilmesinden sorumludur.
TCP, her bir bayt a sra numaras verir. Daha sonra ilettigi bu bayt lara karlk onay (acknowledge) bekler. Eger belirli
aralklarla bekledigi onaylar alamazsa onay alamadg ksmlar yeniden hedef hosta iletir. Hedef host sra numaralarna
gre segmentleri sralarken ayn segment numarasna sahip iki segmentle karlaabilir. Her bir segment checksum denilen
kontrol bilgileri ierir. Bu kontrol bilgilerine gre hasara ugram segmentler anlalr ve atlr. Kaynak hosta onay
gnderilmezse kaynak hosttaki TCP onay alamadg segmentleri yeniden gnderir.
Utan Uca Aki Kontrol (End to end flow control):
Kaynak istasyondan hedefe iletilen veri miktarn kontrol eden bir mekanizmadr. Bu mekanizma pencere ynetimi (window
management) teknigi ile saglanr.
ogullama (Multiplexing):
TCP zerinde birden fazla e zamanl TCP baglant kurmakta kullanlr.
Baglantilar (Connections):
Baglant iki TCP hostun veri transferi iin birbirlerinden haberdar olmalar ve gerekli hazrlklar tamamlam olmalar
demektir. Baglant kurulumu iin kaynak host hedef hosta baglant kurmak istedigini bildirir. Hedef host gelen istekteki port
numarasna karlk gelen hizmeti saglyorsa ve baglant iin hazrsa bir cevap mesaj gndererek baglant ilemini balatr.
Baglant, kaynak ve hedef host arasnda sanal bir devre oluturulmasyla kurulur. Baglant kurulup transfer
gerekletirildikten sonra baglant koparlr.
Haberleme srasnda, her bir host zerindeki TCP protokol, srekli hata kontrol yaparlar. Eger herhangi bir nedenle bir
iletiim problemi ortaya karsa, her iki utaki TCP yrtcs bu problemden haberdar olur ve st katman protokollerini
uyarrlar.
Baglantnn kurulmasnda TCP paketinin balg iindeki SYN (Sync) ve ACK (onay) bitlerini kullanlr.
S SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
TCP Yeniden-letim Semas
Baglant kurulumunda baglant talebinde bulunan ve baglanty kabul eden hostlar arasnda iki farkl durum oluur.
Baglanty kabul eden host pasif, baglant talebinde bulunan host aktif olur.
Tam ift ynl ilem (Full Duplex rocess):
TCP ilemleri hem gnderim hem de almn ayn anda yaplmasna olanak tanr. Bu da haberlemenin daha hzl olmasn
saglar.
Sira Numarasi (Sequence Number)
TCP st katmandan aldg veriyi segmentlere bler. Bu segmentlerin herbiri genelde tek bir P paketi iinde tanr. Her bir
segmente TCP bir numara verir. Ama aglar zerinde dolaan bu segmentlerin hedefe var sralarnn karmas
durumunda hedef hostta alan TCP yrtcsnn bunlar tekrar sraya koyup st katmana aktarmasdr. (segment
boylar sabit degildir)
TCP, kar TCP ile baglanty ilk kurdugunda, ilk gnderdigi segmente bir numara verir ve daha sonraki segment numaralar
sral olarak artan ekilde devam ettirir. Sra numaras 0 2
31
arasnda olabilmektedir. nk TCP paketi veri yapsnda
sra numaras 4 bytelk bir alanla ifade edilir
TCP verideki bayt lar gruplayarak segmentleri oluturur ve herbir segment ayr bir numara ile numaralandrlr. Bir
6 SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
TCP verideki bayt lar gruplayarak segmentleri oluturur ve herbir segment ayr bir numara ile numaralandrlr. Bir
segment bir numara aldgnda bu segment numarasn iinde barndrdg ilk bayt a verir. Yine iinde barndrdg diger
bayt lara bu numarann artanlarn verir. Bu segmentten sonra gelen segmentin alacag numara, bir nceki segmentin
iindeki en son bayt n aldg numarann bir fazlas olacaktr. Bu sra numaralar TCP balg iinde tanr.
3. Port ve Soket Kavramlar
Host cihazndaki bir TCP st-katman kullancs bir port numaras ile tanmlanr. Port degeri P internet adresi ile
birleerek bir soket oluturur. Bu deger internet boyunca tek olmaldr. Bir soket ifti her bir u-nokta baglantsn tek olarak
tanmlar. rnegin,
Gnderici Soket = Kaynak P Adresi + Kaynak Port Numaras numaras
AIc soket = Hedef P Adresi + Hedef Port Numaras
Bir bilgisayarda birden ok soket bulunabilir. rnegin ayn anda hem telnet socketi hem de ftp soketi ak
olabilmektedir. Socketleri birbirinden ayrmak ve istemci-sunucu ikilisini birbiri ile buluturmak iin her soket programn
PORT numaras vardr. rnegin ftp'nin port numaras 21'dir. Bir ftp istemci, ftp sunucunun 21. portta altgn bildiginden
direk onunla temasa geer. Telnet 23.'u portta altgndan, telnet sunucu ile ftp sunucu karmaz. 1-1024 arasndaki
portlar standarttr ve yalnz root tarafndan kullanlabilir. Eger normal user 1024'ten kk portlar kullanmaya kalkarsa 'bind'
permission hatas verir. Bu nedenle sradan kullanclar soket programlar iin 1023'ten byk bir port numaras seerler.
4. User Datagram Protokol (UDP)
UDP, TCP / P protokol grubunun iki aktarm katman protokolnden birisidir.
UDP, onay (acknowledge) gnderip alacak mekanizmalara sahip degildir. Bu yzden veri iletiminde baary
garantileyemez. Yani gvenilir bir aktarm servisi saglamaz. Hedefe ulaan paketler zerinde sralama yapp dogru veri
aktarmn da saglayacak mekanizmalara sahip degildir. Uygulamalar gvenli ve sral paket dagtm gerektiriyorsa UDP
yerine TCP protokol tercih edilmelidir.
UDP, minimum protokol yk (overhead) ile uygulama programlar arasnda TCP ye gre basit ama daha hzl bir
aktarm servisi saglar.
ort numaralariyla Demultiplexing :
P, UDP port numaralar araclgyla pek ok datagram paketi arasnda ayrtrma yapabilecek mekanizmalar ierir.
Bu yolla bir ok uygulamann alc host zerinde ayn anda almasna ve ag zerinden haberlemesine olanak tanr.
UDP paketleri de internet zerinde P paketleri iinde tanr:
UD aket Formati:
Kaynak Port Hedef Port
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3
Uzunluk Hata Kontrol
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3
Veri
Kaynak ort (Source ort): Opsiyonel bir alandr. Gnderilen ilemin portunu gsterir. Eger gnderen host bir kaynak
numarasna sahip degilse bu alan 0 ile doludur.
7 SokeI ProgramIama
4/6/212 2:32:1 PM hIIp://cekirdek.uIudag.org.Ir/~meren/beIgeIer/sockeI/sockeI.hIm
Hata Kontrol (Checksum): Opsiyonel bir alandr. Hata kontrol mekanizmas saglar. Eger hata kontrol yaplmayacaksa
bu alan 0 ile doludur.
UDP deki hata kontrol sadece hatasz tamann bir lsdr. Yeniden gnderim veya gvenilirlik saglamaz.
UDP ' nin bu kadar dez avantajna ragmen daha ok kullanldg aktr. TCP bir veri karya 6x32+Veri boyu kadar bir
paket olarak gitmektedir. Yani her paket fazladan 192 bit balk (header) bilgisi tamaktadr. Oysa UDP paketleri 64 bitlik
balk (header) bilgisine sahiptir.
UDP kullanmann en nemli nedeni az protokol ykdr. Video sunucu gibi gerek zamanl veri ak gerektiren bir
uygulama iin TCP fazla yk getirir ve grnt gerek zamanl(realtime) oynamaz. Bu nedenle multicast uygulamalarnda
Datagram soketler kullanlr. Ayrca video ve ses grntlerinde genelde az bir veri kayb sesi veya grnty bozmaz. Bu
nedenle sk paket kontrolune gerek yoktur. Eger iyi bir fiziksel baglantnz varsa hata oran dk olacaktr ve bu nedenle
TCP'nin yaptg hatal paket kontrol ilemleri fazladan yk olacaktir.
UDP her ne kadar paket gvenligini denetlemese de bunu yazlmc yapabilir. rnegin TCP bir paketi gnderdiginde
kar tarafn onu aldgn anlamak iin acknowledgement(onay,kabul) bekler. UDP bunu yapmaz. Fakat bunu soket
yazlmcs yapabilir. Yazlmc, gnderilen her pakete bir cevap bekleyerek bunu saglar.

5. Socket Programlama
5.1.Socket Programlama Nedir?
Soketler, bir tr sreler aras haberleme(interprocessing) yntemidir. Soket, soyut bir tanmla haberleme u
noktalardr. Pratik olarak soketler dosyalara benzer. Soketten okumak ile dosyadan okumak arasnda hibir fark yoktur.
Sradan bir programda dosya amak istediginiz zaman, ekirdegin (kernel) sistem agrlar kullanlarak, programnza tam
say bir deger verilir. Bu deger dosyanz ynetmek iin kullanacagnz dosya tanmlaycsdr (file descriptor). POSX
(Linux, BSD gibi UNX benzeri) sistemlerde hemen her ey bir dosyadr. /dev dizini altnda cihazlar yer alr. Her cihaz iin
major ve minor numaras ile tanmlanan zel dosyalar bulunur. Bunlar Block Device ve Character Device diye iki ksma
snflandrlmtr. Terminaliniz, konsolonuz, FFO ve pipe gibi veri yaplar; hepsi kullanc iin birer dosyadr. Bu nedenle
soketlere dosya gzyle bakabilir ve yazmak iin write(), okumak iin ise read() gibi dosya fonksiyonlarn kullanabilirsiniz.
Ancak sokete zel fonksiyonlar kullanmak daha kullanl olacaktr.
Aklnza gelebilecek hemen her internet program socket program olarak alr. rnegin web sunucular 80, telnet
sunucular 23 numaral port zerinde alan soket programlardr.
Soket programlamaya zel baz terimler:
stemci (Client): Hizmet isteyen soket programlara denir. stedigi zaman sunucuya (server) baglanr, grev verir ve
sonular alp baglanty koparr.
Sunucu (Server): Hizmet veren soket programdr. stemci herhangi bir anda kendisine baglanp, ondan hizmet
isteyebileceginden srekli almak zorundadr. Linux'teki in.telnetd, wu.ftpd, nfsd, httpd gibi daemon olarak adlandrlan
tm ag programlar socket sunuculardr.

You might also like