2010-03-03, 12:04
  #1
Medlem
wootens avatar
Om jag skickar ett request, till vilken server som helst, skickas ju min macadress och mottagarens macadress i paketet. Kan mottagaren se min macadress och mottagaren är i ett annat nät än mitt? Om inte, hur vet en router vilken dator inom sitt nätverk ett visst paket ska gå till?
Citera
2010-03-03, 13:19
  #2
Medlem
KillerMonkeys avatar
Du kan läsa lite om t.ex. ARP här: http://sv.wikipedia.org/wiki/Address_Resolution_Protocol
Citera
2010-03-03, 13:29
  #3
Medlem
xitunos avatar
Om vi pratar IP så skickas MAC-adressen bara i det lokala nätet; så fort paketet passerar en router så försvinner din MAC eftersom den inte länge är av någon nytta.

Routern (och alla enheter på nätverket) använder ARP (Adress Resolution Protocol) för att få reda på vilken dator som har ett visst ip-nummer. När routern (eller annan dator) ska skicka ett paket till en viss ip-adresss, kollar den först sin interna ARP-tabell. Finns inte mottagaren där frågar den på det lokala nätverket via ARP "Vem har ip aaa.bbb.ccc.ddd?" och den som har ip-adressen svarar med sin MAC-adress.

Om du kör windows kan du prova "arp -a" på cmd-prompten för att se vilka enheter din dator känner till.
Citera
2010-03-03, 13:31
  #4
Medlem
Cement112s avatar
Lite fel där, när du skickar en request, så kommer inte mac-adresserna att vara samma, de ändras vid varje router-hopp. För att paketet skall veta vart det skall så används ju ip adresser. Destination ip ändras aldrig (bortsett från nat).

Routern kollar subnätmasken ifall det är lokalt eller inte, om det är lokalt så skickas det ut en sk. arp request, som frågar alla datorer på nätverket "Vem har ip adress x.x.x.x". Då svarar datorn med rätt ip adress tillbaks med sin mac, och routern vet nu vart paketet skall ta vägen.

Sen som "xituno" skriver, så använder även datorer arp. Finns en viss dator med i arp-tabellen så skickas det direkt (dock gäller detta endast lokalt).
__________________
Senast redigerad av Cement112 2010-03-03 kl. 13:36.
Citera
2010-03-03, 13:42
  #5
Medlem
wootens avatar
Ponera att jag sitter bakom min ISPs ip nummer som är 130.65.0.12 och har en router hemma som har 3 datorer bakom sig: 192.168.0.2, 192.168.0.3, 192.168.0.4. Låt säga att 192.168.0.3 vill gå in på aftonbladet och requestar således sidan av aftonbladet. Så 192.168.0.3 skickar ett paket med bl.a. sin macadress och ip nummer till aftonbladet till routern som skickar det vidare till ISP-routern och paketet tar sig till aftonbladet. Väl på aftonbladet syns inte längre mac adressen, så aftonbladet skickar tillbaka sidan i packet samma väg tillbaka. Men när det når routern i lägenheten, finns ju inte avsändarmacadressen kvar i paketet (hur skulle den kunna göra det? aftonbladet fick ju aldrig macadressen). Så hur vet routern vilken av de tre datorerna bakom sig paketet var tänkt till?
Citera
2010-03-03, 13:51
  #6
Medlem
Citat:
Ursprungligen postat av wooten
Ponera att jag sitter bakom min ISPs ip nummer som är 130.65.0.12 och har en router hemma som har 3 datorer bakom sig: 192.168.0.2, 192.168.0.3, 192.168.0.4. Låt säga att 192.168.0.3 vill gå in på aftonbladet och requestar således sidan av aftonbladet. Så 192.168.0.3 skickar ett paket med bl.a. sin macadress och ip nummer till aftonbladet till routern som skickar det vidare till ISP-routern och paketet tar sig till aftonbladet. Väl på aftonbladet syns inte längre mac adressen, så aftonbladet skickar tillbaka sidan i packet samma väg tillbaka. Men när det når routern i lägenheten, finns ju inte avsändarmacadressen kvar i paketet (hur skulle den kunna göra det? aftonbladet fick ju aldrig macadressen). Så hur vet routern vilken av de tre datorerna bakom sig paketet var tänkt till?

