Ich lerne über die Ping-Implementierung in C. Das Problem ist, dass ich eine rohe Sockets verwendet, um das Paket zu empfangen. Für alle Pakete haben wir einen Identifikationswert in ICMP header
.Warum empfängt Ping ein weiteres Ping-Befehlspaket?
Ich lief die ping
in mehreren Terminals.
Zum Beispiel lief ich drei ping google.com
in drei Terminals.
Zum ersten ping des Identifizierungswert 23456, der zweite Identifikationswertes Ping 34564 und der dritte ping Identifikationswert ist 98763.
Mein Problem ist der zweite Tisch haben zur Identifizierung mit 34564 Paket empfängt, aber er erhält den Identifikationswert als 23456.
Für jeden Ping wird der neue Raw-Socket erstellt. Aber es empfängt ein weiteres Ping-Paket.
Kann mir bitte jemand erklären, warum er ein weiteres Ping-Paket erhält?
UPDATE: -
Ich habe noch einen Zweifel. Der Zweifel ist,
rohe Sockets liest das Paket von wo und wie es das Paket für diesen rohen Sockel identifizieren?
UPDATE 1: -
Hier ist der Link für die Codes.
Obwohl ich versuchte, konnte ich nicht ein Problem in der ungebuchte Code erkennen Sie ausführen. – WhozCraig
Es ist im Antwortpaket geschehen. Mit Recvmsg empfing ich Paket. Nach dem recvmsg, bei dem ich die Pakete validierte, wird der Identifikationswert bei der Validierung geändert. –
@suresh: Danke für Infos. Jetzt zeigen Sie uns bitte einen Code .. – sjsam