Iptables'ı hakkını vererek kullanabilmek için, IP, TCP, UDP gibi
belli başlı protokolleri bilmeniz gerekiyor. Bu bölümde TCP/IP
katmanlarını tanıyıp, bu katmanlar üzerinde çalışan IP, TCP... gibi
protokolleri inceleyeceğiz.
Hikayemize ilk olarak TCP/IP katmanlarını inceleyelerek başlayalım:
1. Uygulama (Application) Katmanı:
Başka bir bilgisayara gönderilmek istenen verinin oluşturulduğu (ya da
bulunduğu) katmandır. Uygulama (Örneğin Firefox) gönderilecek veriyi
oluşturur ve bir alttaki transport katmanına verir.
2. Transport Katmanı:
Gönderilecek verinin karşı tarafta kime teslim edileceği bilgisi bu
katmanda eklenir. Örneğin Firefox'un gönderdiği verinin karşı
taraftaki HTTP sunucusuna gönderileceği bilgisi (hedef port 80) bu
katmanda eklenir.
3. Internet Katmanı: Gönderilecek verinin nereye gönderileceği bilgisi (karşı tarafın IP adresi) bu katmanda eklenir.
4. Link Katmanı
Bilgisayarımızdaki bir uygulama (örneğin Firefox) tarafından gönderilen
paket, bu katmanlardan yukarıdan aşağıya
doğru geçer. Her katmanda göndermek istediğimiz veriye o katmanda
çalışan protokolün başlık (header) bilgisi eklenir. Örneğin uygulama
katmanında oluşturduğumuz gerçek verimize, Firefox, HTTP protokolü
başlığı; işletim sistemi, Transport katmanında TCP protokolü başlığı,
Internet katmanında IP başlığı ekler.
Paket hedefe vardığında bu sefer aşağıdan yukarıya doğru bu
katmanlardan geçer. Önce Internet katmanında, paketin IP protokolü
başlığı paketten çıkarılır. Transport katmanında TCP protokolü başlığı
paketten çıkarılır. En son paket HTTP başlığıyla birlikte Firefox'a
(yani uygulama katmanına) ulaşır.
IP (Internet Protocol) protokolü, Internet
katmanında bulunur. IP protokolü başlığı, bir paketin gönderici adresi,
alıcı adresi gibi bilgileri taşır.
Gönderici ve alıcı adresi, IP adresi olarak bildiğimiz 32 bitlik bir
sayıdır. İnsanların rahat okuyabilmesi açısından, noktalarla ayrılmış,
4 tane, 8 bitlik sayı halinde (127.0.0.1 gibi) gösterilir. Internete
bağlı her bilgisayarın bir IP adresi vardır. IP adresini, ev adresiniz
gibi düşünebilirsiniz. Diğer bilgisayarlar sizin bilgisayarınızla
iletişim kurarken sizin IP adresinizi kullanır.
TCP (Transmission Control Protocol) protokolü, Transport
katmanında bulunur. TCP protokolünde bağlantı durumludur (stateful).
Yani belirli bir iletişim kuralı ile bağlantı açılır, belli bir süre
devam eder ve iletişim sonlandığında bağlantı kapatılır.
TCP'de paketi gönderen, karşı tarafın paketi alıp almadığını bilir,
paketin karşı tarafa ulaşamadığı durumda paketi tekrar gönderir. TCP
protokolü,
internet katmanından uygulama katmanına taşınan paketlerin doğru
uygulamaya, doğru sıralama da taşınmasını kontrol eder.
TCP iletişimi sırasında, Transport katmanında pakete TCP başlığı
eklenir. Bir TCP başlığı kabaca,
1. Kaynak Port
2. Hedef Port
3. Sıra numarası (Sequence Number)
4. Kabul numarası (Acknowledgement Number)
3. ve SYN, ACK, URG, RST, FIN gibi bayraklardan
oluşur.
TCP protokolünde bağlantı açılırken aşağıdaki adımlar
gerçekleşir:
1. Bağlantı açmak isteyen bilgisayar, uzaktaki bilgisayara, TCP başlığındaki SYN bayrağı ayarlanmış bir paket gönderir (Yazının devamında SYN paketi olarak adlandıracağız).
2. Uzaktaki bilgisayar, cevap olarak, TCP başlığındaki SYN ve ACK
bayrakları
ayarlanmış bir paket (SYN/ACK paketi) gönderir.
3. Bağlantı açan taraf ACK paketi gönderir ve
TCP bağlantısı başlamış olur.
UDP (User Datagram Protocol), oldukça basit bir
protokoldür. Transport katmanında bulunur. Basit veri transferleri için
tasarlanmış olup, TCP gibi paketin karşı tarafa ulaşıp ulaşmadığını
kontrol etmez. UDP'de bağlantı durumsuzdur. Bir UDP paketi ile bir
diğer UDP paketi arasında, UDP protokolü açısından hiç bir bağ yoktur.
TCP'nin özelliklerinin gerekmediği basit soru - cevap şeklindeki iletişimde kullanışlıdır. Örneğin DNS sorguları, UDP protokolünü kullanır.
Bir UDP başlığı kabaca, kaynak port ve hedef port numarasından
oluşur.
ICMP (Internet Control Message Protocol) protokolü ağ ile ilgili
hataların bildirilmesinde kullanılır. IP protokolünün hataları ele alma
durumu olmadığından, bu durum ICMP protokolü ile kapatılır.
ICMP protokolü, Internet katmanında bulunur. ICMP başlığı, IP
başlığına sadece bir iki ek kısmı vardır. ICMP başlığında, IP
başlığında olan bilgilerin yanında, bir tip ve bir kod bilgisi vardır.
Tip bilgisi hatanın ya da cevabın tipini belirtir (Hedef ulaşılamaz
(destination unreachable), echo gibi). Kod bilgisi ise bazı tip
hatalarla ilgili ekstra bilgi sunar. Örneğin tip bilgisi "hedef
ulaşılamaz" ise, kod bilgisi "konak ulaşılamaz", "port ulaşılamaz" gibi
hatayla ilgili daha ayrıntılı bilgi verir.
ICMP protokolü, birçok sistemde bulunan ping aracı tarafından da
kullanılır. ping aracının
gönderdiği paketler ICMP paketleridir.