Master sends start, device address+rw bit, data.... slave keeps ACKing until wants no more data (Or invalid address etc).
Master should check the response, sending stop/restart on NACKs condition.
Master also can stop the transfer anytime by sending a stop or a restart, doesn't have to keep sending data until receiving a NACK.
A restart is just a sequence of stop+ start condition without previous stop.