0
votes

Context - I am making a request from source(IP - x) to target (IP - y)

curl y

intercepting it in wireshark -

  1. x -> y [SYN] , sync request to target

  2. y -> x [SYN, ACK] , target acknowledges client's sync request and also makes a sync request to client, because it also needs to communicate to client

  3. x -> y [ACK] , client acknowledges target's sync request

  4. x -> y HTTP GET [PSH, ACK], client makes HTTP GET request (why send ACK?)

  5. y -> x [ACK] , target acknowledges client's request

  6. y -> x [PSH, ACK] , target pushes the content (and acknowldges previous ACK? which one?)

  7. y -> x HTTP 302 FOUND [FIN, ACK] , target send FIN to finalize and ACK

  8. x -> y [ACK] , client acknowledges target's FIN

  9. x -> y [ACK] , client acknowledges previous ACK? which one?

  10. x -> y [FIN, ACK] , client sends FIN to finalize communication with target and send additional ACK

  11. y -> x [ACK] , server acknowledges client's FIN

I have posted my question with each tcp request/response. Can someone please explain what those extra ACKs are for?

1
I'm not sure which "extra" ACKs you mean. But is normal that an ACK is sent with each payload packet even if the sequence number was already ACKed before. As for what is ACKed just have a look at the details to see the ACKed sequence number.Steffen Ullrich
okay, then 8 and 9 are acks for 6 and 7. right?RISHAV KUMAR
Probably but I cannot be sure since there are no sequence numbers shown.Steffen Ullrich
(2) is not correct. SYN-ACK is an acknowledgment of the client's SYN and establishes the server's initial sequence number.user207421

1 Answers

0
votes

As Steffen pointed out in comments, Even after handshake, It is recommended that ACK is sent with each packet from client/server.