This is very good question I think there are some things which require some clarification.
Q)What is the Slow start state Threshold value according to the question?
According to the question It is given to Assume no packet losses and no timeouts. Which implies the ssthreshold value did not ever change from the intial value. And what is that initial value?
The initial value of ssthresh SHOULD be set arbitrarily high (e.g.,
to the size of the largest possible advertised window), but ssthresh
MUST be reduced in response to congestion. Setting ssthresh as high
as possible allows the network conditions, rather than some arbitrary
host limit, to dictate the sending rate. In cases where the end
systems have a solid understanding of the network path, more
carefully setting the initial ssthresh value may have merit (e.g.,
such that the end host does not create congestion along the path).
Link for the above referrence can be found here https://www.rfc-editor.org/rfc/rfc5681#page-4
As they mentioned that there are no packet losses and timeouts that's basically saying that there is no congestion in the network which implies that sended now needs to maintain window size so as not to overwhelm reciver side window .Therefore sender window size<=reciever window size and sender window size's maximum value=reciver window from which we can say that reciever window size is given as 12000 bytes.
(I think directly saying that given value is the maximum window size of TCP connection so lets take it as reciever window size doesn't explain lot of things as to why we take it like that)*
Anyway moving on,
The ssthreshold value will be 12000bytes.
I mean even if you think logically when there is no network congestion the packet drops will happen when you send more packets than what reciever can handle so sender needs to start avoiding congestion(caused by packet drops at reciever buffer) by not rapidly increasing the window size more than threshold which is equal to reciever window size. And sender adjusts the threshold when it detects packet drops in future.
Q)TCP uses cummulative ACKs so should we treat the 2 ACKs given in question as cummulative ACKs or Selective ACKs?
In general when we think of TCP protocol we say that it uses cummulative ACKs but TCP protocol implementation with selective ACKs is also posssible
TCP Selective Acknowledgment Options
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
TCP may experience poor performance when multiple packets are lost
from one window of data. With the limited information available
from cumulative acknowledgments, a TCP sender can only learn about a
single lost packet per round trip time. An aggressive sender could
choose to retransmit packets early, but such retransmitted segments
may have already been successfully received.
A Selective Acknowledgment (SACK) mechanism, combined with a
selective repeat retransmission policy, can help to overcome these
limitations. The receiving TCP sends back SACK packets to the sender
informing the sender of data that has been received. The sender can
then retransmit only the missing data segments.
This memo proposes an implementation of SACK and discusses its
performance and related issues.
Link for above refference : https://www.rfc-editor.org/rfc/rfc2018.txt
so now lets see what kind of acks we are using in this question, The slow start phase always starts with sender side transmission window= 1MSS. I hope everybody agree with this statement. In the question it is given that,
At some point in time, the connection is in slow-start phase with a current transmit window of 4000 Bytes. which implies size=2MSS which suggest that RTT time is already over since the slow start phase began. that means sender recieved ACK for the segment it sent during the last RTT and current window size is 2MSS and the instance the question is in is 2nd RTT. They mentioned "Subsequently, the transmitter receives two acknowledgments" which implies that the transmitter recived 2 more ACKs after the window size become 2MSS/4000 bytes. In conclusion what they are saying is that in this protocol we are using Selective ACKs instead of Cummulative ACKs as we got 2 acks for 2 segments.
A lot of people in the solutions mentioned that in the slow start phase the sender window size increases exponentially with each ACK. This is the case only if the protocol is using cummulative ACKs.
Q) so now we get that it is selective Acks how do you get the answer?
For each ACK in slow start phase the sender window size is increased by 1MSS. Because for each RTT we are doubling the sender window size that is same for both type of ACKs in slow start phase. As the sender receives "window size" number of selective Acks increasing the size by 1 for each selective Ack is basically doubling it by the end of RTT.
So now with everything clear we can just proceed to the answer easily. SSTHRESHOLD value=12000 bytes.
Sender window size after recieving 1st ack=4000+2000=>6000 bytes
sender window size after reieving 2nd ack=6000+2000=>8000 bytes.
so the answer=8000 bytes.
Some more clarification:
First of all thanks for bearing with me till now, As given in the first referrence I have provided it is mentioned that ssthreshold should be set arbitarily high which can be taken as maximum reciever window size and it also makes sense to take it as intial value because sending more bytes than that is bound to cause packet dropping at reciver buffer.
So what if we take the ssthreshold value as reciever window size/2 it can also be said as arbitarily high value and then we get ssthreshold value as 6000 right so why can't we do that?
You can absolutely do that no doubt in that. But when u do that after recieving the first ACK the sender window size reaches 6000 bytes which is equal to ssthreshold. As soon as the sender window size hits ssthreshold value the sender window will start applying congestion avoidane logic which suggest that for each ACK it recieve it should increase the window size by $\frac{MSS}{cwnd }$ Therfore it increases the window size by 2000/3 = 667 bytes after second Ack
which gives us the transmitter window size=6667 bytes
As it is mentioned in the question,maximum possible value of the current transmit window will be 8000 bytes which is option B
(I am not an expert in the subject so if there are any misconceptions on my part pls do point them out with correct concepts in the comments). Thank you.