IP cevap paketleri özel bir LAN içindeki hedeflerine nasıl ulaşır? [çift]


26

Bu beni uzun zamandır kafam karıştıran küçük bir teori sorusudur.

Temel olarak, eğer özel bir LAN'ın içindeysek ve gelen paketlerin örneğin makinelerden birinde bulunan bir HTTP sunucusuna ulaşmasını istiyorsak, gelen paketlerin tam olarak bu bilgisayara ulaşması için portları iletiriz.

Şimdi, 'yanıt' paketlerinin, bir web sayfasını açtığımız zamanki gibi bir LAN içindeki hedeflerine nasıl ulaştığı konusunda kafam oldukça karıştı. Bu konuda gerçekten yararlı bir bilgi bulamıyorum.

Umarım birileri bana birkaç ipucu verebilir veya onu açıklayabilecek bazı bilgilere bağlayabilir. Teşekkürler.

EDIT: Ben açıklığa kavuşturmak gerektiğini düşünüyorum. Ne sorduğumun bir örneği şöyle olabilir:
1. Tek bir harici IP'ye sahip bir LAN içindeki bir bilgisayar, bu LAN dışındaki bir web sunucusundan bir web sayfasını yüklemeye çalışır (Temel olarak İnternette)
2 Web sunucusu yanıt verir ve web sayfasını bu bilgisayara geri gönderir.

Beni bu noktada kafam karıştıran, yönlendirici, önceki port iletme olmadan, hangi verileri (yönlendiricinin bir LAN'a birden fazla bilgisayarla bağlı olduğu göz önüne alındığında) göndermek için hangi bilgisayarı göndereceğini biliyor.


Konuyla ilgili güzel bir video izledim: Network Address Translation - Computerphile
Der Hochstapler

Yanıtlar:


56

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.combirç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.comile 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.comve 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.combağ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ı)


1
Cevabınızı düzenledim, port numaralarına ne olduğunu açıkça göstermedi. Ara basamaklar ve portun sayılarını belirten her adımda daha fazla örnek ekledim.
Scott Chamberlain

1
@OliverSalzburg Cevaplandı aynı soruyu arıyordum ve açıklamanız bana hatırladım, bu konuda sadece kısa bir soru. Yönelticinin bu ters eşlemeleri (kaynak bağlantı noktası) ne kadar süre tutacağını merak etmek, bu kadar çok istek için bunu yapmaya devam ederse alanın tükeneceğini düşünür, onları çok düzenli olarak yıkar mı?
Ahmed,

@Ahmed: Bu bilgiyi takip edecek hafıza miktarı sınırlıdır. 65536 muhtemel port numarası vardır, bunlar 2 baytta depolanır. Bu nedenle, her bağlantı noktası için bir IP adresini (4 bayt) hatırlamak için 65536 x 4 bayt = 262144 bayt = 256 kB olur. Ancak, özellikler yönlendiricide uygulanmaktadır, bu çok fazla bellek değildir.
Der Hochstapler 16:12

@Oliver Harika bir cevap, tam olarak aradığım şey! Birkaç sorum var - (1) "aynı oyun dünyadaki tüm yönlendiricilerle devam ediyor" - bu doğru mu? Elbette kaynak alan her adımda değiştirilmeye devam etmeyecek mi? (2) Yönlendirici, açılan bağlantı noktalarını uzun süredir hatırlıyor mu veya yanıt vermeyen istekler için bunları düzenli olarak bırakıyor mu? (3) Bu, bir hacker'ın yönlendiricinin güvenlik duvarından ortadaki bir saldırıyla paketini geçebileceği anlamına mı geliyor: giden TCP paketlerini gizliyor, ardından yönlendiricinizin açık TCP bağlantı noktasını hedefinize uygun sahte bir IP IP ile hedefliyor mu?
Jon Bentley

1
ICMP ping yanıtı LAN'daki bir bilgisayara nasıl geri döner? TCP için bağlantı noktasına benzer bir şey var mı? Diğer protokoller nasıl?
Jean

11

