2016-05-15 8 views
0

Ich habe gelernt, dass TCP Bestätigungen verwendet, um eine Datenübertragung zwischen der sendenden und der empfangenden Anwendung voranzutreiben.Wird die Uhr in TCP unterbrochen und bestätigt?

Daher funktionieren Bestätigungen als Taktunterbrechungen, um die sendende Anwendung zu benachrichtigen, weitere Pakete zu senden?

This is image

Antwort

1

TCP ACKs sind Netzwerkpakete wie jedes andere Paket. Was es zu einem ACK macht, ist ein bestimmtes Bit im TCP-Header. Dieses Bit hat nur eine Bedeutung für den Netzwerkprotokollstack im Kernel. Es bedeutet nichts für die NIC - weil die NIC TCP nicht versteht oder sich darum kümmert. Für das NIC ist es nur ein weiteres Paket, das es an das System senden muss. Dies wird über den normalen Mechanismus erreicht, den die NIC zum Bereitstellen von Paketen an das System verwendet.

Normalerweise funktioniert dies, indem das empfangene Paket in einen DMA-Ringpuffer gestellt wird und dann ein Interrupt signalisiert wird, um das System darüber zu benachrichtigen, dass es den Puffer entleeren sollte. Aber es gibt keine Anforderung, dass es auf diese Weise funktionieren muss und es hängt von der jeweiligen NIC und dem Host-System ab; Aber wenn Sie keine Kerneltreiber schreiben, müssen Sie sich keine Sorgen machen.

+0

Also sind Clock Interrupts, welche Trigger mehr Pakete aus dem Sender Socket-Puffer auf die NIC übertragen werden? Und Bestätigungen werden verwendet, um die Taktunterbrechungen auszulösen? – donkey

+0

Nein. Die Implementierung von TCP wird vollständig im Kernel abgewickelt. Wenn der TCP-Stack des Kernels auf einen ACK wartet und einer am NIC ankommt, sendet der NIC das Paket an den Kernel (ohne zu verstehen, was es ist, nur dass es ein Paket mit einigen Bits ist), wird der Kernel interpretiere dies als ACK, führe die erforderliche Buchhaltung aus und sende dann mehr Pakete zur Übertragung an die NIC zurück, wenn etwas im Schreibpuffer des Sockets des Kernels wartet und der TCP-Stack feststellt, dass dies angesichts des Status von die Verbindung. – TypeIA

+0

also, ACK und Clock Interrupts sind zwei verschiedene Dinge? – donkey

Verwandte Themen