2016-07-12 1 views
0

Ich habe diesen Code in GitHub gesehen. Ich verstehe nicht, warum packet.payload.proto == 17 ist UDP und packet.payload.proto == 6 TCP.Warum in scapy packet.payload.proto == 17 ist UDP und packet.payload.proto == 6 TCP?

Pakete = scapy.all.rdpcap ('data/dns.cap')

für Paket in Paketen: print ('----------') print ('src_mac : ‚. Format (packet.src)) Druck {0} ('dst_mac:. {0}' Format (packet.dst))

ip = packet.payload 
print('src_ip: {0}'.format(ip.src)) 
print('dst_ip: {0}'.format(ip.dst)) 

if ip.proto == 17: 
    udp = ip.payload 
    print('udp_sport: {0}'.format(udp.sport)) 
    print('udp_dport: {0}'.format(udp.dport)) 

if ip.proto == 6: 
    tcp = ip.payload 
    print('tcp_sport: {0}'.format(tcp.sport)) 
    print('tcp_dport: {0}'.format(tcp.dport)) 

print('----------\n') 

Antwort

3

Weil the IANA says so.

... 
6  TCP  Transmission Control  [RFC793] 
... 
17 UDP  User Datagram    [RFC768][Jon_Postel] 
... 
+0

Was ist packet.payload? –

+0

Anders als die Nutzlast des Pakets? –

+0

Ich verstehe nicht, was Nutzlast ist! Könnten Sie bitte erklären? –

2

Die Antwort von Ignacio vorgesehen ist richtig. Die RFCs und IANA bezeichnen diese Werte.

Was ist eine Payload, das ist relativ zu dem Paket (PDU genauer) Schicht, die Sie sprechen.

Nehmen Sie das folgende Beispiel:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
| IP   | TCP  | HTTP       | 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

HTTP die Nutzlast von TCP ist, und (TCP + HTTP) ist die Nutzlast des IP.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
| IP   | TCP  | Payload      | 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

und

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
| IP   | Payload          | 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

https://en.wikipedia.org/wiki/IPv4#Header Zeigt das Layout einer IP-Header. Protokoll ist eines dieser Felder. Wenn das Protokoll (ip.proto) 6 ist, ist die Nutzlast des IP-Verkehrs gemäß RFC TCP. Wenn es 17 ist, ist die Nutzlast UDP.

Einige Protokolle (wie IP) haben ein Feld, das angibt, welchen Typ ihre untergeordnete Nutzlast hat. Andere nicht.

+0

Danke für Ihre Kommentare! –