1

Sender at TCP can not finish transmitting data without receiving ACK packets of transmitted packets.

But the situation I want to think is that server closes the connection so the state is 'half-open(client) connection' in this case, client can not get ack from server, and then how can client transmit the data? or what does client do?

  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can provide your own answer and accept it. – Ron Maupin Aug 7 '17 at 0:25
1

Client then does what it's instructed to do... normally there are limits in place to deal with so called "embryonic connection" as half open connection state is normally achieved when negotiating connection . Without limits and timeouts endpoint is exposed to SYN flood DoS attack. You could read on RFC 793 , page 33 , about " Half-Open Connections and Other Anomalies"

https://tools.ietf.org/html/rfc793

| improve this answer | |
1

There are basically two ways to close a TCP connection between host A and B:

  1. The proper way: A is sending a FIN, telling that it would not send new TCP segments anymore. It will continue sending ACKs though. The connection is half closed and can stay like this forever. When B has finished sending data, he can close his part of the connection with a FIN too. When he has received the last ACK, the connection will be totally closed.
  2. For various reasons A can send a RST packet, telling that this connection is not taken into account. When receiving the RST message, B will stop the connection quite immediately.

AFAIK, which host is the server or the client does not change the basics.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.