| Tcp/Ip'ye giriş | |
| TCP/IP Araç ve Yardımcı Yazılımları | |
| TCP, verinin alıcıya ulaşmasını garanti eder mi? |
TCP/IP’yi herkes kullanmakta. Onsuz İnternet olamazdı. İnternet dışında da kurumlar ağlarında TCP/IP’yi kullanmaktalar. TCP/IP, “Transmission Control Protocol/Internet Protocol)” nın kısaltmasıdır. ARPA’nın(A.B.D. Advanced Research Projects Agency) 1970’lerde yürüttüğü bir proje sonunda geliştirilmiştir. ARPA’nın paket anahtarlama teknolojilerini desteklemesi sonucunda, ilk önce “Network Control Protocol(NCP)” doğmuştur. Daha sonra 1981’de TCP için RFC 793 dokümanı yayınlanmıştır. RFC’ler “Internet Engineering Task Force(IETF)”nin Internet standartları için oluşturduğu dokümanlardır. Bunun sonucunda ARPANET doğmuştur. 1981’de IP’ye yönelik RFC 791 standardı yayınlanmıştır. 1982’ye gelindiğinde ARPA kuruluşu, TCP/IP ikilisini oluşturarak, ARPANET’i bu ikili protokol üzerine kurmuştur. Daha sonra, Internet’e yönelik gelecek standartları öngörmek üzere, “Internet Architecture Board(IAB)” oluşturulmuştur. Gerisini siz biliyorsunuz. Ondan sonra, “.com”lar yağmur gibi yağmıştır. Bu tarihsel girişden sonra, teknik konulara girebiliriz.
TCP/IP protokol takımı, çeşitli protokollerden oluşur ve buna TCP/IP yığın(stack) modeli adı verilir. Bunlar:
Uygulama Katmanı
FTP(File Transfer Protocol)HTTP(Hypertext Transfer Protocol)
SMTP(Simple Mail Transfer Protocol)
Ulaştırma Katmanı
TCP(Transmission Control Protocol)UDP(User Datagram Protocol)
Internet Katmanı
ARP(Address Resolution Protocol)RARP(Reverse Address Resolution Protocol)
IP(Internet Protocol)
ICMP(Internet Control Message Protocol)
IGMP(Internet Group Membership Protocol)
RIP(Routing Information Protocol)
Ağ erişim katmanı
Fiziksel iletim katmanı(kategori 5, vs.)Çerçeve oluşturma(framing)
Protokolleri(Ethernet, vs.)
Uygulama katmanında koşturulan servisler, hemen altındaki ulaştırma katmanından yararlanır ve paketler gideceği yere TCP ve UDP ile ulaştırılır. DNS(Domain Name System), FTP, HTTP, Telnet, SMTP, SNMP(Simple Network Management Protocol) gibi birçok uygulama bu katmanda çalışır. Microsoft mimarisinde, “Windows Sockets” de burada çalışır. Ulaştırma katmanı, bilgisayarlar arasında iletişimi sağlar. TCP, IP’nin antitezi gibidir. TCP’de, hızdan ödün vermek pahasına paketlerin garantili bir şekilde karşı uca ulaşması sağlatılır. Fakat bunu gerçeklerken, bağlantı kurma, bir dosyayı yönetilebilir paketlere ayrıştırma, alıcı uçta paketleri tekrar biraraya getirme ve paketin karşı uçtan alındığını belirten bir “alındı(ACK)” mesajı gönderilmesi, gibi işler için asıl veriye genel amaçlı veriler(overhead) eklenir.
UDP, IP gibi paketlerin gönderimi garanti altına almaz, fakat genel amaçlı veri eklentileri azdır. Alındının gönderene teyidine ve veri kaybı halinde tekrar iletime gerek kalmaz. UDP, RealNetworks RealPlayer’ın kullandığı “streaming media” teknolojisine benzer. Demek ki, UDP hızlı olmasına karşılık, performansı kötüdür. Internet katmanı, paket ve datagram’ların yönlendirilmesinden ve ağ erişim katmanının onları nereye göndereceğinden de sorumludur. Bunu yaparken, MAC(Media Access Control) adreslerini elde etmek için ARP’den ve disksiz bilgisayarlara göndermek için RARP’dan yararlanır.
ICMP, kötü veri gönderimlerini, sorunları ve oluşan hataları, iletişim kurmaya çalışan bilgisayarlara doğru tekrarlar. Herkesin dinleme modunda bekleyerek, tek noktadan gönderilen verileri aldığı “multicasting”de, IGMP, veriyi sağlayan protokoldür. RIP, ağ üzerinden yönlendirme işini halleder. Paketleri alıcısına nasıl göndereceğinin yolunu bulur. IP, paketlerin alıcı uca gönderilmesini garanti etmez, fakat elinden geleni yapar. Ağ erişim katmanı, veri çerçevelerinin fiziksel iletim ortamına bırakıldığı noktalardır.
TCP/IP araç ve yardımcı yazılımları 4 grupta toplanabilir:
| Diagnostik(tanı) | |
| Veri aktarımı | |
| Uzaktan yürütme(çalıştırma) | |
| Yazdırma |
Herbir grubun içinde de, her bir gruba özgü altgruplar mevcuttur.
Araçlar:
| PING(Packet Internet Groper) | |
| IPCONFIG(IP Configuration) | |
| ROUTE | |
| TRACERT | |
| ARP(Address Resolution Protocol) | |
| HOSTNAME | |
| NETSTAT | |
| NBTSTAT | |
| NSLOOKUP(Name Server Lookup) |
En basit ve en yaygın kullanılan tanı aracıdır. Komut satırından çalışır. PING komutu, belirli bir bilgisayara doğru yöneltilmiş dört adet ICMP paketi gönderir. Komut, ilgili bilgisayardan bir eko yanıt göndermesini ister. Komutun kullanma sentaksı şu şekildedir:
PING xxx.xxx.xxx.xxx veya PING isim.com
Burada, xxx.xxx.xxx.xxx karşı uçtaki bilgisayarın IP adresini ve “isim.com” bilgisayar sisteminin alan adını(domain name) gösterir. Eğer sınama işlemi başarılı ise, yanıt alınır. Eğer başarılı değilse, yolda başarısız olan her bir paket için “Request timed out” mesajı alınır. PING komutu ile kullanılan bazı yaygın anahtarlar(komutun sonuna eklenen seçime bağlı parametreler) şunlardır:
-a Bilgisayar isimlerine karşı gelen adresleri çözümler.
-t Belirli bir bilgisayarı, siz bitirinceye kadar PING’ler. Buna “Ping of Death” adı da verilir.
-n Gönderilecek eko paketlerinin sayısını belirtir. Varsayılan değer 4’dür.
-l Eko paketlerinin büyüklüğünü belirler. Varsayılan değer 64 byte’dır.
PING komutunun en yararlı kullanımlarından biri, yerel makinada TCP/IP protokolünün kurulu olup olmadığını kontrol eden biçimidir. Bunun için komut satırında:
PING 127.0.0.1 veya PING localhost
yazılır. Komut, ağa doğru herhangi bir paket göndermeden, “geriye doğru döngü(loopback)” adresine ve sonra da geriye doğru paket gönderir. Eğer başarılı bir yanıt alınırsa, o yerel makinada TCP/IP’nin kurulu olduğu anlaşılır.
DHCP(Dynamic Host Configuration Protocol) ağlarında en çok kullanılan bir komuttur. DHCP, ağ üzerindeki istemcilerin IP adreslerini yönetmek için kullanılan bir tekniktir. IPCONFIG, NT işletim sistemlerinde kullanılır. Bunun Windows 9x’deki benzeri, WINIPCFG’dir. Bu iki komut, TCP/IP konfigürasyonuyla ilgili gerekli bilgileri verir. Bunlar, IP adresi, “Altağ maskesi(subnet mask)” ve “varsayılan geçityolu(default gateway)”dur. Komut ile birlikte aşağıdaki anahtarlar(parametreler) kullanılabilir:
/all IP konfigürasyonu ile ilgili tüm bilgileri verir.
/release (x) DHCP ağında, IP adres atanmasını ortadan kaldırarak, TCP/IP iletişimini iptal eder.
/renew (x) Bir DHCP ağı üzerinde tekrardan dinamik olarak atanan bir IP adresi elde eder.
Burada (x), ağ adaptörünü göstermektedir.
Bu komut, yollar ve yerel seviyede yönlendirmeler hakkında bilinmek istenen herşey hakkında bilgi verir. “Route” komutu, gözlemlenecek veriler ortaya koymaktan başka, yönlendirme üzerinde değişiklik yapılmasına da olanak sağlar. Komut ile kullanılabilecek en yaygın anahtarlar şunlardır:
ROUTE ADD <ağ> MASK <ağ maskesi> <geçityolu(gateway)> Bir yol ekler
ROUTE –p ADD <ağ> MASK <ağ maskesi> <geçityolu> Devamlı bir yol ekler
ROUTE DELETE <ağ> <geçityolu>
Bir yolu silerROUTE CHANGE <ağ> <geçityolu> Bir yolu değiştirir
ROUTE PRINT Yönlendirme tablosunu gösterir
ROUTE –f Tüm yolları siler
Oldukça kullanılışlı bir komuttur. Bu komut, yerel bilgisayardan ulaşılmak istenen bilgisayara giden yolu izleyerek bulur. Bu komut yardımıyla arızalı veya yavaş bağlantılar hakkında bilgi toplanabilir ve hedef bilgisayara gönderilen paketlerin hangi yol üzerinden gittiğini belirler. Komut ile birlikte kullanılan yaygın parametreler şunlardır:
-d IP adreslere karşı düşen bilgisayar isimlerinin(host name) çözümlenme işlemini iptal ederek, hızlı izleme yaptırır.
-h Bu parametreden sonra bir sayı girilmelidir. Belirli bir hedef bilgisayara, belirtilen sayı kadar “hop(sıçrama noktası)” üzerinden geçerek ulaşırken izlenen yol bilgisini verir
-w Yanıt almak için beklenmesi gereken süre.
Adres çözümleme protokolü(ARP), IP adreslerine karşı düşen MAC(Media Access Control) adreslerini çözümleyecektir. Bu şekilde, ağ konfigürasyonları derhal ortaya çıkarılabilir. Komut ile yaygın kullanılan bazı parametreler şunlardır:
-g Önbellekte(cache) tutulan IP adreslerine karşı düşen MAC adresleri satırlarını gösterir.
-d <inet_addr> ARP listesinde belirtilen <inet_addr>(IP adresi) ‘sini siler.
–a <inet_addr> <ether_addr> Belirli bir bilgisayara ait inet_addr, önbelleğe eklenir. <ether_addr>, hex olarak MAC adresidir(donanımsal adres).
Yerel bilgisayarın ismini verir. Eğer bu bilgisayardan PING atılacaksa, hostname komutu yararlı olabilir.
Bu komut, ağ protokol istatistikleri ve onların o andaki değerleri hakkında bilgi sağlar. Bu şekilde, TCP, IP, ICMP ve UDP protokolleri hakkında ayrıntılı bilgilere ulaşılabilir. NETSTAT komutu ile kullanılabilecek bazı anahtarlar şunlardır:
-a Tüm bağlantıları ve açık kapıları(port) gösterir.
-n Bağlantı ve açık kapıları nümerik olarak göstermesinden başka, -a ile aynıdır.
-p Ulaştırma katmanı protokolleri(TCP, UDP) için protokol bilgilerini gösterir.
-s TCP, IP, UDP ve ICMP için istatistikleri gösterir.
-r Aktif bağlantıları ve yolları gösterir.
Bu komut, NETSTAT gibi ağ protokol istatistikleri hakkında bilgi verir. Fakat NBTSTAT fazladan olarak, TCP/IP üzerinde NetBIOS istatistiklerini sağlar, LMHOSTS önbelleğini (cache) günceller veya kayıtlı isminizi ve kapsam ID’nizi belirler. Komut ile kullanılabilen bazı parametreler şunlardır:
-a Bilgisayar ismi yardımıyla, uzaktaki bir bilgisayarın isim tablosunu sağlar.
-A IP adresi yardımıyla, uzaktaki bir bilgisayarın isim tablosunu sağlar.
-n Bilgisayarın isim tablosunu sağlar.
-c Uzaktaki bir önbelleğin(cache), IP adresi ve isim tablosunu sağlar.
-r WINS ile ilgili bir komut.
-R LMHOSTS dosyasından alınan uzaktaki bir önbelleğin isim tablosunu temizler(“purge” işlemi) ve yeniden yükler(“reload” işlemi)
Temel olarak DNS veritabanına girilmiş değerlere bakar. Komut ile kullanılabilecek bazı anahtarlar şunlardır:
Option aşağıdakiler gibi komutları belirlemede kullanılır.
Finger uzaktaki bilgisayar hakkında bilgileri gösterir. Son derece yararlıdır.
Root Sizi DNS’in kök(root) bölgesine götürür.
Server Varsayılan sunucuyu, belirtilen DNS sunucu olarak değiştirir.
Ls DNS alan kayıtlarını gösterir.
Set Çeşitli NSLOOKUP komutları(anahtarlar) için ayarları değiştirir.
Ağ bilgiişlemde amaç verilerin paylaşımı ve verinin A noktasından B noktasına ve geriye doğru aktarılmasıdır. TCP/IP’de bunun yolu FTP(File Transfer Protocol)’dir. FTP ile hem indirme(uzaktaki bir noktadan kendi makinanıza doğru) hem de geriye doğru aktarma(kendi makinanızdan uzaktaki bilgisayara) yapılabilir. Veri aktarma komutları şunlardır:
?, help FTP komutlarını listeler.
Ascii Dosya aktarımı varsayılan olarak, Ascii formatta gerçekleştirilir.
Binary Dosya aktarımı “ikili(binary)” formatta gerçekleştirilir.
Dir Bir dizindeki dosya ve altdizinleri listeler.
Cd Dizinleri değiştirir.
Delete Dosyaları siler.
Get Uzaktaki bilgisayardan alınan dosyalar yerel bilgisayara kopyalanır
.(download)Put Yerel bilgisayardaki dosyayı alıp, uzaktaki bilgisayara kopyalar.(upload)
Type Dosya aktarma tipini gösterir.
Bye, quite Bir FTP oturumuna son verir.(Log off)
TFTP(Trivial FTP), FTP ‘ye benzemesine karşılık, FTP kullanıcıdan onay mekanizması (authentication) isterken, TFTP onay istemez. TFTP, veriyi basitçe transfer eder.
Uzaktaki bir bilgisayari kontrol etmek veya etkilesmek için kullanilan bir arayüz olup, bu alanda en çok kullanilan protokol “Telnet”tir. Telnet’in sagladigi esneklikle, sunucu giris/çikis kapilarindan(port) erisim saglanabilir. RSH(Remote Shell) sayesinde, UNIX bilgisayarlara eriserek komutlar kosturulabilir. REXEC, uzaktaki bilgisayarlarda uzaktan çalistirma olanagi saglar. Normalde(varsayilan), Windows NT UNIX servisleri saglamaz. Buna karsilik Microsoft 1998’in sonlarindan beri, UNIX’e yönelik Windows NT servislerini ayri olarak saglamaktadir.
Aşağıdaki komutlarla temel olarak “satır yazıcılara” yazdırılabilir.
LPR(Line Printer Remote) Uzaktaki bir bilgisayarda yazdırır.
LPD(Line Printer Daemon) LPR yazdırma görevlerini yürüten bilgisayar, çıkış aygıtına gönderir.
LPQ(Line Printer Queue) Yazdırma kuyruğunda bekleyen görevler hakkında bilgi sağlar.
TCP protokolünün, verinin karşı uca gönderilmesini garanti ettiğine dair biraz yanlış bir kanı mevcuttur. Aslında hiçbir protokol böyle bir garantiyi sağlayamaz. Diyelim ki, TCP protokolü ile A ve B noktaları arasında iletişim kurmaya çalışıyoruz. Fakat tam iletim sürerken, iletim yolundaki halkalardan biri koptu. Böyle bir durumda TCP ne yapsın? TCP’nin yapabildiği şey, veriyi karşı uca ulaştı
rabilmek veya ulaştırma işlevinin başarısız kaldığını belirtebilmektir. Fakat, verinin ne kadarının gönderilemediğini söyleyemez.TCP protokolü, bir “alındı(acknowledgement)” mekanizmasına göre çalışır. Göndericide bir TCP yığını(stack) ve alıcı uçta bir TCP yığını mevcuttur. Gönderici yığını, alıcı TCP yığınının gönderilen veriyi gerçekten aldığını onaylar. TCP paket başlığı(header) 32 bit’lik bir dizi(sıra) ve alındı numaraları içerir. Dizi numarası bağlantı kurulduğunda rastlantısal olarak ayarlanır ve
daha sonra gönderilen her bir veri için arttırılır. Veri alındığında, alıcı uçtaki TCP yığını, beklenilen bir sonraki veri byte’ının alındı numarasına eşit olan bir paket gönderir. Süreci aşağıdaki örnek üzerinde inceleyelim:From kartal.1101 to sahin.telnet seq 37242, ack n.a., window 8760, 0.data bytes, flags Syn.
From sahin.telnet to kartal.1101 seq 20865, ack 37243, window 11468, 0.data bytes, flags Syn Ack.
From kartal.1101 to sahin.telnet seq 37243, ack 20866, 0.data bytes, flags Ack.
From sahin.telnet to kartal.1101 seq 20866, ack 37243, window 11468, 6.data bytes, flags Push Ack.
From kartal.1101 to sahin.telnet seq 37243, ack 20872, window 8754, 3.data bytes, flags Push Ack.
From sahin.telnet to kartal.1101 seq 20872, ack 37246, window 11468, 0.data bytes, flags Ack.
Yukarıdaki örnekte “kartal” adlı bilgisayar, ilk olarak 37242 dizi numarasını kullanarak “sahin” adlı bilgisayar ile iletişim kurmaktadır. Sahin makinası, kendi rastgele bağlantı kurmaya yönelik dizi numarasını(20865) yaratarak “kartal”a gönderir, aynı zamanda “kartal”ın gönderdiği pakete karşılık “37242+1=37243” alındı numarasını gönderir. Bu adımda gönderilen herhangi bir veri olmamasına karşılık(0.data), “Senkronizasyon bayrağı(syn flag)” veri byte’ı olarak nitelenir ve bu neden
le “alındı” sinyali geriye gönderilir. Sonraki adımlarda, “kartal” “sahin”e 37243 dizi numarası ile başlayan 3 byte’lık veri gönderir. “Sahin”, “37243+3=37246” dizi numarası ile “alındı” gönderir. Eğer kartal sahin’den, doğru alındı numarasına sahip paket alamazsa, veriyi tekrar gönderir. Dikkat edilecek olursa, bir bağlantıya ilişkin alıcı ve verici uçların dizi numaraları birbirinden bağımsızdır.