Soru tam olarak ele alınsa bile. Bu sürecin en iyi adım adım anlatılması gerektiğini düşünüyorum.
Bu örnekte, bir yönlendirici aracılığıyla İnternet'e bağlı özel bir LAN'da oturuyorum. Ağımız tek bir genel IP adresini paylaştığı için NAT kullanıyoruz.
Bu yüzden superuser.com
birçok IP paketi oluşturacak sayfayı talep ettiğimde . Bir tanesine bakalım.
IP Paket
Kaynağı: 192.168.1.12
( IP adresim )
Hedef: 64.34.119.12
(superuser.com)
Şimdi, sistemim büyük olasılıkla söz konusu sisteme benzer şekilde kuruldu. Kendi IP adresime ( 192.168.1.12
), alt ağ maskesine ( 255.255.255.0
) ve varsayılan ağ geçidine ( 192.168.1.1
) sahibim . Şimdi, IP paketimdeki Hedef alanım kendimden farklı bir ağa işaret ettiğinden, varsayılan ağ geçidime (doğrudan bilgisayara değil) gönderilir.
Ancak, Hedef tamamen başka bir yere işaret ediyorsa, paket varsayılan ağ geçidine nasıl ulaşabilir ?
Ethernet
Bu kolay, çünkü bunun için Ethernet protokolünün adreslemesini kullanıyoruz. Hedef IP adresimizi IP paketinde ve varsayılan ağ geçidimizin MAC adresini Ethernet Çerçevesinde hedef olarak belirledik .
Şimdi bu bizim varsayılan ağ geçidimizin paketi aldığından emin olacak superuser.com
. Yuppi!
Şimdi ağ geçidi bizim paketimize sahip ve onu yoluna gönderebilir. Ama paket yerine ilk ihtiyacı, bu cevap almak emin olmak için Kaynak (Aksi adresi superuser.com
ile bazı (muhtemelen) varolmayan cihaza cevabını göndermeye çalışacağını söyledi benim kendi ağında IP adresine. Şimdi bu olmaz çok güzel.)
Yönlendiricim genel IP adresini Kaynak alanına yerleştirecek:
IP Paket
Kaynağı: 92.69.127.243
(genel IP adresim)
Hedef: 64.34.119.12
(superuser.com)
Şimdi aynı oyun, paket nihayet gelene superuser.com
ve bir cevap üretilinceye kadar dünyadaki tüm yönlendiricilerle devam ediyor .
Cevap
IP Paketini Cevapla
Kaynak: 64.34.119.12
(superuser.com)
Hedef: 92.69.127.243
(genel IP adresim)
Tamam, cevap yönlendiricime ulaştı, şimdi ne? Yönlendiricim şimdi cevabı göndermeyi nasıl biliyor 192.168.1.12
?
TCP
Aslında bu işe yarıyor çünkü iletişimin sadece IP ve Ethernet bölümlerine baktık. Bu işi yapan şey TCP kısmıdır.
Web sunucularının genellikle bağlantı noktasında çalıştığını biliyorsunuzdur 80
. IP, bağlantı noktası kavramına sahip değildir . TCP'den geliyor . TCP'de (IP'de olduğu gibi) bir kaynak ve hedef port var .
TCP Paketimden superuser.com'a
Kaynak: 192.168.1.12
(IP adresim)
Kaynak Bağlantı Noktası: 11111
(bilgisayarımın oluşturduğu bağlantı noktası)
Hedef: 64.34.119.12
(superuser.com)
Hedef Bağlantı Noktası:80
Yönlendiriciniz bu başlangıç paketini gönderdiğinde (bu superuser.com
bağlantı noktasına yönlendirilir 80
), oraya yeni bir kaynak bağlantı noktası koyar (gibi 12345
).
Ve bu önemli kısmı! Bu değişimi hatırlayacak!
Yönlendiricimin TCP Paketleyicisini superuser.com'a
Kaynak: 92.69.127.243
(genel IP adresim)
Kaynak Bağlantı Noktası: 12345
(yönlendiricimin oluşturduğu bağlantı noktası)
Hedef: 64.34.119.12
(superuser.com)
Hedef Bağlantı Noktası:80
Böylece yönlendirici tarafından alınan cevap paketi aslında şöyle görünür:
superuser.com adresinden TCP Paketini Cevapla
Kaynak: 64.34.119.12
(superuser.com)
Kaynak Bağlantı Noktası: 80
Hedef: 92.69.127.243
(genel IP adresim)
Hedef Bağlantı Noktası: 12345
(yönlendiricimin oluşturduğu bağlantı noktası)
Böylece şimdi bu paketi alıyor ve daha önce hatırladığı bir port için IP adresi 192.168.1.12
(IP adresim) için NAT işlemlerine atandığını görüyor .
Yönelticimden TCP Paketini Cevapla
Kaynak: 64.34.119.12
(superuser.com)
Kaynak Bağlantı Noktası: 80
Hedef: 192.168.1.12
(IP adresim)
Hedef Bağlantı Noktası: 11111
(bilgisayarımın oluşturduğu bağlantı noktası)