Den håller koll på olika anslutningar genom portnummer i tcp och udp.
Säg att du skickar ett paket till aftonbladets webbserver, den kommer ha en random port >1024 som source och port 80 som destination. När webbservern svarar har den random porten som destination och 80 som source. Då ser routern vart paketet ska.

Det finns än medium (ethernet etc) som inte använder mac-adresser alls.
Citera
2010-03-03, 13:58
  #7
Medlem
Cement112s avatar
Paketet har tagit sig tillbaka till din router i din lägenhet från aftonbladets server med destinations adressen 130.65.0.12 (mac adressen har ändrats flera ggr under tiden). Därifrån så kör din router ett protokoll kallat Network address translation (NAT). Det innebär att man kan köra flera datorer på enbart en publik ip adress. På vägen till aftonbladets server tar din router paketet från 192.168.0.3 och översätter det till 130.65.0.12 (vilket blir source ip adressen) samt lägger på ett destination port nummer som blir 80 (http), och ett random source-portnummer. Det är detta portnumret som gör så att routern vet till vilken intern dator svaret skall komma till. Routern vet förhoppningsvis (med hjälp av arp-tabellen) att datorn med ip numret 192.168.0.3 har xx-xx-xx-xx-xx-xx som mac, så den skickar det vidare dit. Annars kör den en arp-request för att ta reda på mac adressen.
Citera
2010-03-03, 14:22
  #8
Medlem
wootens avatar
Ok! Tack! blev klarare! Men skickar alla 3 datorer bakom routern http-trafik genom port 80? Isf har vi ju samma problem igen? Hur vet routern vilken av de tre 80-portarna paketet ska till? Eller varierar routern portnummrena?
Citera
2010-03-03, 14:26
  #9
Medlem
xitunos avatar
Citat:
Ursprungligen postat av wooten
Ponera att jag sitter bakom min ISPs ip nummer som är 130.65.0.12 och har en router hemma som har 3 datorer bakom sig: 192.168.0.2, 192.168.0.3, 192.168.0.4. Låt säga att 192.168.0.3 vill gå in på aftonbladet och requestar således sidan av aftonbladet. Så 192.168.0.3 skickar ett paket med bl.a. sin macadress och ip nummer till aftonbladet till routern som skickar det vidare till ISP-routern och paketet tar sig till aftonbladet. Väl på aftonbladet syns inte längre mac adressen, så aftonbladet skickar tillbaka sidan i packet samma väg tillbaka. Men när det når routern i lägenheten, finns ju inte avsändarmacadressen kvar i paketet (hur skulle den kunna göra det? aftonbladet fick ju aldrig macadressen). Så hur vet routern vilken av de tre datorerna bakom sig paketet var tänkt till?


Eftersom du lokalt använder ip-adresser från en privat serie (192.168.x.x) använder du även NAT (Network Adress Translation) vilket gör det hela lite mer komplicerat.

Men för att ta ditt exempel:

Datorn på 192.168.0.2 skickar en request till aftonbladet.

1. Först måste datorn veta ip-adressen och använder därför av DNS för att översätta "aftonbladet.se" till "192.71.238.76".

2. Då adressen inte är lokal, tittar datorn i sin router-tabell vart adressen ska routas, vanligtvis via default gateway som troligen är 192.168.0.1 i ditt fall. Om datorn inte har mac-adressen i sin arp-tabell frågar den på nätet vem som har den ip-adressen.

3.Datorn skapar ett ip-paket med sitt eget ip-nummer och ett slumpässigt port-nummer (1025-65535) [exempel 6321] som avsändare, och med aftonbladets ip-adress och port 80 (om det är en http-request) som mottagare. När IP-paketet skickas över ethernet läggs en ethernet-header till där datorns MAC-adress står som avsändare och default gateway som mottagare.

