(Aşağıdakiler için, herhangi bir DNS aramasını veya ikinci katman eylemini yok sayacağım, çünkü bu NAT hikayesinin ilgili kısmı değil.)
Herhangi bir TCP bağlantısı dört bölümden oluşan bir demettir:
<source IP> <source port> <destination IP> <destination port>
Kısacası: hedef IP, paketi doğru makineye almak için kullanılır, hedef port o makinedeki paketi doğru programa / oturuma almak için kullanılır Kaynak IP, herhangi bir cevabın nereye gönderileceğini bilmek için kullanılır. Aynı şey kaynak portu için de geçerli. Bir yanıt gönderildiğinde, kaynak ve hedef kolayca değiştirilir.
NAT olmadan iki bilgisayarla başlayalım:
- Bilgisayarın IP'si var
1.1.1.1
- Web sunucusunda IP var
3.3.3.3
- HTTP için standart bağlantı noktası
80
Bir bilgisayar bir web sayfası istediğinde, önce rasgele aralıktan (1024-65535) kullanılmayan rasgele bir bağlantı noktası numarası seçecektir. Hadi seçelim 2345
. Sonra aşağıdaki sıra gerçekleşir: Bilgisayar paketini şu adresle gönderir: kaynak IP 1.1.1.1
, kaynak bağlantı noktası 2345
, hedef IP 3.3.3.3
, hedef bağlantı noktası 80
. Paketler web sunucusuna ulaşır, kendi IP ve portunu görür 80
, bu yüzden bunun bir web sayfası için bir istek olduğunu bilir. Web sunucusu daha sonra web sayfasını Kaynak IP 3.3.3.3
, Kaynak bağlantı noktası 80, hedef IP 1.1.1.1
, hedef bağlantı noktası olan paketler halinde geri gönderir 2345
. Bilgisayar bu paketleri alır ve port numarası nedeniyle istenen web sayfasının ne olduğunu bilir 2345
.
Bu bağlantı noktası kombinasyonları genellikle şu şekilde yazılır: 1.1.1.1:2345
ve 3.3.3.3:80
.
Artık internetteki bilgisayar sayısı, mevcut IPv4 adreslerinin sayısından çok daha fazla. Adres alanını korumak için, adres paylaşımı için serbestçe kullanılabilen bir dizi özel adres aralığı tanıtıldı. Bu aralıklar RFC1918 olarak adlandırılır ve aşağıdakilerdir:
- 192.168.0.0 - 192.168.255.255
- 172.16.0.0 - 172.31.255.255
- 10.0.0.0 - 10.255.255.255
Bu adresler internet yönlendirme tablolarının hiçbir yerinde değildir, bu yüzden internetin omurgasındaki bu aralıklarda bir hedefe sahip bir paket gönderirseniz, sadece bırakılırlar. Çünkü milyonlarca insan aynı adresleri kullanıyor. Bu adreslerin internet için yararlı bir şeye çevrilmesi gerekir. Ağ Adresi Çevirisi burada devreye girer:
İki bilgisayarımız var:
- A:
192.168.0.1
ve B:192.168.0.2
- Ağ geçitlerinin genel bir IP adresi vardır
1.1.1.1
.
- Aynı web sunucusunu tutuyoruz.
- Her iki bilgisayar da aynı web sayfasını aynı sunucudan istiyor.
Her iki bilgisayar da rastgele bir bağlantı noktası seçer: diyelim ki: 192.168.0.1:2345
ve 192.168.0.2:5432
.
Bilgisayar A kaynak 192.168.0.1:2345
ve hedef ile paket göndermek 3.3.3.3:80
. Ağ geçidi bu paketi kaynak 1.1.1.1:2345
hedefe çevirir 3.3.3.3:80
ve bu kombinasyona verilen yanıtların gittiğini hatırlar 192.168.0.1
. O kaynağı ile bir cevap recieves zaman, 3.3.3.3:80
ve hedefe 1.1.1.1:2345
, bu kaynak tercüme ederiz 3.3.3.3:80
ve hedefe 192.168.0.1:2345
ve üzerinde bir paket gönderir.
B Bilgisayarı paketini kaynak 192.168.0.2:5432
ve hedef ile gönderiyor 3.3.3.3:80
. Ağ geçidi bu paketi kaynak 1.1.1.1:5432
hedefe çevirir 3.3.3.3:80
ve bu kombinasyona verilen yanıtların gittiğini hatırlar 192.168.0.2
. O kaynağı ile bir cevap recieves zaman, 3.3.3.3:80
ve hedefe 1.1.1.1:5432
, bu kaynak tercüme ederiz 3.3.3.3:80
ve hedefe 192.168.0.2:5432
ve üzerinde bir paket gönderir.
Her iki bilgisayar da aynı kaynak bağlantı noktası numarasını seçerse, ağ geçidi başka bir serbest rastgele kaynak bağlantı noktası numarası seçer ve bağlantı noktası numarasını da çevirmeyi unutmayın. Bu bazen PAT (Bağlantı Noktası Adres Çevirisi) olarak adlandırılır. Bu temelde bir NAT alt kümesidir.
Bunların hepsinde birkaç uygulama var. Ağ geçidi sadece "Bilgisayar X kullanılan kaynak bağlantı noktası Y'yi" hatırlayabilir ve Y bağlantı noktasıyla herhangi bir şeyi X bilgisayarına iletebilir. Bilgisayar X'in kaynak bağlantı noktası Y ve hedef Z kullandığını hatırlayabilir ve sadece Z bağlantı noktasından Y bağlantı noktasına bir şey iletebilir. Bilgisayar X. Ya da tüm diziyi hatırlama ve yalnızca X kaynağına tüm kaynak / hedef ip ve bağlantı noktasıyla eşleşen trafiği gönderme seçeneği vardır.