Ağ Adresi Çevirisi . Kısacası, özel LAN ağ geçidi yönlendiricisi, özel LAN kaynak adresini kendi genel adresi ile değiştirdiğinde, paketi, kaynak LAN düğümüne ve giden isteğine eşlediği benzersiz ve aksi takdirde yerel olarak anlamsız bir port numarası atamak gibi bir şekilde değiştirir. . Bu bağlantı noktası eşlemesini hatırlar, böylece bir kamuya açık IP / benzersiz bağlantı noktası # 'ya geri döndüğünde, (yönlendirici) bunu kaynak düğümünden birine nasıl eşleştireceğini bilir. Bu aynı zamanda çoklu sekmeleri, tarayıcıları veya tarayıcı örneklerini nasıl çalıştırabileceğinizdir ve her bir tarayıcı isteğinin yanıtları doğru tarayıcı ve sekmeye geri döner.


2
JRobert: Bağlantı noktası numarası olmayan IP protokolleri (örneğin ICMP), tcp veya udp dışındakiler?
Uri

0

Yönlendiricinin harici arabirimine bir ilk paket geldiğinde, paketin hedef IP adresini bağlantı noktası yönlendirme yapılandırmasına göre değiştirir ve değiştirilen paketi yönlendiricinin iç arabirimine iletir (gerekirse normal ARP'den sonra)

Paket web sunucusuna ulaşır ve hala herhangi bir cevap için hedef adres olarak kullanılacak harici bir kaynak IP adresine sahiptir. Sunucu buna göre, giden cevap paketlerini her zamanki gibi, isteğin kaynak IP adresine eşit bir hedef IP adresi ile hitap eder. İsteğin IP adresi harici olduğundan, paket MAC katmanında yönlendiricinin dahili arayüzüne yönlendirilir.

Her ağ katmanında farklı hedefler olduğunu unutmayın.


0

Bağlantı noktası iletme genellikle kendisine bağlı bir yönlendirici veya aygıtta yapılır. Bir LAN üzerindeki bir cihaz aynı LAN'daki başka bir cihaza trafik gönderdiğinde, yönlendirici hiç dahil değildir. Trafik ona bile dokunmuyor. Port yönlendirme kurallarınızın LAN-LAN trafiği üzerinde bir etkisi olmaz.

Ethernet, her bilgisayarın aynı ortama fiziksel olarak bağlandığı akılda tutulan bir "veri yolu" topolojisi ile tasarlanmıştır. Modern anahtarlar, MAC adresini portun diğer ucunda öğrenerek ve trafiği buna göre kopyalayarak trafik akışını optimize ederken, "veri yolu" topolojisi hala devam etmektedir. Standart bir anahtara bağlı herhangi bir şey, bir yönlendirici gibi bir ara cihaza "geçmek" zorunda kalmadan (aynı alt ağ içinde olduğu varsayılarak) başka bir şeye "doğrudan" erişebilir.

Tüm bilgisayarları bağladığınız cihazda birden fazla "LAN" Ethernet portu ve ardından tek bir "WAN" portu varsa, kafanız karışabilir. Bu tür aygıtlar aslında hem yönlendiricidir hem de aynı kasada çalışırlar.

Bu nedenle, LAN'ınızın içinde, eğer HTTP sunucunuz 192.168.1.55 adresine sahipse, LAN'ınızın içinde ulaşmak için tarayıcınızın adres çubuğuna " http://192.168.1.55 " yazmanız gerekir . Router onu asla görmez. Yerel ağınızın dışına ulaşmak için harici IP'nizi, yani " http://256.99.88.77 : {buraya ilettiğiniz bağlantı noktası}" ya da her neyse yazın. Bu, yönlendiricinize çarpar, yönlendiricinin NAT işlevi üzerinde çalışır ve yönlendirici onu 192.168.1.55'e gönderir.


0

Oldukça basit, özel LAN içindeki bir bilgisayar giden bir bağlantı başlattığında, NAT ağ geçidi otomatik olarak bunun için bir bağlantı noktası eşlemesi oluşturur. Önceden elle girdiğiniz bağlantı noktası eşlemeleriyle aynılar: {genel bağlantı noktası, özel adres, özel bağlantı noktası} ve aynı şekilde kullanılırlar. Dinamik haritalamalardaki en büyük fark, NAT ağ geçidinin, beklenen port numarası zaten kullanımdayken, haritalamalar için keyfi olarak halka açık portlar ataması gerektiğidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.