<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>InnerVision TechBlog &#187; internet</title>
	<atom:link href="http://techblog.innervision.pl/tag/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://techblog.innervision.pl</link>
	<description>Technologie informacyjne po naszemu</description>
	<lastBuildDate>Tue, 19 Apr 2011 14:03:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>revProxy, czyli jak zoptymalizować serwis WWW</title>
		<link>http://techblog.innervision.pl/2011/04/19/revproxy-czyli-jak-zoptymalizowac-serwis-www/</link>
		<comments>http://techblog.innervision.pl/2011/04/19/revproxy-czyli-jak-zoptymalizowac-serwis-www/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 14:03:25 +0000</pubDate>
		<dc:creator>Piotr Rybicki</dc:creator>
				<category><![CDATA[Technikalia]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[optymalizacja]]></category>
		<category><![CDATA[porady]]></category>
		<category><![CDATA[revProxy]]></category>
		<category><![CDATA[tuning]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[wydajność]]></category>

		<guid isPermaLink="false">http://techblog.innervision.pl/?p=179</guid>
		<description><![CDATA[Profesjonalny serwis WWW, aby ładował się błyskawicznie, używa różnych mechanizmów do zapamiętania całej strony lub jej elementów. Niektórzy wykorzystują do tego tzw. serwer STATIC, czyli osobny serwer WWW zoptymalizowany do obsługi dużej ilości statycznych plików. To podejście jest słuszne, natomiast bardziej elastycznym rozwiązaniem jest zastosowanie serwera Reverse Proxy u dostawcy usług hostingowych. Czym jest revProxy? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://techblog.innervision.pl/wp-content/uploads/2011/04/revproxy1.jpg"><img class="alignleft size-thumbnail wp-image-246" title="revproxy" src="http://techblog.innervision.pl/wp-content/uploads/2011/04/revproxy1-150x150.jpg" alt="" width="150" height="150" /></a>Profesjonalny serwis WWW, aby ładował się błyskawicznie, używa różnych mechanizmów do zapamiętania całej strony lub jej elementów. Niektórzy wykorzystują do tego tzw. serwer STATIC, czyli osobny serwer WWW zoptymalizowany do obsługi dużej ilości statycznych plików. To podejście jest słuszne, natomiast bardziej elastycznym rozwiązaniem jest zastosowanie serwera Reverse Proxy u dostawcy usług hostingowych.</p>
<p><strong>Czym jest revProxy?</strong></p>
<p>Serwer revProxy znajduje się pomiędzy jednym lub kilkoma serwerami WWW a klientem przeglądającym stronę. Żądania wyświetlenia strony trafiają najpierw do revProxy, który (o ile już nie posiada ważnej kopii) pobiera element z serwera WWW (jak np. strona HTML, obrazek czy CSS) i zapisuje go w swojej pamięci.  Jeśli pojawia się żądanie o ten sam element, do klienta zostaje wysłana kopia zamiast oryginalnego elementu z serwera WWW. Główną zaletą takiego scenariusza jest zmniejszenie obciążenia na serwerach WWW, a tym samym szybsze ładowanie stron.</p>
<p><strong>Czy revProxy jest rozwiązaniem dla mnie?</strong></p>
<p>Opisywana technologia jest niestety mało popularna, a szkoda.  Poza koniecznością zaznajomienia się z mechanizmami sterującymi działaniem revProxy, występuje obawa, że straci się informacje na temat statystyk serwisu. W praktyce jednak, sterowanie revProxy jest proste, a statystyki można generować na podstawie np. kodu JavaScript zamiast logu serwera WWW.</p>
<p>Istnieje również niebezpieczeństwo, że w przypadku awarii serwera revProxy, strona przestanie się wyświetlać. Przy zastosowaniu odpowiednich rozwiązań load-balancer, infrastruktura może być odporna na taką awarię i w przypadku problemów z funkcjonowaniem revProxy,  cały ruch automatycznie zostanie przekierowany bezpośrednio na serwery WWW, lub na inny serwer revProxy.</p>
<p>Ekonomiczna zaleta tej technologii jest dość oczywista. Zmniejszenie obciążenia serwerów WWW, oznacza mniejszą ilość serwerów WWW, co prowadzi do mniejszych kosztów utrzymania.</p>
<p><strong>Jak działa procedura korzystania z cache w revProxy?</strong></p>
<p>W dużym uproszczeniu, wymieniamy poniżej kilka głównych zasad, którymi należy się kierować:</p>
<ul>
<li>Jeśli nagłówki odpowiedzi HTTP zawierają instrukcje aby nie cache-ować obiektu, nie będzie on cache-owany.</li>
<li>Jeśli obiekt jest autoryzowany, bądź bezpieczny (HTTPS), nie będzie cache-owany.</li>
<li>Obiektu w cache jest uznawany za świeży, jeśli posiada informacje o okresie świeżości i ten okres nie minął.</li>
<li>Jeśli obiekt nie jest uznany za świeży,  revProxy odwoła się do serwera WWW i pobierze nową wersję obiektu, lub oznaczy obiekt jako niezmieniony i nadal świeży.</li>
</ul>
<p>W przypadku, gdy obiekt nie zawiera informacji o walidacji (nagłówek ETag lub Last-Modified) oraz nie posiada dokładnego określenia co do swojego okresu ważności, w większości przypadków taki obiekt zostanie uznany za nie cache-owalny. Określenie świeżości obiektu oraz informacji o jego walidacji stanowią podstawę przy wdrażaniu revProxy do serwisu WWW.</p>
<p><strong>Jak sterować revProxy z poziomu serwisu WWW?</strong></p>
<ul>
<li><strong>Meta tag w HTML</strong></li>
</ul>
<p>Informacje zawarte w treści obiektu HTTP z pewnością nie wpłyną na działanie revProxy, ponieważ tylko nagłówki są brane pod uwagę. Meta tagi mogą być przydatne do kontroli cache w przeglądarce, ale to też nie we wszystkich przeglądarkach. <em>Nie należy stosować tej metody do sterowania działaniem revProxy</em></p>
<ul>
<li><strong>Nagłówek odpowiedzi &#8216;Pragma&#8217; dla HTTP 1.0<br />
</strong></li>
</ul>
<p>W sieci można znaleźć porady, aby stosować nagłówek HTTP &#8216;Pragma: no-cache&#8217;, aby zabezpieczyć obiekt przed cache-owaniem.  Ta metoda kontroli nad cache była stosowana za czasów protokołu HTTP 1.0 . Można oczywiście używać tego nagłówka jako dodatkowego, ale dobrze administrowany serwer revProxy będzie używał protokołu HTTP 1.1 i ten nagłówek będzie zbędny, oraz może prowadzić do problemów w przypadku rozbieżności w ustawieniach pozostałych nagłówków. <em>Nie zalecamy stosowania nagłówków Pragma.</em></p>
<ul>
<li><strong>Nagłówek odpowiedzi &#8216;Expires&#8217; dla HTTP 1.0<br />
</strong></li>
</ul>
<p>Nagłówek ten wysłany z serwera WWW jest jednym ze sposobów na sterowaniem walidacją obiektów w revProxy. Przykład nagłówka:</p>
<blockquote><p>Expires: Fri, 30 Oct 2011 14:19:41 GMT</p></blockquote>
<p>Jak widać, nagłówek przyjmuje wartość daty (koniecznie w formacie GMT), zatem idealnie nadaje się do ustalenia ważności obiektu jako konkretny moment w czasie. Ponieważ nagłówek pochodzi z czasów HTTP 1.0, <em>nie zalecamy stosowania tego nagłówka.</em></p>
<ul>
<li><strong>Nagłówek odpowiedzi &#8216;Cache-Control&#8217; dla HTTP 1.1<br />
</strong></li>
</ul>
<p>Od momentu pojawienia się standardu HTTP 1.1, pojawiła się o wiele bardziej elastyczna metoda na kontrolę revProxy, w postaci tego nagłówka. Przykład:</p>
<blockquote><p>Cache-Control: max-age=3600, must-revalidate</p></blockquote>
<p>Poniżej kilka przydatnych opcji wartości nagłówka:</p>
<ul>
<li style="text-align: left;"><strong>max-age=</strong>(sekundy). Określa maksymalną ilość czasu, dla którego dany obiekt będzie świeży. Funkcjonalność podobna do nagłówka &#8216;Expires&#8217;, z tą jednak różnicą, że tu podajemy ilość sekund a nie moment w czasie.</li>
<li style="text-align: left;"><strong>s-max-age=</strong>(sekundy). Opcja podobna do max-age, jednak odnosi się wyłącznie do wspólnych (shared) cache, jak np revProxy, ale już nie do prywatnych (private) jak np. cache przeglądarki konkretnego użytkownika.</li>
<li style="text-align: left;"><strong>public</strong>. Użycie tej opcji informuje revProxy o tym, że może cache-ować dany obiekt, nawet jeśli klient został zautoryzowany. Jeśli np. mamy do czynienia ze stroną, do której należy się zalogować, revProxy standardowo nie zachowa tej strony. Przy użyciu tej opcji, revProxy zachowa taką stronę w cache.</li>
<li style="text-align: left;"><strong>private</strong>. Ta opcja powoduje, iż obiekt jest przeznaczony wyłącznie dla danego użytkownika i będzie mógł zostać zapisany w cache przeglądarki danego użytkownika, natomiast nie może on zostać zapamiętany w revProxy i dostępny dla wszystkich.</li>
<li style="text-align: left;"><strong>no-cache</strong>. Użycie tej opcji powoduje wymuszenie w revProxy sprawdzenia obiektu na serwerze revProxy, za każdym razem. Jeśli obiekt przechodzi walidację (pobrany z serwera WWW jest taki sam jak w cache), to klient otrzymuje kopię bez pobierania z revProxy, a w przeciwnym razie obiekt zostanie w całości pobrany z serwera WWW.</li>
<li style="text-align: left;"><strong>no-store</strong>. Ta opcja wyłącza całkowicie jakiekolwiek przechowywanie obiektu w cache i powoduje za każdym razem pobranie obiektu od serwera WWW przez revProxy do klienta.</li>
<li style="text-align: left;"><strong>must-revalidate</strong>. Dzięki tej opcji, można wymusić, aby obiekt który stracił ważność, bezwzględnie został odświeżony z serwera WWW. Serwer revProxy może w szczególnych przypadkach przesłać obiekt, który stracił ważność (np w przypadku problemu ze skontaktowaniem się z serwerem WWW).</li>
</ul>
<p>Zbiór wszystkich nagłówków i opcji jest określony <a title="HTTP 1.1 Specification" href="http://www.ietf.org/rfc/rfc2616.txt" target="_blank">w dokumencie RFC</a> na temat specyfikacji protokołu HTTP 1.1</p>
<ul>
<li><strong>Nagłówek odpowiedzi &#8216;Vary&#8217; dla HTTP 1.1<br />
</strong></li>
</ul>
<p>Nagłówek ten jest wymagany do poprawnego funkcjonowania mechanizmów revProxy. Określa on inne nagłówki, których wartości stanowią kryteria dla wyboru wersji obiektu. Minimalną wartością dla nagłówka &#8216;Vary&#8217; jest : Accept-Encoding, aby rozróżnić wersję obiektu, który jest np. skompresowany i nie skompresowany. Nie należy podawać nadmiernej ilości nagłówków, ponieważ prowadzi to do przeciążenia revProxy identycznymi obiektami w wielu instancjach (np. ten sam obrazek, ale przechowywany w cache dla każdej wartości nagłówka User-Agent).</p>
<ul>
<li><strong>Walidacja obiektów</strong></li>
</ul>
<p>Proces, podczas którego revProxy sprawdza, czy obiekt w jego cache jest taki sam jak na serwerze WWW, nazywa się właśnie walidacją. Jeśli walidacja się powiedzie, revProxy nie musi pobierać całego obiektu od serwera WWW. Zapewnienie możliwości walidacji jest niezmiernie ważnym elementem podczas dostosowywania serwisu WWW do możliwości skorzystania z revProxy. Popularnym walidatorem jest nagłówek odpowiedzi HTTP &#8216;Last-Modified&#8217;.  Podobnie jak &#8216;Expires&#8217;, określa moment w czasie, gdy obiekt został zmodyfikowany. Jeśli data &#8216;Last-Modified&#8217; jest późniejsza niż data w której obiekt został pobrany z serwera WWW, obiekt nie przechodzi walidacji i jest pobierany w całości ze źródłowego serwera WWW.</p>
<p>Protokół HTTP 1.1 zdefiniował nowy nagłówek odpowiedzi &#8211; &#8216;ETag&#8217;. Wartość tego nagłówka jest identyfikatorem jednoznacznie określającym wersję obiektu (zawartość obiektu, czas modyfikacji, etc).</p>
<p><strong>Jak sprawdzić nagłówki z mojej strony WWW?</strong></p>
<p>Doskonałym serwisem, który umożliwia sprawdzenie nagłówki oraz ich interpretację jest <a title="REDbot" href="http://redbot.org/" target="_blank">REDbot.org</a>.</p>
<p>Powodzenia przy dostosowywaniu swojej strony WWW <img src='http://techblog.innervision.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.innervision.pl/2011/04/19/revproxy-czyli-jak-zoptymalizowac-serwis-www/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet &#8211; jak to działa</title>
		<link>http://techblog.innervision.pl/2010/02/13/internet-jak-to-dziala/</link>
		<comments>http://techblog.innervision.pl/2010/02/13/internet-jak-to-dziala/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 23:00:29 +0000</pubDate>
		<dc:creator>Piotr Rybicki</dc:creator>
				<category><![CDATA[Technikalia]]></category>
		<category><![CDATA[domeny]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[ripe]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://techblog.innervision.pl/?p=113</guid>
		<description><![CDATA[Każdy na pewno zastanawiał się jak działa Internet. Z grubsza wiadomo że są: routery, adresy IP, nazwy domenowe, ale jak to jest że Internet działa na skalę światową? Poniższy wpis ma charakter opisowo-poglądowy, gdyż dokładne opisanie tego zjawiska to temat na co najmniej rozprawę doktorską, a nie oto nam chodzi. Geneza: W roku 1967,  Amerykańska [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://techblog.innervision.pl/wp-content/uploads/2010/02/telia01_eu.gif"><img class="alignleft size-thumbnail wp-image-118" title="Internet" src="http://techblog.innervision.pl/wp-content/uploads/2010/02/telia01_eu-150x150.gif" alt="" width="150" height="150" /></a>Każdy na pewno zastanawiał się jak działa Internet. Z grubsza wiadomo że są: routery, adresy IP, nazwy domenowe, ale jak to jest że Internet działa na skalę światową? Poniższy wpis ma charakter opisowo-poglądowy, gdyż dokładne opisanie tego zjawiska to temat na co najmniej rozprawę doktorską, a nie oto nam chodzi.</p>
<p><strong>Geneza:</strong></p>
<p>W roku 1967,  Amerykańska agencja militarna <a href="http://pl.wikipedia.org/wiki/Defense_Advanced_Research_Projects_Agency" target="_blank">DARPA</a> tworzy/finansuje powstanie sieci rozległej nazwanej <a href="http://pl.wikipedia.org/wiki/Advanced_Research_Projects_Agency_Network" target="_blank">ARPANET</a>. Środek okresu zimnej wojny i wielkiej rywalizacji technologicznej USA &#8211; ZSRR. Początkowo sieć ma charakter rządowo-militarno-naukowy, po czym w roku 1980 zostaje odseparowana część sieci, którą obecnie nazywamy Internetem. Warto zaznaczyć, iż nawet w czasach obecnych wiele kluczowych dla funkcjonowania sieci elementów działa pod kontrolą DARPA.</p>
<p><strong>Rozwój:</strong></p>
<p>Za rozwój technologii internetowej odpowiada powołana przez DARPA grupa naukowo badawcza <a href="http://en.wikipedia.org/wiki/Internet_Engineering_Task_Force" target="_blank">IETF</a>, która w obecnych czasach ma charakter nieformalny, otwarty dla każdego i ogólnoświatowy. Celem grupy jest opracowywanie standardów i wytycznych w postaci dokumentów <a href="http://pl.wikipedia.org/wiki/RFC" target="_blank">RFC</a>. Oficjalnie zatwierdzone RFC staje się wyznacznikiem dla producentów sprzętu i oprogramowania wykorzystujących sieć Internet.</p>
<p><strong>Adresy IP:</strong></p>
<p>Za adresy IP na samej górze odpowiada organizacja non-profit <a href="http://pl.wikipedia.org/wiki/ICANN" target="_blank">ICANN</a> (z siedzibą w Kalifornii), a właściwie jej autonomiczna część IANA, której  rząd Stanów Zjednoczonych przekazał czasowo prawo nadzoru nad  przydziałem adresów IP.  Świat zostaje podzielony na 5 regionów i odpowiadającym im organizacjom drugiego poziomu: <a href="http://en.wikipedia.org/wiki/AFRINIC" target="_blank">AfriNIC</a> (Afryka), <a href="http://en.wikipedia.org/wiki/APNIC" target="_blank">APNIC</a> (Azja-Pacyfik), <a href="http://en.wikipedia.org/wiki/American_Registry_for_Internet_Numbers" target="_blank">ARIN</a> (Ameryka  Północna), <a href="http://en.wikipedia.org/wiki/LACNIC" target="_blank">LACNIC</a> (Ameryka Południowa, Środkowa i Kariby), oraz <a href="http://pl.wikipedia.org/wiki/RIPE_NCC" target="_blank">RIPE NCC</a> (Europa, Bliski Wschód i Azja Środkowa) z siedzibą w Amsterdamie. Organizacje te bezpośrednio lub co jest częściej spotykane za  pośrednictwem dostawców internetu posiadających status <a href="http://en.wikipedia.org/wiki/Local_Internet_registry" target="_blank">LIR</a> (np. TP SA,  ATM, GTS), przydzielają adresy IP odbiorcom końcowym.</p>
<p>Odpowiedź na pytanie nie-do-końca pozbawione sensu &#8222;kto jest     właścicielem internetu&#8221;, powinna być teraz łatwiejsza <img src='http://techblog.innervision.pl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Trasowanie:</strong></p>
<p>Aby możliwa była komunikacja w Internecie, samo istnienie unikalnych adresów IP nie wystarczy &#8211; potrzebny jest jakiś mechanizm przekazujący informacje jak dotrzeć od jednego adresu IP do drugiego. Mechanizmem tym jest protokół routingu (w internecie &#8211; <a href="http://pl.wikipedia.org/wiki/BGP" target="_blank">BGP</a>), przekazujący informacje pomiędzy urządzeniami zwanymi routerami (w wielkim uproszczeniu np. aby dostać się z adresu A do B, należy przejść przez routery A-&gt;X1-&gt;X2-&gt;X3-&gt;B).  Dostawcy internetu tworzą lub podłączają się do różnych punktów wymiany ruchu sobą, zwanych <a href="http://pl.wikipedia.org/wiki/Internet_Exchange_Point" target="_blank">IXP</a> (pomieszczenie techniczne z dużą ilością kabli i routerów).</p>
<p>Warto mieć na uwadze fakt, iż połączenie pomiędzy dwoma punktami (w uproszczeniu adresami IP) w tym samym mieście, może odbywać się przez IXP  w bardzo odległej lokacji geograficznej. Pomimo iż nie ma to uzasadnienia technicznego, to takie połączenie może być tańsze dla dostawców internetowych.</p>
<p><strong>Nazwy domenowe:</strong></p>
<p>Dla przeciętnego człowieka, używanie adresów IP w praktyce jest nieakceptowalne: wyobraźmy sobie np zamiast wpisywania http://www.allegro.pl -  http://193.23.48.134/ <img src='http://techblog.innervision.pl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .  Dlatego właśnie wymyślono domeny i system zamiany adresów domenowych na adresy IP (<a href="http://pl.wikipedia.org/wiki/DNS" target="_blank">DNS</a>).  Nazwy domenowe zostały sklasyfikowane na różne poziomy: najwyższy  (np .pl &#8211; Polska) i niższe (np edu.pl &#8211; edukacyjna,  gov.pl &#8211; rządowa, waw.pl &#8211; regionalna). Na samej górze serwerów nazw są tzw. <a href="http://en.wikipedia.org/wiki/Root_nameserver" target="_blank">root nameservers</a> (w większości znajdują się w Stanach Zjednoczonych), które przechowują między innymi (na obecną chwilę) 248 dwuliterowych <a href="http://pl.wikipedia.org/wiki/Krajowa_domena_najwy%C5%BCszego_poziomu" target="_blank">domen najwyższego poziomu</a>.</p>
<p>Jako że nie ma przymusu stosowania zaproponowanej klasyfikacji, można sobie zarejestrować domenę np moje<a href="http://pl.wikipedia.org/wiki/.tv" target="_blank">.tv</a> co tak naprawdę technicznie jest domeną regionalną wysp Tuvalu <img src='http://techblog.innervision.pl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
<p>W Polsce głównym rejestratorem nazw domenowych jest <a href="http://pl.wikipedia.org/wiki/NASK" target="_blank">NASK</a>, a inne podmioty działają na mocy porozumienia z NASK.</p>
<p><strong>Filtrowanie/cenzura internetu:</strong></p>
<p>Firmy często decydują się na ograniczanie dostępu do internetu ze względu na swoją politykę bezpieczeństwa. Oprócz blokowania, często zbiera się informacje kto i kiedy przegląda jakie strony itp. O ile przedsiębiorstwo samo decyduje o swojej polityce, to 100% cenzura na skalę krajową jest <span style="text-decoration: underline;">TECHNICZNIE NIEMOŻLIWA!</span> Istnieje szereg mechanizmów szyfrujących transmisję lub tunelujących połączenia, które skutecznie obejdą wszelkie zabezpieczenia. Z technicznego punktu widzenia, aby skutecznie kontrolować przepływ informacji w Internecie, należałoby odciąć wszystkie połączenia ze światem w Polsce (wliczając np. połączenia satelitarne), co wydaje się również NIEMOŻLIWE!</p>
<p>Możliwe jednak jest wprowadzenie przepisów prawnych np. ograniczających siłę szyfrowania (jak np w <a href="http://en.wikipedia.org/wiki/Export_of_cryptography_in_the_United_States" target="_blank">USA</a>) i wtedy oczywiście obejście zabezpieczeń będzie technicznie nadal możliwe, jednak obwarowane sankcjami prawnymi.</p>
]]></content:encoded>
			<wfw:commentRss>http://techblog.innervision.pl/2010/02/13/internet-jak-to-dziala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