4. Default gateway tar emot paketet, och ethernet-headern plockas bort.
Eftersom du kör med privata ip-adressser måste paketet nu gå igenom NAT där avsändarens ip-adress (192.168.0.2) och port-nummer skrivs över av routerns publika ip-adress och ett nytt slummässigt portnummer [exempel: 5987] (detta lagras i routern och används för att kunna skicka tillbaka paketen till 192.168.0.2)

5. Routern skickar ut det till din ISP som sen skickar det via olika nät tills det kommer fram till aftonbladet. Av din MAC-adress syns det inte ett spår.

6. Aftonbladets server med ip-nummer 192.71.238.76 får ett inkommande paket på port 80. Aftonbladet svarar och sätter avsändaren som 192.71.238.76 port 80, och sätter mottagaren som ditt publika ip och port 5987.

7. Efter att ha passerat alla nät och routrar kommer paketet fram till din router som tar emot paketet. Där ser den NAT:en att det är ett paket från 192.71.238.76 port 80 och att det ska till port 5987. NAT:en har ju skickat ett paket i omvända riktningen och skriver därför om paketet så att mottagaren blir 192.168.0.2 på port 6321.

8. Routern skickar ut ip-paketet på ditt lokala nätverk. För att skicka ut det på ditt ethernet läggs det till en ethernet-header med routerns MAC-adress som avsändare och din dator som mottagare.

Hoppas du hängde med.
Citera
2010-03-03, 14:30
  #10
Medlem
Cement112s avatar
http requests går alltid på port 80.

Här har du en bra lista på vilka portar som används:
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Men det är "source" port number, som är ett random genererat nummer, som den går efter.

Som sagt beroende på vilken tjänst du kör, såsom mail, dns, ftp etc. så kommer "destination" port nummer alltid vara densamma, tex 80 för http och 53 för dns.
Citera
2010-03-03, 14:35
  #11
Medlem
wootens avatar
Citat:
Ursprungligen postat av xituno
Eftersom du lokalt använder ip-adresser från en privat serie (192.168.x.x) använder du även NAT (Network Adress Translation) vilket gör det hela lite mer komplicerat.

...
Absolut! Tack alla! Missade att det var port 80 som var mottagaren (från dator till aftonbladet).
Och just ja! Går alla packet via samma port? eller slumpas det, paket för paket? Och vad händer om det osannolika att 2 olika datorer slumpar samma port?
Hur mycket data kan man lagra på en magnetremsa på t.ex ett kontokort btw?
__________________
Senast redigerad av wooten 2010-03-03 kl. 14:38.
Citera
2010-03-03, 14:49
  #12
Medlem
xitunos avatar
Citat:
Ursprungligen postat av wooten
Går alla packet via samma port? eller slumpas det, paket för paket? Och vad händer om det osannolika att 2 olika datorer slumpar samma port?

Det finns ett antal väldefinierade portar som man ansluter till, tillexempel port 80 för http-requests och port 25 för inkommande epost.

Alla paket inom en viss session går via samma portar. Hur lång en session är beror på vilket protokoll du använder. Om vi tar http som exempel är egentligen varje request en session, det vill säga att hämta html-koden är en, och varje enskild bild blir ytterligare sessioner. Men med HTTP/1.1 går det att göra multipla requests per session om både servern och klienten stödjer det.

Citat:
Ursprungligen postat av wooten
Hur mycket data kan man lagra på en magnetremsa på t.ex ett kontokort btw?

Det beror helt och håller på vilken standard du använder dig utav. Vanliga kontokort har tre spår med lite olika packningstäthet: http://en.wikipedia.org/wiki/Magnetic_stripe_card


Edit: Glömde svara på "Och vad händer om det osannolika att 2 olika datorer slumpar samma port?"
Det går alldeles utmärkt, de har ju olika ip-nummer så det krockar ju inte med varandra.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in