TCP/IP internette veri transferi için kullanilan iki protokolü temsil eder. Bunlar Transmission Control Protokol (TCP) ve Internet Protocol (IP). Ve bu protokoller de daha genis olan TCP/IP protokol grubuna aittir. TCP/IP'de bulunan protokoller internette veri transferi için kullanilir ve internette kullanilan her türlü servisi sağlarlar. Bunlarin arasinda elektronik posta transferi, dosya transferi, haber gruplari, www erisimi gibi servisler TCP/IP sayesinde kullanicilara sunulmaktadir.
Günümüzde artik TCP/IP sadece internette degil bir çok alanda kullaniliyor. Intranet'ler TCP/IP kullanilarak olusturulmaktadir. Bu tip bir sistemde TCP/IP'yi kullanmak diger protokollere göre avantajlar içerir. En basitinden TCP/IP hemen hemen her türlü sistemde desteklendigi için çok kolay bir sekilde heterojen sistemler kurulabilir. Iste internette tamamen heterojen bir sistem oldugu için TCP/IP en uygun protokoldür.
TCP/IP protokolü günümüzde artik hemen hemen tüm isletim sistemlerinde desteklenmektedir. UNIX, DOS (Piper/IP ile), Windows (TCPMAN ile), Windows 95/98/2000/Me, Windows NT, Windows XP, Windows 2003, Machintosh (MacTCP), OS/2, AS/400 OS/400 sistemlerinde TCP/IP destegi gelmektedir. Tabi her sistemin TCP/IP gerçeklemesi farkli oldugundan servis kalitesi de farklilklar gösterebilir. Ancak temel olarak sunulan servisler aynidir ve birbiriyle uyumlu olarak çalisirlar.
TCP/IP protokol yiginini kullanarak çalisir. (TCP/IP Stack) Bu yigin iki makine arasindaki veri transferini sağlamak için gereken tüm protokollerin birlesmis bir halidir. Bu yigin kisaca en üstte "uygulama seviyesi", daha sonra "transport seviyesi", "ağ seviyesi", "datalink seviyesi" ve "fiziksel seviye"'lerden meydana gelir. Bu seviyelerde en üstte yakin olan seviyeler kullaniciya daha yakindir, alta yakin olan seviyeler ise kullanicidan habersiz olarak çalisan seviyelerdir. Örnek olarak en üst düzey olan uygulama seviyesinde FTP, Telnet gibi programlari örnek verebiliriz. Bu programlari çalistirdiginizda diger sisteme bir bağlanti kurulur ve veri transferi yapilir. Siz sadece yaptiginiz islemlerle ilgili sonuçlari ve olaylari görürsünüz ancak bir veri gönderdiginizde bu veri ilk önce sizin bilgisayarinizdaki bu TCP/IP protokol yigininda asağiya dogru inmek zorundadir. Yani uygulama seviyesinden, ftp'de verdiginiz bir komut mesela, transport seviyesine, ordan ağ seviyesine ve en sonunda fiziksel seviyeye iner ve artik diger bilgisayara ulasmak üzere internet ağında yada yerel bir ağda uzun yolculuguna baslar. Gidecegi makinenin fiziksel seviyesine ulasana kadar veriler genellikle bir yada daha fazla ağ geçidinden geçerler. (tracert komutu belirli bir hedefe hangi geçitlerden geçerek gidilecegini veren komuttur) En sonunda diger makineye ulasinca yine uygulama seviyesine ulasincaya kadar, bu sefer karsida çalisan ftp sunucusuna, yine bu TCP/IP protokol seviyelerini bir bir yukari dogru asmak zorundadir.
Bu arada bu seviyelere ne gerek var diyebilirsiniz. Ancak bu seviyelerin her biri degisik bir görevi üstlenmektedir. Bir seviye fiziksel olarak verilerin gönderilmesi isini yaparken baska bir seviye verileri ufak paket dedigimiz parçaciklara bölerek iletisim isini üstlenir, baska bir seviye ise iletisimde meydana gelebilecek hatalari tespit eder. Bu sekilde tüm seviyeler bir uyum içinde çalisirsar ve her seviye karsi tarafta bulunan yine kendi seviyesindeki protokolle karsilikli iletisim içindedir. Daha yukarida yada daha asağidaki bir seviyede ne gibi bir isin yapildigina ve sonuçlariyla ilgilenmez.
Kisaca TCP/IP protokol yigininin nasil çalistigini gördük ve simdi kullanilan protokollere bir göz atalim.
Ağ seviyesi protokolleri
Ağ seviyesi protokolleri veri transferi islemini kullanicidan gizli olarak yaparlar ve bazi ağ araçlari kullanilmadan farkedilemezler. Bu araçlar Sniffer'lardir. Sniffer bir cihaz yada bir yazilim olabilir ve ağ üzerindeki tüm veri iletisimini izlemeye yarar. Bu araçlarin kullanilis maksadi ağda meydana gelebilecek hatalari tespit etmek ve çözmektir. Ancak sniffer'lar da hacker ve cracker'lar tarafindan kullanilan ölümcül makineler haline gelmistir.
Ağ protokolleri arasinda önemli olarak Adres Çözümleme Protokolü (ARP), Internet Mesaj Kontrol Protokolü (ICMP), Internet Protokolü (IP) ve Transfer Kontrol Protokolü (TCP) protokollerini verebiliriz.
Kisaca bu protokollerin ne is yaptigina bir bakalim:
ARP protokolü: internet adreslerini fiziksel adrese dönüstürmek için kullanilir. Bir paketin bir bilgisayardan çiktiginda nereye gidecegini IP numarasi degil gidecegi bilgisayarin fiziksel adresi belirler. Iste bu adreste paketin gidecegi ip numarasi kullanilarak elde edilir. Ve bu islemden sonra paket hedef ip adresine sahip bilgisayara gitmek için gerekli yönlendirmelerle yolculuguna baslar. Bilgisayara takili olan ethernet kartlarinin bir ethernet adresi vardir. Ve bu adres IP adresinden farklidir. Bir paket makineden çiktigi anda gidecegi adres diger bir makinenin ağ kartidir ve bu ağ karti ile IP numarasi arasinda bir bağ yoktur. Paket bu karta gidebilmesi için kartin fiziksel numarasini bilmek durumundadir. ARP adres çözümlemek istedigi zaman tüm ağa bir ARP istek mesaji gönderir ve bu IP adresini gören yada bu IP adresine giden yol üzerinde bulunan makine bu istege cevap verir ve kendi fiziksel adresini gönderir. ARP isteginde bulunan makine bu adresi alarak verileri artik bu makineye gönderir.
Internet mesaj kontrol protokolü: ICMP protokolü iki yada daha fazla bilgisayar arasinda veri transferi sirasinda meydana gelebilecek hatalari ve kontrol mesajlarini idare eder. Bu nedenle ICMP ağ problemlerini tespit etmek için çok önemli bir protokoldür. ICMP protokolü kullanilarak elde edebilecegimiz bazi sorunlar: bir bilgisayarin ayakta olup olmadigini kontrol etmek, ağ geçitlerinin tikanik olup olmadigini kontrol etmek gibi...
ICMP protokolünde bilinen en yaygin ağ araci ping'dir. ping programi karsidaki bir bilgisayarin çalisir durumda olup olmadigini kontrol etmek için kullanilir. Çalisma mantigi çok basittir, karsi bilgisayara echo paketleri gönderir ve geri gelmesini bekler. Eger paketler geri gelmezse ping hata mesaji verir ve karsi bilgisayarin ağa bağli ve çalisir durumda olmadigi anlasilir.
Internet protokolü: IP protokolü TCP/IP protokol yigininda ağ seviyesine aittir ve tüm TCP/IP protokol takiminin paket iletimi islemini sağlar. Kisacasi IP verilerin internetteki iletisiminin kalbini olusturan protokoldür. IP paketi çesitli kisimlardan olusmaktadir. Paketin en basinda bir paket basligi vardir ve gönderilecek olan veriyle ilgili olarak gidecegi adres, gönderen adres gibi bilgileri içermektedir. Paketin geri kalan kismi ise gönderilecek veriyi içerir.
IP paketleriyle ilgili en ilginç sey bu paketler yolculugu sirasinda daha ufak paket boyutlari kullanan ağlara rast geldiginde daha küçük parçalara bölünebilmesi ve karsi tarafta tekrar birlestirilmesidir.
Transfer kontrol protokolü: TCP protokolü interntette kullanilan ana protokoldür. Dosya transferi ve uzak oturumlar gibi kritik isleri sağlar. TCP diger protokollerden farklidir. Güvensiz bir iletisimm ortaminda verilerin ayni sekilde hedefe ulasacağindan emin olamazsiniz. Ancak TCP gönderilen verilerin gönderildigi sirayla karsi tarafa ulasmasini sağlayarak güvenli veri iletimini sağlar.
TCP iki makine arasinda kurulan sanal bir bağlanti üzerinden çalisir. Üç kisimli bir islemden olusur bu bağlanti ve three-part handshake olarak bilinir. (TCP/IP three way handshake) TCP/IP üzerinde yapilan bazi saldiri tekniklerini iyi anlayabilmek için TCP'nin çalisma mantigini iyi anlamak gerekmektedir. Bu nedenle simdi bu bağlantinin nasil olduguna bir bakalim:
Three-way handshake isleminde öncelikle istemci sunucuya port numarasiyla birlikte bir bağlanti istegi gönderir. Istegi alan sunucu bu istege bir onay gönderir. En sonunda da istemci makine sunucuya bir onay gönderir ve bağlanti sağlanmis olur. Bağlanti yapildiktan sonra veri akisi her iki yönde de yapilabilmektedir. Buna genellikle full-duplex iletisim denmektedir.
TCP ayni zamanda hata kontrol mekanizmasi da sağliyor. Gönderilen her veri blogu için bir numara üretilmektedir. Ve karsilikli iki makine de bu numarayi kullanarak transfer edilen bloklari tanimaktadirlar. Basarili olarak gönderilen her blok için alici makine gönderici makineye bir onay mesaji gönderir. Ancak transfer sirasinda hata olursa alici makine ya hata mesajlari alir yada hiç bir mesaj almaz. Hata olustugu durumlarda, oturum kapanmadigi sürece, veriler tekrar gönderilir.
TCP protokolü ile verinin iki makine arasinda nasil transfer edildigini gördük. Simdi istemcinin isteginin karsi tarafa ulastiginda ne olup bittigine bakalim.
Bir makine baska bir makineye bağlanti istegi gönderdigi zaman belli bir hedef adresi belirtir. Bu adres bir IP adresi ve fiziksel adrestir. Ancak sadece bu adreste yeterli degildir, istemci karsi makinede hangi uygulamayla konusmak istedigini de belirtmek durumundadir. Örnek olarak siz bir sayfaya bağlanmak istediginizde URL adres kismina
www.tcpsecurity.com adresini yazip bağlan dediginiz anda browser bu adresteki bilgisayara bir bağlanti istegi gönderir ve o makinede bulunan HTTP uygulamasiyla konusmak istedigini de belirtir.