Wie wird einem Prozess in TCP eine IP-Adresse zugewiesen?

Wie wird einem Prozess in TCP eine IP-Adresse zugewiesen?

Wenn eine TCP-Verbindung zwischen zwei Sockets hergestellt wird, gehen wir davon aus, dass der Computer mehrere Netzwerkkarten hat. An welche IP-Adresse wird der Socket also gebunden [oder - welche IP-Adresse wird an die bind()-Funktion übergeben], bevor die Kommunikation hergestellt wird? Wird das vom Betriebssystem entschieden?

Grundsätzlich habe ich mehrere Zweifel:

  1. Wird die Funktion socket(), bind(), connect() vom Betriebssystem aufgerufen? Wenn ja, welche IP-Adresse wird in der Funktion bind() übergeben, falls sich mehrere Netzwerkkarten im Computer befinden? Ich weiß, dass ich an einigen Stellen falsch liegen könnte, bitte korrigieren Sie mich

Antwort1

Werden die Funktionen socket(), bind() und connect() vom Betriebssystem aufgerufen?

Sie heißen nichtvondas Betriebssystem – sie sindTeil vondas Betriebssystem, sodass sie vom Programm aufgerufen werden.

Wenn ja, welche IP-Adresse wird in der Funktion „bind()“ übergeben, falls der Computer mehrere Netzwerkkarten enthält?

Die meisten Programme geben keine Adresse an.

  • Wenn Programme bind() aufrufen, um einen lokalen Port für die Annahme eingehender Verbindungen auszuwählen, können sie die speziellen Werte [::](auch bekannt als IN6ADDR_ANY_INIT) und 0.0.0.0(auch bekannt als INADDR_ANY) verwenden, die angeben, dass sie Verbindungen zualleAdressen (aktuelle und zukünftige) auf allen lokalen Netzwerkkarten.

  • Beim Herstellen ausgehender Verbindungen rufen Programme normalerweise nicht bind() auf.überhaupt, wobei das Betriebssystem sowohl die lokale Adresse als auch den lokalen Port bestimmt.

    Jedes Betriebssystem hat eine leicht unterschiedliche Logik für die Auswahl der Quelladresse. (Beispielsweise wählt das Betriebssystem ab Windows 7/Srv2008 die numerisch niedrigste Adresse aus der ausgehenden Schnittstelle. Unter Linux können einzelne Routingtabelleneinträge eine „bevorzugte“ Quelladresse haben, die verwendet wird, wenn das Programm keine auswählt.)

Wenn ProgrammeTunGeben Sie eine lokale Adresse an. Oft wird sie vom Benutzer und nicht vom Programm ausgewählt. (Die meisten Dienste haben beispielsweise in ihrer Konfiguration eine Einstellung für „Abhöradresse“.)

verwandte Informationen