orm@doc-tcpip.org | Erstellt: Januar 2001 - Letzte Modifikation: Juli 2001 |
Dieser Trace ist mit IPTRACE version 2.0 formatiert. Diese Version "grokt" das Paket nicht richtig, weil der Programierer das nicht gemacht hat. Ab AIX 4.3.3 sollte Iptrace es richtig machen, bis dahin muss man selber ran. Das ist im ersten Paket gemacht, dann nur boch bei wichtigen Dingen.
Hier das erste Packet. Es ist ein Broadcast ins Netz, auf der Suche nach einem DHCP-Server, ein DHCPDISCOVER.
Packet Number 1 ETH: ====( 590 bytes received on interface en0 )==== 17:12:40.226196975 ETH: 00000000 ffffffff ffff0800 5a92e6ec 08004500 |........Z.....E.| . MAC Empfänger (das ist Broadcast: 255.255.255.255) . MAC Sender: 08:00:5a:92:e6:ec . Das Protokoll, was folgt: 0x0800 . also IP. Bis hier 14 Byte. . IP Version 4. . Länge des IP Headers in 32bit . Wörtern (5*32/8= 20 byte). . Type of Service (0) ETH: 00000010 0240dbe9 00001e11 bec40000 0000ffff |.@..............| . Länge des Paketes: 0x0240 => 576 Byte . Identifikation: 0xdbe9 . Keine Flags, Fragment Offset ist 0 . Time to Live: 30 (0x1E) . Protokoll Nummer: 17, UDP (0x11) . Checksumme (0xbec4) . Source IP (ist 0, ist ja DHCP!) . Destination IP ETH: 00000020 ffff0044 0043022c d4c10101 06007906 |...D.C.,......y.| . .... . Source Port 68 (0x44) . Destination Port 67 (0xr43) . Länge in Byte: 556 (0x22C) . Checksumme (0xd4c1) . Opcode 1 (Ein Request) (0x01) . HW Type 1 (Ethernet) (0x01) . Länge: 6 Byte (0x06) . Hops (0, also auf dem Segment) . Transaction ID (0x7906a91d) ETH: 00000030 a91d0006 00000000 00000000 00000000 |................| . .... . Sekunden seit Beginn der Transaction (0x6) . Client IP. Setzt der Client, wenn er die mal hatte. . Your IP. Setzt der Server. . Server IP. Setzt der Server. ETH: 00000040 00000000 00000800 5a92e6ec 00000000 |........Z.......| . Relay IP. Wenn das Paket über einen Relay lief. . Client HW Adresse. Es sind 16 Byte, daher die . 2 genullten Byte. . Optionaler Server Hostname . 64 Byte. (Wenn gesetzt) ETH: 00000050 00000000 00000000 00000000 00000000 |................| ETH: ******** . Boot File Name. 128 Byte. (Wenn gesetzt, sonst null) . Die ***** bedeuten, das IPtrace hier ein paar Nullen kürzt. ETH: 00000110 00000000 00006382 53633501 013d0d00 |......c.Sc5..=..| . Magic Cookie 0x63825363 . DHCP Message Type, Option 53 (0x35) . Länge 1 Byte (0x01) . Code 1 = DHCPDISCOVER (0x01) . Client Identifier, Opt. 61 (0x3d) . Länge, 13 Byte . Type: 0x0 wenn es kein HW . ist. Sonst wie bei ARP. ETH: 00000120 6e696d6d 61737465 725f656e 0c0c6e69 |nimmaster_en..ni| . Hier ist der Identifier der Name: . n i m m a s t e r _ e n n i ETH: 00000130 6d6d6173 7465725f 656e1301 00140100 |mmaster_en......| . m m a s t e r _ e n . IP Forw. Enable/Disable, Opt. 19 (0x13) . Länge 1 Byte . Disabled . Non-Local Source Routing, Opt. 20 . Länge 1 Byte . Disabled ETH: 00000140 1b01001d 01001e01 001f0100 22010024 |............"..$| . All Subnets are local, Opt. 27 (0x1B) . Länge 1 Byte . Disabled . Perform Mask Discovery, Opt. 29 (0x1D) . Länge 1 Byte . Disabled . Mask Supplier Option, Opt. 30 (0x1E) . Länge 1 Byte, Disabled Hier werden weiter Optionen vom Client angefragt(das ganze jetzt verkürzt): Perform Router Discovery, Opt. 31, 0x1F Trailer Encapsulation Option, Opt. 34, 0x22 Ethernet Encapsulaton Option, Opt. 36. 0x24 ETH: 00000150 01002701 00ff0000 00000000 00000000 |..'.............| . TCP Keepalive Garbage Option, Opt. 39, 0x27 . 0xFF ist 255, das Ende der Option List. . Der Rest ist Padding. ETH: 00000160 00000000 00000000 00000000 00000000 |................| ETH: ******** ETH: 00000240 00000000 00000000 00000000 0000 |.............. | ETH: [ 08:00:5a:92:e6:ec -> ff:ff:ff:ff:ff:ff ] type 800 (IP) IP: < SRC = 0.0.0.0 > IP: < DST = 255.255.255.255 > IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=576, ip_id=56297, ip_off=0 IP: ip_ttl=30, ip_sum=bec4, ip_p = 17 (UDP) UDP: < source port=68(bootpc), < destination port=67(bootps) > UDP: [ udp length = 556 | udp checksum = d4c1 ] UDP: 00000000 01010600 7906a91d 00060000 00000000 |....y...........| UDP: 00000010 00000000 00000000 00000000 08005a92 |..............Z.| UDP: 00000020 e6ec0000 00000000 00000000 00000000 |................| UDP: 00000030 00000000 00000000 00000000 00000000 |................| UDP: ******** UDP: 000000e0 00000000 00000000 00000000 63825363 |............c.Sc| UDP: 000000f0 3501013d 0d006e69 6d6d6173 7465725f |5..=..nimmaster_| UDP: 00000100 656e0c0c 6e696d6d 61737465 725f656e |en..nimmaster_en| UDP: 00000110 13010014 01001b01 001d0100 1e01001f |................| UDP: 00000120 01002201 00240100 270100ff 00000000 |.."..$..'.......| UDP: 00000130 00000000 00000000 00000000 00000000 |................| UDP: ******** UDP: 00000220 00000000 |.... |
Der gute IP-Trace printet hier nochmal den Hex Dump der UDP Payload,
das ist wahrscheinlich ein Bug. Das ist in den anderen Paketen
gekürzt.
Der Server hat seine Datenbank gecheckt und möchte dem Client diese
Adresse bieten. Er macht zuerst einen ARP auf die Adresse, um festzustellen,
ob sie wirklich frei ist (Sie könnte ja an seiner Datenbank vorbei belegt
worden sein).
Packet Number 2 ETH: ====( 60 bytes transmitted on interface en0 )==== 17:12:40.236641384 ETH: 00000000 ffffffff ffff0800 5af8b5b6 08060001 |........Z.......| ETH: 00000010 08000604 00010800 5af8b5b6 c0a88c03 |........Z.......| ETH: 00000020 00000000 0000c0a8 8c010000 00000000 |................| ETH: 00000030 00000000 00000000 00000000 |............ | ETH: [ 08:00:5a:f8:b5:b6 -> ff:ff:ff:ff:ff:ff ] type 806 (ARP) ARP: hardware address format = 1 (ethernet) ARP: protocol address format = 800 (IP) ARP: address lengths ; hardware = 6, protocol = 4 ARP: arp operation = 1 (request) ARP: source addresses: hw [08:00:5a:f8:b5:b6] ARP: protocol [192.168.140.3] ARP: target addresses: hw [00:00:00:00:00:00] ARP: protocol [192.168.140.1]
Hier kommt das DHCPOFFER. Der Server kann und darf dem Client eine Adresse anbieten.
Packet Number 3 ETH: ====( 342 bytes transmitted on interface en0 )==== 17:12:43.242104392 ETH: 00000000 08005a92 e6ec0800 5af8b5b6 08004500 |..Z.....Z.....E.| ETH: 00000010 01480aa9 00001e11 f7a6c0a8 8c03c0a8 |.H..............| ETH: 00000020 8c010043 00440134 ed340201 06007906 |...C.D.4.4....y.| ETH: 00000030 a91d0000 00000000 0000c0a8 8c010000 |................| ETH: 00000040 00000000 00000800 5a92e6ec 00000000 |........Z.......| ETH: 00000050 00000000 00000000 00000000 00000000 |................| ETH: ******** ETH: 00000110 00000000 00006382 53633501 023604c0 |......c.Sc5..6..| ETH: 00000120 a88c0301 04ffffff 000c0c6e 696d6d61 |...........nimma| ETH: 00000130 73746572 5f656e33 040003f4 80ff0000 |ster_en3........| ETH: 00000140 00000000 00000000 00000000 00000000 |................| ETH: 00000150 00000000 0000 |...... | ETH: [ 08:00:5a:f8:b5:b6 -> 08:00:5a:92:e6:ec ] type 800 (IP) IP: < SRC = 192.168.140.3 > IP: < DST = 192.168.140.1 > IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=328, ip_id=2729, ip_off=0 IP: ip_ttl=30, ip_sum=f7a6, ip_p = 17 (UDP) UDP: < source port=67(bootps), < destination port=68(bootpc) > UDP: [ udp length = 308 | udp checksum = ed34 ]
Der Client kann ein paar Angebote/Adressen abwarten, sich die Beste aussuchen, und dann diese "requesten". Das ist wieder ein Broadcast, damit eventuelle weitere Server, die beteiligt waren, ihre Bemühungen einstellen können.
Packet Number 4 ETH: ====( 590 bytes received on interface en0 )==== 17:12:44.397189937 ETH: 00000000 ffffffff ffff0800 5a92e6ec 08004500 |........Z.....E.| ETH: 00000010 0240dbea 00001e11 bec30000 0000ffff |.@..............| ETH: 00000020 ffff0044 0043022c c3820101 06003699 |...D.C.,......6.| ETH: 00000030 9bc80006 00000000 00000000 00000000 |................| ETH: 00000040 00000000 00000800 5a92e6ec 00000000 |........Z.......| ETH: 00000050 00000000 00000000 00000000 00000000 |................| ETH: ******** ETH: 00000110 00000000 00006382 53633501 033204c0 |......c.Sc5..2..| ETH: 00000120 a88c0136 04c0a88c 033d0d00 6e696d6d |...6.....=..nimm| ETH: 00000130 61737465 725f656e 0c0c6e69 6d6d6173 |aster_en..nimmas| ETH: 00000140 7465725f 656e1301 00140100 1b01001d |ter_en..........| ETH: 00000150 01001e01 001f0100 22010024 01002701 |........"..$..'.| ETH: 00000160 00ff0000 00000000 00000000 00000000 |................| ETH: 00000170 00000000 00000000 00000000 00000000 |................| ETH: ******** ETH: 00000240 00000000 00000000 00000000 0000 |.............. | ETH: [ 08:00:5a:92:e6:ec -> ff:ff:ff:ff:ff:ff ] type 800 (IP) IP: < SRC = 0.0.0.0 > IP: < DST = 255.255.255.255 > IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=576, ip_id=56298, ip_off=0 IP: ip_ttl=30, ip_sum=bec3, ip_p = 17 (UDP) UDP: < source port=68(bootpc), < destination port=67(bootps) > UDP: [ udp length = 556 | udp checksum = c382 ]
Der Server hat den Request gesehen, hat sein eigenes Angebot erkannt, prüft nochmal, ob es noch gilt, und versendet dann ein Acknowledgement.
Packet Number 5 ETH: ====( 342 bytes transmitted on interface en0 )==== 17:12:44.408482623 ETH: 00000000 08005a92 e6ec0800 5af8b5b6 08004500 |..Z.....Z.....E.| ETH: 00000010 01480abd 00001e11 f792c0a8 8c03c0a8 |.H..............| ETH: 00000020 8c010043 00440134 39f70201 06003699 |...C.D.49.....6.| ETH: 00000030 9bc80000 00000000 0000c0a8 8c010000 |................| ETH: 00000040 00000000 00000800 5a92e6ec 00000000 |........Z.......| ETH: 00000050 00000000 00000000 00000000 00000000 |................| ETH: ******** ETH: 00000110 00000000 00006382 53633501 053604c0 |......c.Sc5..6..| ETH: 00000120 a88c0301 04ffffff 000c0c6e 696d6d61 |...........nimma| ETH: 00000130 73746572 5f656e33 040003f4 80ff0000 |ster_en3........| ETH: 00000140 00000000 00000000 00000000 00000000 |................| ETH: 00000150 00000000 0000 |...... | ETH: [ 08:00:5a:f8:b5:b6 -> 08:00:5a:92:e6:ec ] type 800 (IP) IP: < SRC = 192.168.140.3 > IP: < DST = 192.168.140.1 > IP: ip_v=4, ip_hl=20, ip_tos=0, ip_len=328, ip_id=2749, ip_off=0 IP: ip_ttl=30, ip_sum=f792, ip_p = 17 (UDP) UDP: < source port=67(bootps), < destination port=68(bootpc) > UDP: [ udp length = 308 | udp checksum = 39f7 ]
Jetzt Konfiguriert der Client sein Interface mit der neuen Adresse. Es ist eine Maschine, auf der AIX 4.3.3 läuft. Daher macht sie ein "Gratuitous ARP", eine Anfrage nach der eigenen MAC. Damit können doppelte IP-Adressen erkannt werden und es wird die neue MAC im Netz bekannt.
Packet Number 6 ETH: ====( 60 bytes received on interface en0 )==== 17:12:44.648629709 ETH: 00000000 ffffffff ffff0800 5a92e6ec 08060001 |........Z.......| ETH: 00000010 08000604 00010800 5a92e6ec c0a88c01 |........Z.......| ETH: 00000020 00000000 0000c0a8 8c010000 00000000 |................| ETH: 00000030 00000000 00000000 00000000 |............ | ETH: [ 08:00:5a:92:e6:ec -> ff:ff:ff:ff:ff:ff ] type 806 (ARP) ARP: hardware address format = 1 (ethernet) ARP: protocol address format = 800 (IP) ARP: address lengths ; hardware = 6, protocol = 4 ARP: arp operation = 1 (request) ARP: source addresses: hw [08:00:5a:92:e6:ec] ARP: protocol [192.168.140.1] ARP: target addresses: hw [00:00:00:00:00:00] ARP: protocol [192.168.140.1]
Und nochmal..
Packet Number 7 ETH: ====( 60 bytes received on interface en0 )==== 17:12:44.721682620 ETH: 00000000 ffffffff ffff0800 5a92e6ec 08060001 |........Z.......| ETH: 00000010 08000604 00010800 5a92e6ec c0a88c01 |........Z.......| ETH: 00000020 00000000 0000c0a8 8c010000 00000000 |................| ETH: 00000030 00000000 00000000 00000000 |............ | ETH: [ 08:00:5a:92:e6:ec -> ff:ff:ff:ff:ff:ff ] type 806 (ARP) ARP: hardware address format = 1 (ethernet) ARP: protocol address format = 800 (IP) ARP: address lengths ; hardware = 6, protocol = 4 ARP: arp operation = 1 (request) ARP: source addresses: hw [08:00:5a:92:e6:ec] ARP: protocol [192.168.140.1] ARP: target addresses: hw [00:00:00:00:00:00] ARP: protocol [192.168.140.1]
Und das wars ....
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL