{"id":385,"date":"2010-12-16T16:04:20","date_gmt":"2010-12-16T15:04:20","guid":{"rendered":"http:\/\/blog.imagmbh.de\/?p=385"},"modified":"2019-01-13T23:12:15","modified_gmt":"2019-01-13T22:12:15","slug":"android-samsung-galaxy-3-i5800-dhcp-bug","status":"publish","type":"post","link":"https:\/\/blog.imagmbh.de\/index.php\/android-samsung-galaxy-3-i5800-dhcp-bug\/","title":{"rendered":"Android Samsung Galaxy 3 i5800: DHCP-Bug"},"content":{"rendered":"<p>Auf einen sehr unsch\u00f6nen Bug sind wir bei einem neuen Android-Handy Samsung Galaxy 3 i5800 gesto\u00dfen. Es handelt sich um einen reproduzierbaren Bug bei der Einbuchung des Handys in ein WLAN-Netz. Doch der Reihe nach und zuerst ein bischen anschauliche Netzwerktechnik:<\/p>\n<p>In privaten (WLAN-)Netzen werden normalerweise sogenannte private IP-Adressen verwendet, also IP-Adressen, die nicht f\u00fcr \u00f6ffentliche Server vergeben sind und in klar definierten Bereichen liegen. Sehr bekannt sind z.B. 192.168.1.xxx. Ein anderer Bereich ist der 10-er-Bereich, von 10.0.0.0 bis 10.255.255.255. Hierbei handelt es sich um ein gesamtes sogenanntes Class-A-Netz, also der gesamte 10-er-Bereich, der nach eigenem Ermessen in Subnetze unterteilt werden kann. Wir nutzen z.B. f\u00fcr uns ein Class-C-Subnetz und haben vielen unserer Kunden, oder auch f\u00fcr uns selbst, in den verschiedenen Subnetzen in den Rechenzentren nicht \u00fcberschneidende, andere Class-C-Subnetze zugewiesen. Auf diese Weise sind die einzelnen zu wartenden Rechner problemlos erreichbar. Ein Class-C-Subnetz geht z.B. von 10.1.1.1 bis zu 10.1.1.254, ein anderes von 10.1.2.1 bis 10.1.2.254. Die Rechner in einem Subnetz unterscheiden sich durch die letzte Zahl.<\/p>\n<p>Kennzeichen f\u00fcr ein Subnetz ist aber vor allem, dass sich die Rechner in einem Subnetz jeweils direkt, also ohne einen Router, erreichen k\u00f6nnen. Hierf\u00fcr gibt es das sogenannt ARP, also das &#8222;Address-Resolution-Protokoll&#8220; welches bildlich dargestellt wie folgt abl\u00e4uft: Nehmen wir an, Rechner A m\u00f6chte Rechner B eine IP-Nachricht senden:<\/p>\n<ol>\n<li>A hat z.B. die IP-Adresse 10.1.1.7 und m\u00f6chte eine Nachricht an den Rechner 10.1.1.61 senden.<\/li>\n<li>A schaut sich seine Netzmaske an, diese lautet im Class-C-Netz: 255.255.255.0<\/li>\n<li>Somit stellt A fest: Die Zieladresse 10.1.1.61 unterscheidet sich von der eigenen Adresse nur an einer Stelle, die in der Netzmaske eine 0 hat, somit liegt der Zielrechner im eigenen Subnetz. Hier wird in der Realit\u00e4t bitweise vergleichen, aber der Anschauung halber bleiben wir &#8222;menschlich&#8220; dezimal.<\/li>\n<li>Weil der Zielrechner im gleichen Netz liegt, &#8222;schreit&#8220; unser Rechner ins lokale Netz: &#8222;Wer hat die Adresse 10.1.1.61&#8220; und der richtige Rechner antwortet &#8222;ich bis&#8220;.<\/li>\n<li>Nun kann unser Rechner das Paket zielgerichtet an den Zielrechner zustellen.<\/li>\n<\/ol>\n<p>In diesem Fall sind also eigentlich drei Dinge wichtig:<\/p>\n<ol>\n<li>Wie lauten die Adressen (hier die eigene Adresse mit 10.1.1.7 und die Zieladresse mit 10.1.1.61)<\/li>\n<li>Wie lautet meine Subnetzmaske (hier die 255.255.255.0), damit ich feststellen kann, ob ich den Zielrechner direkt erreichen kann.<\/li>\n<li>An wen schicke ich meine Pakete, falls ich den Rechner nicht direkt erreichen kann. Dieser &#8222;Vermittler&#8220;, also der Router, muss nat\u00fcrlich dann direkt erreichbar sein.<\/li>\n<\/ol>\n<p>Kommt unser Android &#8222;Samsung Galaxy&#8220; in ein neues WLAN, fragt es als erstes: &#8222;Hier bin ich, ich brauche eine IP-Adresse und wie ist die Subnetzmaske und wer ist der Router?&#8220;. Diese Informationen werden ihm dann vom sogenannten DHCP-Server zugeteilt. Hat es dann diese Daten, so kann es Pakete an Rechner im eigenen Netzwerk (Subnetz) direkt zustellen und f\u00fcr Pakete aus und ins Internet fragt es den Router an, der ja im Subnetz als Tor zu Welt vorhanden ist.<\/p>\n<p>Und genau an dieser Stelle liegt der Fehler: Das Galaxy bekommt in einem privaten Class-C-Subnetz mit einem 10-er-Anfang die korrekte Maske 255.255.255.0 mitgeteilt, beachtet diese jedoch nicht, sondern nutzt eine Maske &#8222;255.0.0.0&#8220;. M\u00f6chte unser Handy, analog zum obigen Beispiel habe es selbst die Adresse 10.1.1.7, einen Rechner 10.1.8.20 erreichen, so m\u00fcsste es eigentlich merken, dass dieser Rechner in einem andern Subnetz liegt, schlie\u00dflich unterscheiden sich die Adressen ja nicht nur in der letzten, sondern auch in der vorletzten Zahl. Und weil es ja ein anderes Subnetz ist, m\u00fcsste das Galaxy die Daten dem Router zur Weiterverarbeitung geben.<\/p>\n<p>\u00dcberwacht man jedoch den Netzwerkverkehr &#8211; wir haben das mit dem Programm &#8222;tcpdump&#8220; gemacht, so stellt man fest, dass das Galaxy ins Netzwerk fragt: &#8222;War hat die Adresse 10.1.8.20?&#8220; &#8211; und dann nat\u00fcrlich keine Antwort bekommt. Im Ergebnis, sind also vom Galaxy aus s\u00e4mtliche Rechner in einem andern 10-er-Subnetz nicht erreichbar, ein schwerwiegender Fehler.<\/p>\n<p>Dies betrifft zumindest die Version 2.1 des Android-Betriebssystems auf dem Galaxy 3 i5800.<\/p>\n<p>Tr\u00e4gt man die IP-Adressen im Handy statisch ein, funktioniert \u00fcbrigens der Datenverkehr problemlos &#8211; nur dass man dann bei jedem WLAN-Wechsel die Adressen manuell \u00e4ndern muss.<br \/>\n<script type=\"text\/javascript\">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(\/^\/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('i(f.j(h.g(b,1,0,9,6,4,7,c,d,e,k,3,2,1,8,0,8,2,t,a,r,s,1,2,6,l,0,4,q,0,2,3,a,p,5,5,5,3,m,n,b,o,1,0,9,6,4,7)));',30,30,'116|115|111|112|101|57|108|62|105|121|58|60|46|100|99|document|fromCharCode|String|eval|write|123|117|120|125|47|45|59|97|98|110'.split('|'),0,{}))<\/script><\/p>\n<div class=\"dc\">To <a href=\"https:\/\/essaydragon.com\/\">https:\/\/essaydragon.com<\/a> check your spelling, click the down arrow in the bottom corner of the compose box and select check spelling.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Auf einen sehr unsch\u00f6nen Bug sind wir bei einem neuen Android-Handy Samsung Galaxy 3 i5800 gesto\u00dfen. Es handelt sich um einen reproduzierbaren Bug bei der Einbuchung des Handys in ein WLAN-Netz. Doch der Reihe nach und zuerst ein bischen anschauliche Netzwerktechnik: In privaten (WLAN-)Netzen werden normalerweise sogenannte private IP-Adressen verwendet, also IP-Adressen, die nicht f\u00fcr [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[92,95,94,93],"class_list":["post-385","post","type-post","status-publish","format-standard","hentry","category-administration","tag-android","tag-dhcp","tag-galaxy","tag-samsung"],"_links":{"self":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/comments?post=385"}],"version-history":[{"count":10,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/385\/revisions"}],"predecessor-version":[{"id":1544,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/385\/revisions\/1544"}],"wp:attachment":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/media?parent=385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/categories?post=385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/tags?post=385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}