Jo det är nämligen så att jag satte upp en FTP-server i helgen, och det krånglade en hel del. Det gick inte att connecta till den, trots att jag hade forwardat port 21 till min dator genom routern/brandväggen. Lösningen var att använda passive mode istället för active. Utifrån ren nyfikenhet läste jag en del artiklar om detta, passive vs active alltså, och jag försår ärligt talat inte varför active inte skulle fungera.
Om jag förstått det rätt så connectar klienten till ftp-servern med ett portnummer som argument, som anger vilken port servern ska connecta tillbaka till.
1. Klient från nån port -> Server port 21
Sen skickar servern tillbaka ett acknowledgement till klienten på samma port som servern kontaktades på, och kontaktar sen klienten igen på den port som klienten skickade med.
2. Server -> klient (ACK) nån port
3. Server -> klient port som skickades med
Sedan kontaktar klienten tillbaka på nån port igen. Och det är där som det knasar till, om jag förstått det rätt, iom att den porten (eller portarna) kanske inte är öppna.
Så vad man gör är att använda Passive mode istället, där det istället är servern som skickar portar som argument till klienten, som säger vart den kan connecta (dessa portar måste vara öppna på brandväggen).
Nu är frågan:
Varför funkar det inte i active mode (med att klient connectar till en port), när de program jag använder verkar fungera utan att jag öppnat portar för dem? (Dessa program får ju data skickad till sig från server) T.ex. så spelar jag Unreal Tournament. Jag har inte öppnat några portar för det spelet. Trots detta så tar den applikationen emot data som skickas. Varför fungerar det för spelet, men inte för servern?